+CON.8 Software Development
---+CON.8.G1. Selection of an Unsuitable Process Model
---+CON.8.G2. Selection of an Unsuitable Development Environment
---+CON.8.G3. Inadequate Quality Assurance in the Development Process
---+CON.8.G4. Inadequate Documentation
---+CON.8.G5. Inadequately Secured Use of Development Environments
---+CON.8.G6. Software Design Errors
---+CON.8.G7. Inadequate Testing and Approval Procedures
---+CON.8.G8. Software Testing with Production Data
---+CON.8.A2 Selection of a Process Model (B)
---+CON.8.A3 Selection of a Development Environment (B)
---+CON.8.A5 Secure System Design (B)
---+CON.8.A6 Use of External Libraries from Trusted Sources (B)
---+CON.8.A7 Conducting Software Tests During Development [Tester, Developer] (B)
---+CON.8.A8 Provision of Patches, Updates, and Changes [Developer] (B)
---+CON.8.A10 Source Code Version Management [Developer] (B)
---+CON.8.A20 Checking External Components (B)
---+CON.8.A1 Definition of Roles and Responsibilities [Central Administration] (S)
---+CON.8.A11 Drawing Up a Policy for Software Development (S)
---+CON.8.A12 Detailed Documentation (S)
---+CON.8.A14 Training Development Teams on Information Security (S)
---+CON.8.A16 Appropriate Control of Software Development (S)
---+CON.8.A21 Threat Modelling (S)
---+CON.8.A22 Secure Software Design (S)
---+CON.8.A17 Selection of Trusted Development Tools (H)
---+CON.8.A18 Periodic Security Audits of the Development Environment (H)
---+CON.8.A19 Regular Integrity Audits of the Development Environment [IT Operation Department] (H)
|
CON.8 Software Development
IntroductionMany organisations face challenges they cannot adequately solve with ready-to-use software products. They need software solutions that are adapted to their individual requirements. Examples include highly specific software solutions for industry specialists (such as for controlling production plants) or IT applications that are adapted to an organisation's business processes (such as content management or identity management systems). That said, legacy systems that are no longer maintained by the original manufacturer can also be custom-developed for such purposes. This individual software can be developed by an organisation itself or a third party. Software development plays a central role in this process when program code is developed or adapted to meet an organisation's requirements. It is essential that information security be taken into account throughout the software development process and not just at a later stage. This is the only way to guarantee the long-term information security of the resulting software solutions. Software can be developed within the framework of traditional, self-contained projects or as a continuous activity without a fixed end point. In both cases, project management tools are often used in practice to coordinate and control software development. For this reason, the term "project" is used more frequently in this module and no distinction is made between project-based and continuous development, as the associated procedures and tools are similar. ObjectiveThis module deals with all the relevant security aspects that organisations must consider when developing software. It covers how an organisation can prepare and execute software development while identifying corresponding hazards and formulating requirements. Scoping and ModellingModule CON.8 Software Development must be applied once to each development project in the information domain at hand. Software is often developed in a client-contractor relationship. This is reflected in two modules of IT-Grundschutz: APP.7 Development of Individual Software, which deals with the client side, and CON.8 Software Development, which covers the contractor side. The present module therefore covers the requirements to be met by contractors. The requirements relevant to software development (functional and non-functional requirements, including for secure procedures and security profiles) are dealt with from the client perspective within the framework of module APP.7 Development of Individual Software. The present module does not provide complete instructions or general procedures for software development; instead, it focuses on the relevant aspects of information security in connection with software development. The module also does not cover aspects of patch and change management. For these subjects, please refer to module OPS.1.1.3 Patch and Change Management. The acceptance of software that is commissioned or developed in-house, as well as the tests associated with this process, are covered in module OPS.1.1.6 Software Tests and Approvals. Further aspects of testing in the context of software development are dealt with in this module, CON.8 Software Development. ORP.5 Compliance Management must also be considered, as it describes how legal and organisation-internal requirements (and those pertaining to the customer) should be taken into account. If a software development process includes cryptographic aspects, the relevant requirements from module CON.1 Crypto Concept must be considered. Useful ResourcesThe International Organization for Standardization (ISO) sets requirements for software development in the following standards, among others: - ISO/IEC 27001:2013, appendix A.14.2, “Security in Development and Support Processes”
- ISO/IEC 25000:2014, “Systems and Software Quality Requirements and Evaluation – Guide to SQuaRE” (a general overview of the SQuaRE series of standards)
- ISO/IEC 25001:2014, “Planning and Management”
- ISO/IEC 25010:2011 "System and Software Quality Models" (requirements and guidelines)
The Information Security Forum (ISF) sets out requirements for secure software development in "The Standard of Good Practice for Information Security" (section "SD System Development"). The National Institute of Standards and Technology provides requirements for secure system design in Special Publication 800-160, "Systems Security Engineering, Considerations for a Multidisciplinary Approach in the Engineering of Trustworthy Secure Systems". The Special Interest Group "Process Models for Operational Application Development” of the German Informatics Society provides an overview of current information on application development in its publications. Further information on threat modelling can be found in the scientific article "Threat Modelling in Software Development". This article was published for the conference “Sicherheit 2010: Sicherheit, Schutz und Zuverlässigkeit” [Security 2010: Safety, Security, and Reliability] of the German Informatics Society.
1. Přehled
| Název |
Standard |
|
CON.8.A2 Selection of a Process Model (B)
|
A suitable process model MUST be defined for software development. Based on the process model selected, a flow chart for software development MUST be created. In cases involving commissioned development, the client's security requirements for the process MUST be integrated into the process model. The selected process model, including the specified security requirements, MUST be followed. Staff SHOULD be trained in the methodology of the selected process model.
|
|
CON.8.A3 Selection of a Development Environment (B)
|
A list of required and optional selection criteria for a development environment MUST be provided by the Process Owner for software development. The development environment MUST be selected based on the criteria specified.
|
|
CON.8.A5 Secure System Design (B)
|
The following basic rules of secure system design MUST be considered in the software to be developed: - All input data MUST be checked and validated before further processing takes place.
- For client-server applications, the data MUST be validated on the server side.
- The software's default settings MUST be set to facilitate secure operation.
- In the event of errors in or failures of system components, sensitive information MUST NOT be disclosed.
- It MUST be possible to run the software with as few privileges as possible.
- Sensitive data MUST be transmitted and stored in encrypted form according to the specifications of the crypto concept at hand.
- Trusted mechanisms that meet the security requirements of the application in question MUST be used for user authentication and access.
- If passwords are stored for authentication, they MUST be stored using a secure hash procedure.
- Security-relevant events MUST be logged in such a way that they can be evaluated afterwards.
- Information that is not relevant for productive operation (e.g. comments with access data for the development environment) SHOULD be removed in delivered program code and configuration files.
The system design MUST be documented. It MUST be verified that the system design meets all the relevant security requirements.
|
|
CON.8.A6 Use of External Libraries from Trusted Sources (B)
|
If external libraries are used as part of the development and implementation process, they MUST be obtained from trusted sources. Before external libraries are used, their integrity MUST be ensured.
|
|
CON.8.A7 Conducting Software Tests During Development [Tester, Developer] (B)
|
Even before software is tested and approved in a corresponding process, software tests MUST be performed and the source code checked for errors during development. The Process Owner of the client or department that has commissioned the development SHOULD be involved. The tests carried out during development MUST cover the functional and non-functional requirements of the software. The software tests MUST include negative tests, as well. In addition, all critical limits on input and data types MUST be checked. Test data SHOULD be carefully selected and protected for this purpose. Furthermore, automatic static-code analysis SHOULD be performed. The software MUST be tested in a test and development environment that is separate from the production environment. Furthermore, tests MUST be carried out to determine whether the system requirements are sufficiently sized for the intended software.
|
|
CON.8.A8 Provision of Patches, Updates, and Changes [Developer] (B)
|
It MUST be ensured that security-critical patches and updates for developed software are provided in a timely manner by the Developers. If security-critical updates are released for external libraries in use, the Developers MUST adapt their software accordingly and provide corresponding patches and updates. The Developers MUST provide checksums or digital signatures for installation, update, and patch files.
|
|
CON.8.A10 Source Code Version Management [Developer] (B)
|
Development project source code MUST be managed by an appropriate version management system. An organisation MUST regulate access to its version management system and define when changes made to source code by Developers are to be stored as a separate version in the system. It MUST be ensured that all changes to source code can be tracked and reversed by means of the version management system. Version management MUST be included in the organisation's backup concept. Version management MUST NOT take place without data backups.
|
|
CON.8.A20 Checking External Components (B)
|
Unknown external components (or program libraries) whose security cannot be ensured by established and recognised peer reviews or comparable means MUST be checked for vulnerabilities. All external components MUST be checked for potential conflicts. The integrity of external components MUST be verified by checksums or cryptographic certificates. Furthermore, obsolete versions of external components SHOULD NOT be used in current development projects.
|
|
CON.8.A1 Definition of Roles and Responsibilities [Central Administration] (S)
|
One person SHOULD be assigned responsibility for the software development process. In addition, the roles and responsibilities for all software development activities SHOULD be defined. The roles SHOULD cover the following topics: - Compliance management and change management
- Software design and architecture
- Information security in software development
- Software implementation in the areas relevant to the development project at hand
- Software testing
One person SHOULD be assigned responsibility for information security for each development project.
|
|
CON.8.A11 Drawing Up a Policy for Software Development (S)
|
A software development policy SHOULD be created and kept up to date. In addition to naming conventions, the policy SHOULD contain specifications for elements that may or may not be used. The relevant requirements from this module SHOULD be included in the policy. The policy SHOULD be binding for Developers.
|
|
CON.8.A12 Detailed Documentation (S)
|
Sufficient project, function, and interface documentation SHOULD be created and kept up to date. Operational documentation SHOULD include specific security instructions for administrators on the installation, configuration, and use of the product in question. Software development SHOULD be documented in a manner that will enable a technical expert to understand and develop the corresponding program code further. The documentation SHOULD also include the software architecture and threat modelling. Aspects related to documentation SHOULD be considered in the process models used for software development.
|
|
CON.8.A14 Training Development Teams on Information Security (S)
|
Developers and other members of a development team SHOULD be trained on general information security aspects and the aspects specifically relevant to them, including: - Requirements analysis
- Project management in general, as well as with regard to software development in particular
- Risk management and threat modelling in software development
- Quality management and quality assurance
- Models and methods of software development
- Software architecture
- Software testing
- Change management
- Information security, the security policies of the organisation in question, and security aspects in special areas
|
|
CON.8.A16 Appropriate Control of Software Development (S)
|
Software development SHOULD follow a suitable control or project management model based on the selected process model. The control or project management model SHOULD be integrated into the software development policy in question. In this regard, the required personnel qualifications and the coverage of all relevant phases during the lifecycle of the software SHOULD be considered in particular. A suitable system of risk management SHOULD be established for the process model. Appropriate quality objectives SHOULD also be defined for each development project.
|
|
CON.8.A21 Threat Modelling (S)
|
Threat modelling SHOULD be undertaken during the design phase of software development. For this purpose, potential threats SHOULD be identified on the basis of the relevant security profile, the catalogue of requirements, and the planned operational environment or operational scenario. The threats SHOULD be assessed in terms of their probability and impact.
|
|
CON.8.A22 Secure Software Design (S)
|
Software design SHOULD take into account the applicable requirements catalogue, the security profile, and the results of threat modelling. As part of secure software design, a secure software architecture SHOULD be assembled as the basis for developing the source code of the application in question. Future standards and attack techniques SHOULD be taken into account as far as possible so that the software to be developed can also be easily maintained in the future.
|
|
CON.8.A17 Selection of Trusted Development Tools (H)
|
Only tools with proven security properties SHOULD be used to develop software. Sufficient requirements SHOULD be imposed on hardware or software manufacturers with regard to the security of their tools.
|
|
CON.8.A18 Periodic Security Audits of the Development Environment (H)
|
Regular security audits SHOULD be performed on environments used for software development and testing.
|
|
CON.8.A19 Regular Integrity Audits of the Development Environment [IT Operation Department] (H)
|
The integrity of a development environment SHOULD be checked regularly with cryptographic mechanisms in line with the current state of the art. The deployed test program itself and its checksum files SHOULD be adequately protected against manipulation. A large number of false positives SHOULD NOT be allowed to obscure important information that indicates a loss of integrity.
|
1.1 Odkazy
1.2 Identifikované požadavky
1.3 Související regulace
2. Identifikované požadavky
Požadavky
| Zdroj |
Požadavek |
3. Související regulace
Propojené úkoly
|