Shipping software when new CVEs arrive faster than fixes,
and an LLM can turn a CVE description into an exploit.
Samarthya · read the full post · press Esc for the overview
Defenders get the same tools: at DARPA's AIxCC final, automated systems found 86% of planted bugs and patched 68%, about 45 minutes per patch.
Sources: Jerry Gamblin 2025 CVE review · VulnCheck State of Exploitation 2026 · Fang et al., arXiv:2404.08144 · DARPA AIxCC results
A finding at release competes with a deadline. The deadline usually wins.
Clean on Tuesday, vulnerable on Wednesday: a dependency got a CVE. Your code did not change.
A PDF of 400 findings is a to-do list nobody owns.
| Classic SDLC | SSDLC | |
|---|---|---|
| When | Gate before release | Every commit, merge, night, and in production |
| Output | Report | PR or ticket with an owner and a due date |
| Priority | CVSS severity | Exploited? Reachable? Likely? (KEV, exposure, EPSS) |
| Trivial fixes | A developer, eventually | A bot opens the PR; a developer reviews |
| Shipped software | Done | Rescanned daily against new CVEs |
Four questions: exposed? in KEV? automatable? total control?
Worst combination: 3 days
At one large agency: 1% of instances were 3-day; 60%+ could wait for the next upgrade.
Risk-based triage: fix a small set very fast, and stop pretending the rest is urgent.
blocks only new criticals and secrets · stage 4 is where most new risk appears
Vectors: OWASP Top 10:2025 (A0x) and MITRE ATT&CK (T1xxx). Not here on purpose: broken access control (A01) and insecure design (A06) need threat modelling and people.
My heuristic, loosely modelled on CISA BOD 26-04. The EPSS cut-off is a starting guess, to be tuned on your own data.
T0 KEV + exposed: 3 days
T1 KEV, or exposed + likely: 14 days
T2 likely, or exposed: 30 days
T3 none of these: next upgrade
Same data, different place: Log4Shell is T0 on an internet-facing service and T1 on an internal one.
| Job | Tool | Licence | Stage |
|---|---|---|---|
| Secrets | Gitleaks | MIT | Commit, PR |
| SAST | Semgrep CE | LGPL-2.1 | PR, merge |
| SCA | OSV-Scanner | Apache-2.0 | PR, merge |
| Containers, IaC, SBOM | Trivy | Apache-2.0 | Merge |
| DAST | ZAP baseline | Apache-2.0 | Nightly |
| SBOM monitoring | Dependency-Track | Apache-2.0 | Nightly |
| Findings store | DefectDojo | BSD-3-Clause | Triage |
Everything writes SARIF or a CycloneDX SBOM, so it can land in one place.
Patch or minor bumps with upgrade guidance, lint autofix, base-image refresh.
Bot PR → human merges after CI.
Parameterise a query, add output encoding, tighten config.
LLM draft PR + test → code owner.
Authentication, authorisation, crypto, data model, major upgrades.
Developer, LLM as a pair.
main. Branch protection applies to bots too.Pattern from Google DeepMind's CodeMender: validate first, then "all patches … are reviewed by human researchers".
Full post, sources and the triage.py script: samarthya.me/posts/ssdlc-in-the-age-of-ai-exploits