Development/Acquisition Phase
Description
Key security activities for this phase include:
- Conduct the risk assessment and use the results to supplement the baseline security controls;
- Analyze security requirements;
- Perform functional and security testing;
- Prepare initial documents for system certification and accreditation; and
- Design security architecture.
Although this section presents the information security components in a sequential top-down manner, the order of completion is not necessarily fixed. Security analysis of complex systems will need to be iterated until consistency and completeness is achieved.
Control Gates
- An Architecture/Design Review that evaluates the planned system design and potential integration with other systems as well as incorporation of shared services and common security controls, such as authentication, disaster recovery, intrusion detection, or incident reporting.
- A system Performance Review that evaluates whether the system is delivering, or capable of delivering, to the documented expectation of the owner and whether the system behaves in a predictable manner if it is subjected to improper use. (For example, the ability of the system to maintain availability and data integrity at the expected extreme resource loads.)
- A system Functional Review that ensures functional requirements identified are sufficiently detailed and are testable.
- Mid-Project Status & Financial Review is important to detect major shifts in planned level of effort to ensure cost-benefit ratios are monitored and effective decisions are continued.
- A follow-on review of risk management decisions may be needed if, due to the aforementioned reviews, the system and/or its security controls and/or its requirements change.
Major Security Activities
Assess Risk to System
Implementer’s Tips
- Within any organization, the threat from internal sources remains the highest probability of occurrence. Improprieties by employees [system developers] who are also privileged system users are a real threat, especially since such employees may have active accounts within the system. Practices should include independent audits of the system and its supporting processes. Continuously monitoring internal sources and using integrity-based tools to ensure configuration audit and control may be of use by providing an automated central audit log collection, correlation, and analysis tool.
- It is a good idea to monitor the National Vulnerability Database (http://nvd.nist.gov) for known component vulnerabilities and build in controls to mitigate them. These would then need to be tested.
- When dealing with a system having multiple owners (sometimes across different domains), it is important to identify and address shared and inherited risks.
- Depending on the rigor needed and the complexity of the system, it may be important to follow the data flow/information sharing beyond the first interface. Failure to do so may result in inheriting unknown risks.
- Other inherited risks may be evaluated through the supply of materials for the system. Supply chain risk should be understood and evaluated to mitigate potential use of fraudulent, pirated, unlicensed or intentionally compromised material.
Select and Document Security Controls
Implementer’s Tips
- Addressing security requirements in a matrix format allows the developers and security engineers to review implementation per major system component and can facilitate gap analysis, ensuring proper risk analysis and control implementation.
- Information security requirements should be stated in specific terms. For complex systems, iterations of the requirements analysis may be needed. If so, planned reviews should occur at major SDLC milestones.
- Any new functional requirement may have security implications. Introducing additional risk or weakening existing security controls is more likely if a specific security analysis is not performed for each added functional requirement. Then it is possible for undocumented risk to enter the system.
- More detailed “attack prevention” requirements will also help to ensure that security controls and methods are tested prior to release. If a documented requirement exists, then it is assumed that a test case will need to be developed and executed.
- Security controls are not one-dimensional and should be addressed as appropriately on multiple components throughout the system. For example, if your system is composed of SQL servers, Web Sphere, and a mainframe, then assessments may need to be planned for all, some, or none, depending on the system. Documenting this during this stage decreases the level of effort during testing.
- Agencies should initiate disposition planning during this phase and plan for disposal/transition throughout all phases of the life cycle. This activity is best done as part of the requirements phase so full resource requirements for disposal are understood and planned for. Disposition procedures can provide value throughout the life cycle, as hardware and software becomes obsolete or damaged in other phases.
Design Security Architecture
Implementer’s Tips
- Security architecting can provide effective compensating controls when there are issues with implementing minimal security requirements with the system’s design specification. Security architectures will also identify common controls that the system will inherit as well as who has responsibility for those common controls.
- Demonstrating the logic behind the security of this system will help in determining the need for additional controls.
- Risks accepted by the system that may have downstream, adverse affects on the enterprise can be identified and raised as issues during the architectural review. Enterprise risk culminating from all individual system risk should be expressed and tracked through the agency Enterprise Architecture process.
Engineer in Security and Develop Controls
Implementer’s Tips
Documenting security deviations from initial security requirements at this stage will encourage solid risk planning and reduce time later in backtracking business justifications. In addition, it demonstrates evidence of risk planning.
Develop Security Documentation
Implementer’s Tips
- Security operations should not be driven by documentation of compliance but based on system need and described in compliance with security guidance.
- For major systems that are large in size, complex in design, or politically sensitive, it is best to assign a point of contact POC) to each document and initiate development with a meeting on the document’s scope, expectations, and level of granularity.
Conduct Testing (Developmental, Functional, and Security)
Implementer’s Tips
- In an effort to reduce redundant functional and security testing activities, it is recommended that functional test plans include general security features testing (to the greatest extent possible).
- Preliminary testing of basic security controls during functional testing may reduce or eliminate issues earlier in the development cycle (e.g., mandatory access controls, secure code development, and firewalls). Preliminary testing is considered development-level testing, not certification and accreditation (C&A) testing but if no changes occur, reuse test results to the maximum extent possible in the C&A.
- For systems of high visibility and sensitivity, independent development testing may be recommended.
- Preliminary testing enables cost and schedule risk mitigation.
- Preliminary testing may be done at component or security zone level to ensure that each component or security zone is secure as an entity.
- Capture the process and results of all security testing that occurs throughout the life cycle for evaluation, issue identification, and potential reuse.
- Source code should be periodically reviewed using automated tools or manual spot check for common programming errors that have a detrimental impact on system security including: cross-site scripting vulnerabilities, buffer overflows, race conditions, object model violations, poor user input validation, poor error handling, exposed security parameters, passwords in the clear, and violations of stated security policy, models, or architecture as part of the software development QA process.
