16.9·high·Component: ProtectWhat this control requires
Ensure that all software development personnel receive training in writing secure code for their specific development environment and responsibilities. Training can include general security principles and application security standard practices. Conduct training at least annually and design in a way to promote security within the development team, and build a culture of security among the developers.
In plain English
Ensure that all software development personnel receive training in writing secure code for their specific development environment and responsibilities. In practice, this means you can prove you ensure software-level controls on a defined cadence.
Why it matters
The CIS Controls are an industry-vetted, prioritised defence: skipping a safeguard widens the attack surface that the safeguards above and below it assume is closed. Audit frameworks (FedRAMP, PCI DSS, HIPAA) all cite CIS as evidence of due care.
This control is rated high. Auditors expect a named owner, a remediation SLA, and a tooling artefact that evidences continuous operation.
What an auditor looks for
A CIS-aligned reviewer wants to see (a) which Implementation Group you are targeting, (b) a documented owner for the safeguard, and (c) a tooling or process artefact (config, scan output, ticket) that proves the safeguard runs on the cadence the control demands.
Within Protect, the assessor will trace your implementation back to the catalogue reference (Control 16.9) and look for objective evidence on the latest two assessment cycles.
How to implement
Secure Development
Pipeline. Require code review, SAST (Semgrep / Snyk Code), SCA (Dependabot / Renovate), secret-scanning and IaC scanning in the merge pipeline.
Branch protection. Protected branches enforce reviews, signed commits and passing CI before merge; document the protection rules as the control evidence.
Code Review Testing
Pipeline. Require at least one human reviewer plus passing CI (lint, type, unit, security scan) before merge — protected branches enforce this.
Policy Management
Docs. Keep each policy in version-controlled Markdown alongside the code that implements it; ship a signed PDF snapshot at each annual review and link the SHA into the SoA.
Operational checklist
- Ensure. Document the trigger, the owner and the cadence.
- Protect. Document the trigger, the owner and the cadence.
- Train. Document the trigger, the owner and the cadence.
- Conduct. Document the trigger, the owner and the cadence.
- Scope: software, general security principles, application security standard practices.
Evidence to collect
- Code Repo Scan. Source-control evidence — branch protection, required reviewers, CI status, SCA / SAST reports.
Source control pipelines (GitHub, GitLab) enforce SDLC guardrails. Focus: Train Developers in Application Security Concepts and Secure Coding.
Common pitfalls
- CI security checks set to warn-only; the merge button is faster than the security feedback.
- Policies that no engineer has read; the version in Confluence drifts from the version that's actually being enforced.
How it maps to other frameworks
Computed from shared tags, control component and key-operation subjects — handy when you are reconciling controls across an audit.
- ISO/IEC 27001:2022 A.8.28 — Secure coding
- NIST SP 800-53 Rev. 5 SA-10(5) — Mapping Integrity For Version Control
- SOC 2 (2017 TSC) CC1.4 — Competence and Training
- ISO/IEC 27701:2025 A.3.28 — Application security requirements
- NIST SP 800-171 Rev. 3 3.13.13 — Mobile Code
Related controls in CIS Controls v8
- Control 16.3 — Perform Root Cause Analysis on Security Vulnerabilities
- Control 16.12 — Implement Code-Level Security Checks
- Control 16.13 — Conduct Application Penetration Testing
References
- Center for Internet Security — CIS Controls v8
- Catalogue identifier:
Control 16.9
Topics: application securitysecure developmentawareness trainingcode review testingdevsecopspolicy management