Activity and Artifact Views of A Secure Software Development Process
Activity and Artifact Views of A Secure Software Development Process
400
Phase
R1.Specification of functional requirements R2.Conducting inspections to identify software errors
Requirements If required
Engineering R9.Security assessment of the requirements specifications R3.Conducting threat modeling
R4.Risk analysis on threats
If the security index If the security index is less than the threshold
R5.Specification of high-level security requirements
is greater than or R6.Selection and specification of security mechanims
equal to the threshold R10.Specification of low-level security requirements R7.Propritization of security requirements
R11.Prioritization and inclusion of low-level security requirements R8.Conducting inspections from a security perspective
Secure Software Development Model (SSDM) [12] 4.1. Requirements engineering phase
focuses mainly on the requirements engineering phase.
It does not propose any design or implementation It has been estimated that an error introduced in the
phase activity. The only activity for assurance is requirements engineering phase, if not removed
penetration testing. SSDM is similar to our process immediately, can cost up to 200 times more to correct
only with respect to modeling during the requirements in later stages of development [15]. It can be assumed
engineering phase. that correcting a software security error will be equally
Secure Software Development Process Model expensive. Hence, this phase must receive special
(S2D-ProM) [13] is a strategy-based SSDP. For attention and have the following activities to derive
advancing from one development phase to the next, complete functional and security requirements.
S2D-ProM proposes multiple alternate strategies. R1. The behavior and deployment environment of
These strategies are very high-level, e.g., use of the software should be specified using use cases along
personal experience. with detailed functional requirements (diagrams/text).
None of the existing SSDPs presents an artifact R2. The requirements specifications ought to be
view. A comparative study of many existing SSDPs is inspected (multiple times, if required) for identifying
presented in [14]. and removing software errors.
R3. Abuse cases should be specified. Information
4. Activity view of the SSDP about software assets, attackers, attackers’ interests,
attackers’ resources, attack surfaces, and threats to
The SSDP addresses requirements engineering, existing software of the same domain must be
design, implementation, and assurance phases. This collected. A threat model can be developed in light of
process can be used as a sequential (waterfall) or an the aforementioned information.
iterative (spiral) process for development. Moreover, it R4. Risk analysis should be performed on the
contains both functional and secure software identified threats to calculate the collective potential
development activities (e.g., specification of use cases damage that each of them can cause to different assets
vs. specification of abuse cases). The activity view [4]. This information can be used to prioritize threats.
presents the development activities for each of the R5. High-level security requirements such as
phases and the sequences in which they should be preservation of confidentiality, integrity, and
performed (Fig. 1). In the following subsections, we availability should be specified to mitigate identified
elaborate on these activities. threats. Specification languages that can represent
401
security requirements (e.g., UMLsec [1]) may be used D4. Risk analysis should be performed on the
to specify these security requirements. identified threats to calculate the potential damage that
R6. It may be possible that more than one security each of the threats can cause.
mechanisms is able to fulfill a security requirement. D5. Security requirements (secure design
Moreover, different security mechanisms can offer decisions) must be identified for threats that violate
varying levels of assurances. The implementation and any of the high-level security requirements. There
social cost (e.g., usability) of a security mechanism could be multiple design decisions to mitigate any
might also be different. An appropriate security threat (similar to Step R5). Moreover, further security
mechanism should be selected by considering the mechanisms could also be incorporated.
above mentioned issues. Detailed functional D6. Secure design decisions to remove threats can
requirements (e.g., strength of the password) must also be prioritized based on a cost/benefit analysis.
be specified. The selection procedure should involve D7. Software security errors and previously
all stakeholders. specified secure design decisions should be identified
R7. High-level security requirements can be through inspections. Security errors or vulnerabilities
prioritized by performing a cost benefit analysis. reported in the existing similar software can be used as
Security mechanism with higher priority should be a checklist.
implemented first if there are budgetary constraints. D8. A threshold of acceptable security needs to be
R8. Software security errors and already specified defined using, e.g., security index [4]. Security index
low-level security requirements may be identified of the design must be within the threshold.
through inspections. Security errors or vulnerabilities D9. If the calculated security index is less than the
reported in existing similar software can be used as a threshold, then secure design decisions to remove the
checklist for inspections. errors should be specified.
R9. A threshold of acceptable security can be D10. The newly specified secure design decisions
defined by using, e.g., security index [4] which can be prioritized based on cost benefit analysis. High
provides a measure of the current security state of an priority design decisions should be included.
SDLC artifact. Security index of the requirements
specification should be within the threshold. If a weak 4.3. Implementation phase
security mechanism is selected to mitigate a threat,
then its weakness may be treated as a vulnerability Design is translated into code during
while calculating the security index. implementation. Following are the activities that need
R10. If the calculated security index is less than the to be performed during implementation to achieve
threshold, then security requirements to remove the secure code.
identified errors should be specified. I1. Higher-level programming languages offer
R11. The newly specified security requirements can fewer prospects of insecure code being written.
be prioritized based on cost benefit analysis. High However, sometimes it is necessary to use a low-level
priority security requirements should be included. language to gain direct access to the hardware level. A
language must be selected that is as high-level as
4.2. Design phase possible while keeping in view the programming
requirements of the software under development.
Design is the representation of decisions taken to I2. Secure coding standards and guidelines
fulfill requirements. Design specifies two aspects of should be followed to avoid source code errors.
the software: static structure and dynamic behavior. I3. Unit testing needs to be performed with
The design phase in the SSDP has the following steps. security concerns in mind. Security errors reported in
D1. Detailed functional design (including design similar software should be used as a reference.
of security mechanisms) should be specified in a
secure manner by following secure design patterns and 4.4. Assurance phase
secure design guidelines. A secure design language
such as UMLsec may be used. During the assurance phase, the software is checked
D2. The design must be inspected (multiple times, to find if it meets the requirements. Following activities
if required) for identifying/nd removing software should be performed during this phase.
errors. A1. Code must be inspected (based on the
D3. The threat model developed during the checklists of the previously reported errors) to identify
requirements engineering phase should be enhanced. software and security errors. Moreover, static analysis
tools should be used to find errors. The discovered err-
402
Requirements Engineering Table 1. Artifact view of SSDP: activity-artifact
Information about assets and attackers relationship
Activities Input Artifacts Output Artifact
R1 None Functional requirements.
Threat model R2 Functional requirements. Functional requirements.
Functional requirements
R3 Information about assets and attackers. Threat model.
R4 Threat model. Threat model.
High-level security requirements
R5 Threat model. High-level security
requirements.
Security mechanisms to be included R6 High-level security requirements. Security mechanisms to
be included. Functional
requirements with
Functional requirements with specifications of security
specifications of security mechanisms Security errors mechanisms.
R7 High-level security requirements. High-level security
requirements.
Final requirements Low-level security R8 Functional requirements with Security errors.
requirements specification of security mechanisms.
Design Checklist of existing security errors.
R9 Functional requirements with Security index.
Functional design Enhanced threat model
specification of security mechanisms.
R10 Security errors. Low-level security
Functional design with secure design Secure design decisions requirements.
decisions R11 Functional requirements with Final requirements.
Security errors specification of security mechanisms.
Low-level security requirements.
Final design Low-level security D1 Final requirements. Functional design.
requirements D2 Functional design. Functional design.
Implementation D3 Functional design. Enhanced threat model.
Threat model.
Code D4 Enhanced threat model. Enhanced threat model.
Assurance D5 Enhanced threat model. Secure design decisions.
Test cases and checklists for D6 Secure design decisions. Secure design decisions.
Final code inspections and static code D7 Functional design with secure design Security errors.
analysis decisions.
Figure 2. Artifact view of SSDP: artifact-artifact D8 Functional design with secure design Security index.
decisions.
relationship D9 Security errors. Low-level security
requirements.
ors must be removed through rework. D10 Functional design with secure design Final design
A2. Test cases should be developed based on decisions. Low-level security
requirements.
functional and security requirements. I1 None None
A3. Integration and acceptance testing needs to be I2 None Code
performed based on the security requirements. I3 Code Code
Penetration testing should be performed based on the A1 Code. Checklists for inspections and Code
static code analysis.
known vulnerabilities and the potential attacks that the A2 Final requirements. Final design. Low- Test cases.
software may encounter. Any security errors found level security requirements.
must be removed. A3 Code. Test cases. Final code.
5. Artifact view of the SSDP re used to develop the Threat model. High-level
security requirements and Security mechanisms to
The information in the current artifacts are used to fulfill them are specified. The specifications of security
develop further artifacts. Moreover, each development mechanisms are incorporated in the functional
activity in the SSDP either results in a new artifact or requirements. The resulting artifact, Functional
enhances an already existing one. This artifact requirements with specifications of security
evolution can be represented using artifact-artifact and mechanisms, is inspected and Security errors are
activity-artifact relationships, respectively. This identified. Security errors are used to specify Low-level
evolution needs to be explicitly defined to guide security requirements. Functional requirements with
software developers. For the artifact-artifact specifications of security mechanisms are enhanced
relationship, we use “ Æ ” to represent that the target with Low-level security requirements to develop Final
artifact is produced by taking the source artifact(s) as requirements. Functional design is developed based on
input(s). Figure 2 presents these relationships. Final requirements. Threat model is enhanced based
Initially, Information about assets and attackers and on functional design. Secure design decisions, that can
Functional requirements are produced which in turn a- mitigate the threats in the Enhanced threat model, are
incorporated in the Functional design. Security errors
403
are identified by inspecting the Functional design with Acknowledgement
secure design decisions. Low-level security This research is partially funded by the Natural
requirements to remove these errors are developed. Sciences and Engineering Research Council of Canada
These low-level security requirements (including (NSERC).
already existing ones) are integrated in Functional
design to develop Final design. Final design is used to References
develop the code of the software, while Final
requirements, Final design, and Low-level security [1] J. Juerjens, Secure Systems Development with UML,
requirements identified during the requirements Springer, 2005.
engineering and design phases are used to generate [2] C.E. Landwehr, A.R. Bull, J.P. McDermott, and W.S.
security test cases and checklists for inspections and Choi, “Taxonomy of Computer Program Security Flaws,”
ACM Computing Surveys, 1994, vol. 16, no. 3, pp. 211-254.
static code analysis. The tested code, after rework,
[3] I.V. Krsul, “Software Vulnerability Analysis,”
results in Final code. Doctoral dissertation, Department of Computer Sciences,
We show the activity-artifact relationships with the Purdue University, Indiana, USA, 1998.
help of Table 1. The first column lists the activities in [4] M.U.A. Khan and M. Zulkernine, “Quantifying
the SSDP. The second and third columns identify the Security in Secure Software Development Phases,” In Proc.
corresponding input and output artifacts, respectively. of the 2nd IEEE International Workshop on Secure Software
Engineering (IWSSE’08), Turku, Finland, 2008, IEEE CS
Press, pp. 955-960, 2008.
6. Summary and conclusions [5] A. Jaquith, Security Metrics, Addison Wesley, 2007.
[6] D. Verdon and G. McGraw, “Risk Analysis in
A secure software development process is required Software Design,” IEEE Security and Privacy, IEEE CS
Press, 2004, vol. 2, no. 4, pp. 79-84.
to incorporate security throughout software
[7] R. Kissel, “Glossary of Key Information Security
development. We have proposed such a process in this Terms,” National Institute of Standards and Technology,
paper. Our SSDP has two views: (1) activity view NISTIR-7298, 2006.
which presents the development activities and their [8] G. McGraw, Software Security: Building Security In,
sequence of execution and (2) artifact view that Addison Wesley, 2006.
illustrates the artifact-artifact and activity-artifact [9] S. Lipner, “The Trustworthy Computing Security
relationships. Both views are important to provide the Development Lifecycle,” In Proc. of the 20th Annual
Computer Security Applications Conference (ACSAC ‘04),
developers with clear guidance. CA, USA, 2004, IEEE CS Press, pp. 2-13.
The SSDP places emphasis on requirements and [10] OWASP CLASP Project, http://www.owasp.org/index.
design phases. We propose that a threat model is built php/Category:OWASP_CLASP_Project. Visited May 2009.
during the requirements phase and enhanced during the [11] I. Flechais, C. Mascolo, and M.A. Sasse, “Integrating
design phase. Similarly, risk and cost benefit analysis Security and Usability into the Requirements and Design
should also be performed in both phases. We have Process,” International Journal of Electronic Security and
Digital Forensics, Inderscience Publishers, Geneva,
identified inspection as an important error discovering Switzerland, 2007, vol. 1, no. 1, pp. 12-26.
activity which must be part of requirements, design, [12] A.S. Sodiya, S.A. Onashoga, and O.B. Ajayi, “Towards
and assurance phases. During the implementation Building Secure Software Systems,” Issues in Informing
phase, the selection of an appropriate (secure) Science and Information Technology, Informing Science
programming language is important. Following secure Institute, California, USA, 2006, vol. 3, pp. 635-646.
coding standards and guidelines is also necessary to [13] M. Essafi, L. Labed, and H.B. Ghezala, “S2D-ProM: A
Strategy Oriented Process Model for Secure Software
avoid any previously reported security errors. During Development,” In Proc. of the 2nd International Conference
the assurance phase, we suggest that inspections and on Software Engineering Advances (ICSEA’07), Cap Esterel,
static code analysis should be performed before testing. French Riviera, France, 2007, p. 24.
As the security requirements (and secure design [14] M.U.A. Khan and M. Zulkernine, “On Selecting
decisions) have been finalized after cost/benefit Appropriate Development Processes and Requirement
Engineering Methods for Secure Software,” In Proc. of the
analysis during the requirements engineering and 4th IEEE International Workshop on Security, Trust, and
design phases, we propose that all the identified Privacy for Software Applications (STPSA 2009), Seattle,
security errors that violate these requirements must be WA, USA, IEEE CS Press, 2009, to appear.
removed. Integration and acceptance testing should be [15] B.W. Boehm and P.N. Papaccio, "Understanding and
Controlling Software Costs," IEEE Transactions on Software
performed while keeping security in mind. Finally, Engineering, 1988, vol. 14, no. 10, pp. 1462-1477.
penetration testing ought to be carried out based on
potential attacks that the software may encounter when
deployed.
404