id: "SA-11(08)" title: "Dynamic Code Analysis" family: "SA" family_name: "System and Services Acquisition" sort_id: "sa-11.08" priority: "P1" implementation_level: "organization" parent: "SA-11" enhancement: True


Statement

Require the developer of the system, system component, or system service to employ dynamic code analysis tools to identify common flaws and document the results of the analysis.

Guidance

Dynamic code analysis provides runtime verification of software programs using tools capable of monitoring programs for memory corruption, user privilege issues, and other potential security problems. Dynamic code analysis employs runtime tools to ensure that security functionality performs in the way it was designed. A type of dynamic analysis, known as fuzz testing, induces program failures by deliberately introducing malformed or random data into software programs. Fuzz testing strategies are derived from the intended use of applications and the functional and design specifications for the applications. To understand the scope of dynamic code analysis and the assurance provided, organizations may also consider conducting code coverage analysis (i.e., checking the degree to which the code has been tested using metrics such as percent of subroutines tested or percent of program statements called during execution of the test suite) and/or concordance analysis (i.e., checking for words that are out of place in software code, such as non-English language words or derogatory terms).

Assessment Objective: the developer of the system, system component, or system service is required to employ dynamic code analysis tools to identify common flaws;

Assessment Objective: the developer of the system, system component, or system service is required to document the results of the analysis.

System and services acquisition policy

procedures addressing system developer security testing

procedures addressing flaw remediation

solicitation documentation

acquisition documentation

service level agreements

acquisition contracts for the system, system component, or system service

system developer security test and evaluation plans

security test and evaluation results

security flaw and remediation tracking reports

system security plan

other relevant documents or records

Organizational personnel with system and service acquisition responsibilities

organizational personnel with information security responsibilities

organizational personnel with developer security testing responsibilities

organizational personnel with configuration management responsibilities

system developers

Organizational processes for monitoring developer security testing and evaluation

mechanisms supporting and/or implementing the monitoring of developer security testing and evaluation