CRA essential requirements aren't abstract — they're testable properties. "No known exploitable vulnerabilities" is a test. "Secure default configuration" is a test. "Protection against unauthorized access" is a test. Your infrastructure should run these tests continuously.
Mapping CRA Requirements to Tests
- "No known exploitable vulnerabilities" → Dependency scanning, DAST, penetration testing
- "Secure default configuration" → Configuration audit against CIS benchmarks, default credential scanning
- "Protection against unauthorized access" → Authentication testing, authorization boundary testing, API security testing
- "Confidentiality protection" → Encryption verification (at rest and in transit), key management audit
- "Data integrity" → Tampering detection testing, signed artifact verification
- "Minimal attack surface" → Port scanning, service enumeration, unnecessary component detection
- "Secure update mechanism" → Update integrity verification testing, rollback testing
Testing Infrastructure Stack
- SAST — Semgrep, CodeQL, SonarQube (integrated into every PR)
- DAST — OWASP ZAP, Nuclei (running against staging environments)
- Fuzzing — OSS-Fuzz, AFL++ (continuous fuzzing for native code)
- Infrastructure scanning — Trivy, Checkov, tfsec (IaC security)
- API testing — Postman security tests, custom API fuzzing
- Configuration audit — InSpec, OpenSCAP (CIS benchmark validation)
Kubernetes Recipes
A practical guide for container orchestration and deployment by Grzegorz Stencel & Luca Berton (Apress).
Watch on Skillshare →Continuous vs. Point-in-Time
Traditional security testing is a point-in-time assessment. CRA requires ongoing assurance. Build testing infrastructure that runs continuously — not just before release. Every code change, every dependency update, every configuration change triggers the relevant security tests.
Luca Berton