CIS Controls CIS-16.12

Apply static and dynamic analysis tools within the application life cycle to verify that secure coding practices are being followed.

Mappings

Capability ID Capability Description Mapping Type ATT&CK ID ATT&CK Name Notes
CIS-16.12 Implement Code-Level Security Checks mitigates T1190 Exploit Public-Facing Application
Comments
Static and dynamic application security testing can identify exploitable application weaknesses such as injection flaws, unsafe input handling, authentication defects, and other code-level vulnerabilities before or during release, reducing opportunities to exploit public-facing applications.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1078 Valid Accounts
Comments
Where code-level security checks scan application code, configuration, and repositories for hardcoded or otherwise insecurely stored credentials, exposed authentication material can be identified and removed before release, reducing opportunities for adversaries to obtain and abuse valid accounts.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1195 Supply Chain Compromise
Comments
Code-level security checks within the application lifecycle can identify vulnerable, malicious, or unexpected code and software components introduced through software supply-chain compromise. This relationship applies to software and development-chain compromise that can be detected through static, dynamic, dependency, integrity, or release-pipeline analysis.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1195.001 Compromise Software Dependencies and Development Tools
Comments
Static analysis, dependency review, and build-pipeline security checks can identify vulnerable, unexpected, or suspicious third-party dependencies and development artifacts before they are incorporated into or released with enterprise software.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1195.002 Compromise Software Supply Chain
Comments
Automated or manual code review, static and dynamic testing, and release-pipeline integrity checks can identify unexpected or malicious modifications introduced into software before the compromised build or update is distributed.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1574 Hijack Execution Flow
Comments
Code-level and build-time security checks can identify unsafe executable or library search paths, missing integrity values, and other application-loading conditions that permit adversaries to hijack execution flow, allowing those weaknesses to be corrected before release.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1574.001 DLL
Comments
Static and build-time checks can identify insecure DLL search behavior and verify expected library paths or manifest integrity information, reducing opportunities for malicious DLL side-loading or search-order hijacking in developed applications.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1559 Inter-Process Communication
Comments
For applications that use inter-process communication, code-level security checks can verify hardened runtime settings, entitlements, and IPC-related security configuration so insecure development settings that permit unauthorized process interaction can be identified before release.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1559.003 XPC Services
Comments
For macOS applications using XPC services, build and code-level checks can verify hardened runtime and entitlement settings and identify insecure configurations that could allow unauthorized interaction with or abuse of XPC services.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1550 Use Alternate Authentication Material
Comments
Static and dynamic security checks can verify secure implementation of token handling and token-binding or proof-of-possession controls, helping identify application designs that would allow stolen authentication material to be reused without the intended cryptographic or device-bound protections.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1550.001 Application Access Token
Comments
Code-level and dynamic security testing can identify insecure application access-token handling and verify token-binding or proof-of-possession protections, reducing the ability to reuse a stolen application token outside its intended security context.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1212 Exploitation for Credential Access
Comments
Static and dynamic security testing can verify application controls that validate authentication requests, such as one-time values, timestamps, sequence numbers, digital signatures, or random session keys, helping identify weaknesses that could otherwise be exploited to obtain credential material.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1036.001 Invalid Code Signature
Comments
Where development or release pipelines validate code signatures as part of code-level security checks, invalid, missing, or untrusted signatures can be identified before software is released, reducing opportunities to distribute or execute software that misrepresents its authenticity or provenance.
References
CIS-16.12 Implement Code-Level Security Checks mitigates T1647 Plist File Modification
Comments
For macOS applications, code-level and build-pipeline checks can verify hardened runtime, signing, and expected application configuration settings, helping identify insecure development conditions that could make application behavior or configuration more susceptible to malicious plist modification.
References