CIS Control 18: Application Software Security
Manage the security life cycle of all in-house developed and acquired software in order to prevent, detect, and correct security weaknesses.
Why is this CIS Control Critical?
Attacks often take advantage of vulnerabilities found in web-based and other application software. Vulnerabilities can be present for many reasons, including coding mistakes, logic errors, incomplete requirements, and failure to test for unusual or unexpected conditions. Examples of specific errors include: the failure to check the size of user input; failure to filter out unneeded but potentially malicious character sequences from input streams; failure to initialize and clear variables; and poor memory management allowing flaws in one part of the software to affect unrelated (and more security critical) portions.
There is a flood of public and private information about such vulnerabilities available to attackers and defenders alike, as well as a robust marketplace for tools and techniques to allow “weaponization” of vulnerabilities into exploits. In one attack, more than 1 million web servers were exploited and turned into infection engines for visitors to those sites using SQL injection. During that attack, trusted websites from state governments and other organizations compromised by attackers were used to infect hundreds of thousands of browsers that accessed those websites. Many more web and non-web application vulnerabilities are discovered on a regular basis.
- 18.1: Establish Secure Coding Practices
- 18.2: Ensure That Explicit Error Checking Is Performed for All In-House Developed Software
- 18.3: Verify That Acquired Software Is Still Supported
- 18.4: Only Use Up-to-Date and Trusted Third-Party Components
- 18.5: Use only Standardized and Extensively Reviewed Encryption Algorithms
- 18.6: Ensure Software Development Personnel Are Trained in Secure Coding
- 18.7: Apply Static and Dynamic Code Analysis Tools
- 18.8: Establish a Process to Accept and Address Reports of Software Vulnerabilities
- 18.9: Separate Production and Non-Production Systems
- 18.10: Deploy Web Application Firewalls
- 18.11: Use Standard Hardening Configuration Templates for Databases