Control Objectives:
3.2 Threats to the software and weaknesses within its design are continuously identified and assessed.
Test Requirements:
3.2.a The assessor shall examine vendor evidence, including process documentation and assessment results to confirm the following:
- A mature process exists to identify, assess, and monitor software threats and design weaknesses (i.e., flaws).
- The assessment accounts for all software inputs/outputs, process/data flows, trust boundaries and decision points, and how they may be exploited by an attacker.
- The assessment accounts for the entire code base, including how the use of third-party, open-source, or shared components or libraries, APIs, services, and applications used for the delivery and operation of the software may be leveraged in an attack.
- The assessment results in a recorded inventory of threats and design flaws.
- Assessments are routinely performed to account for changes to existing or the emergence of new threats or design flaws.
3.2.b Where open-source software components are utilized as part of the software, the assessor shall examine vendor evidence, including process documentation and assessment results to confirm these components are managed as follows:
- An inventory of open-source components used in the vendor’s software is maintained.
- A mature process exists to analyze and mitigate the use of open-source components with known vulnerabilities.
- The software vendor monitors vulnerabilities in open-source components throughout their use or inclusion in the vendor’s software.
- An appropriate patching strategy for opensource components is defined.
3.2.c For a sample of vendor software, the assessor shall examine assessment results for the selected software to confirm the following:
- All software inputs/outputs, process/data flows, trust boundaries and decision points were considered during the assessment.
- The entire code base, including how the use of third-party, open-source or shared components or libraries, APIs, services, and applications used for the delivery and operation of the software were considered during the assessment.
Guidance:
Determining how to effectively secure and defend software against attacks requires a thorough understanding of the specific threats and vulnerabilities applicable to the vendor’s software.
This typically involves understanding:
- The motivations an attacker may have for attacking software;
- Weaknesses in the software design that an attacker might attempt to exploit;
- The exploitability of identified weaknesses; and
- The impact of a successful attack.
This information helps the software vendor to identify the threats and design flaws that present the most significant and immediate risk, and to prioritize remediation activities necessary to address them.
Information regarding software threats can be obtained from a variety of sources, both external and internal. Examples of external sources include publications from organizations such as SANS, MITRE, and CERT that specialize in tracking common system vulnerabilities and attack techniques, or industry-specific sources that provide threat intelligence for specific sectors, such as FS-ISAC for the financial services industry and R-CISC for the retail industry. Other external sources of threat information and design weaknesses could include technology vendors, open-source user communities, industry publications, and academic papers. Internal sources could include reports from internal research and design teams, formal threat models, or actual activity data from internal security or operations teams.
Where open-source software components are used, the software vendor should consider any risks associated with the use of the open-source components and the extent to which the open-source software provider manages the security of those components. Additionally, the software vendor will need to confirm that support—including up-to-date security patches—is available (whether provided by an internal or external entity) for the open-source component. The use of open-source components should be supported by a clear policy about how those components are evaluated and implemented. A reliable support system should be in place to identify errors or problems and evaluate and address them in a timely manner.
Where vulnerabilities are identified in open-source components that are applicable to their software, software vendors should have processes in place to analyze those vulnerabilities and update the components to appropriate, non-vulnerable versions in a timely manner. When patches for open-source components are no longer available, those components should be replaced by actively supported ones. Vendors should identify and establish sources and processes for managing vulnerabilities in open-source components that are appropriate for their software design and release frequency.