Control Objectives:
4.1 Existing and emerging software vulnerabilities are detected in a timely manner.
Test Requirements:
4.1.a The assessor shall examine vendor evidence and interview personnel to confirm the following:
- A mature process exists for testing software for the existence and emergence of vulnerabilities (i.e., security testing).
- Tools or methods used for security testing are appropriate for detecting applicable vulnerabilities in the vendor’s software, and are suitable for the software architectures, and the software development languages and frameworks employed.
- Security testing is performed throughout the entire software lifecycle, including after release.
- Security testing accounts for the entire code base, including detecting vulnerabilities in any third-party, open-source, and shared components and libraries.
- Security testing is performed by authorized and objective vendor personnel or third parties.
- Security testing results in an inventory of identified vulnerabilities.
- Security-testing details including the tools used, their configurations, and the specific tests performed are recorded and retained.
4.1.b The assessor shall examine evidence, including software-specific security testing configurations and test results to confirm the following:
- Security-testing tools are configured in a manner that is appropriate for the intended tests performed.
- Security testing accounts for the entire code base, including detecting vulnerabilities in any third-party, open-source, and shared components and libraries.
- Security testing was performed by authorized and objective vendor personnel or third parties.
4.1.c The assessor shall examine vendor evidence and interview personnel to confirm that personnel responsible for testing are knowledgeable and skilled in the following areas in accordance with Control Objective 1.3:
- Software security testing techniques
- Security testing tools settings, configurations, and recommended usage
4.1.d For a sample of vendor software, examine software-specific testing results to confirm that security testing is performed throughout the software lifecycle.
Guidance:
Software should be monitored or routinely tested to confirm that vulnerabilities are identified and mitigated before software or code updates are released into production, and to address any vulnerabilities that may have been discovered since release.
Routine security testing should be performed prior to or as part of the code-commit process to detect coding errors or the use of insecure functions. It could also be performed during unit, integration, regression, or interoperability testing, or during separate security testing. Security testing should be performed consistently and throughout all stages of the software lifecycle, including during various pre-release phases of the software development process and after code release, to ensure the software is free from vulnerabilities upon launch and any subsequent updates, and remains free from vulnerabilities throughout its lifetime.
Security testing should be performed by appropriately skilled vendor personnel or third parties. In addition, security testing personnel should be able to conduct tests in an objective manner and be authorized to escalate any identified vulnerabilities to appropriate management or development personnel so they can be properly addressed.
Evidence to support this control objective could include softwarespecific requirements documentation, security test results, feature lists, change-management documentation, entries in the vendor’s workflow (bug tracking) database, or any other evidence or information that clearly and consistently shows that security testing is performed routinely to detect vulnerabilities in code prior to release as well as vulnerabilities discovered since code launch.