Теория
SSDF — что это
SSDF — Secure Software Development Framework, NIST SP 800-218 v1.1 (Final, February 2022). Описывает практики и tasks с ссылками на CIS, ISO/IEC 27034, OWASP SAMM, BSIMM, OWASP ASVS; не предписывает tooling.
SP 800-218A (Final, May 2024) расширяет SSDF на разработку и использование AI-моделей.
SP 800-218r1 / SSDF 1.2 опубликован как Initial Public Draft в декабре 2025; до выхода Final основная норма — SP 800-218 v1.1.
Четыре группы практик
PO— Prepare the Organization: роли, обучение, supporting toolchains, secure coding standards.PS— Protect the Software: целостность кода и release-артефактов, archiving releases.PW— Produce Well-Secured Software: secure design, threat modeling, secure coding, review/analysis, vulnerability remediation до релиза.RV— Respond to Vulnerabilities: identify, assess, remediate, root-cause analysis.
Каждая практика разбита на tasks (PO.1.1, PW.4.1, RV.1.3 и т.д.) с notional implementation examples и references.
Анти-паттерны внедрения
- ставить SAST/SCA без owners по практикам PO/PW;
- генерировать provenance/SBOM (
PS.3), но не использовать в admission; - не покрывать
RV(vulnerability response runbook, coordinated disclosure).
Что нужно уметь объяснить
Почему SSDF не равен «один scan»?
SSDF охватывает organization (PO), release integrity (PS), engineering (PW) и incident response (RV). SAST покрывает кусок PW.7/PW.8, не больше.
Что даёт максимальный эффект на старте?
PW.7 (review/analysis), PW.8 (testing), PS.2 (release integrity / signing), RV.1 (vulnerability intake) с явными owners.
Метрики выполнения
- MTTR по security defects (RV);
- доля релизов с подписью + SBOM (PS);
- доля сервисов с full baseline в backlog (PO/PW).
Практика
1. Минимальный baseline по группам
PO: secure coding standard, secrets management policy, training cadence.PS: подпись артефактов (cosign), SBOM (CycloneDX/SPDX), provenance (SLSA), архив релизов.PW: threat modeling на дизайне, обязательный peer review, SAST/SCA/secrets/IaC scan в CI.RV: PSIRT-flow, coordinated disclosure (security.txt— RFC 9116), patch SLA.
2. Policy gate в CI
if [ "$CRITICAL_VULNS" -gt 0 ] && [ -z "$VEX_EXCEPTION" ]; then
echo "Block release: critical vulnerabilities without VEX exception"
exit 1
fi