Перейти к основному содержимому

Secure SDLC — маршрут для команды

Разработчику Тестировщику Инженеру

Secure SDLC (Secure Software Development Life Cycle) — подход, при котором безопасность встроена в каждый этап создания ПО: от идеи фичи до вывода из эксплуатации. Безопасность здесь — непрерывный процесс на протяжении всего цикла, включая design, coding, testing и эксплуатацию.

Большинство уязвимостей дешевле исправить на этапе проектирования, чем после инцидента. Secure SDLC даёт команде из 5–15 человек практический маршрут, который можно внедрить за один спринт без отдельного отдела AppSec.

Теория STRIDE и threat modeling — в 8.07/1132. Здесь — пошаговый план действий.


Этапы жизненного цикла

ЭтапВопрос безопасностиАртефакт
RequirementsКакие данные обрабатываем? Какие регуляторные требования?Security user stories
DesignГде границы доверия? Какие угрозы?Threat model, diagram
ImplementСледуем ли secure coding guidelines?Code + review checklist
VerifyНаходим ли уязвимости до prod?SAST/DAST reports, test cases
ReleaseПодписан ли артефакт? Нет ли critical CVE?SBOM, signed image
RespondКак узнаем об инциденте? Кто реагирует?Runbook, on-call

Спринт внедрения (2 недели)

План рассчитан на команду, которая ещё не имеет формального Secure SDLC. Каждый день — конкретное действие с измеримым результатом.

Неделя 1 — процесс и люди

ДеньДействиеАртефактВремя
1Workshop: OWASP Top 10 для вашего стека1-pager cheatsheet на Confluence/Notion2 часа
2Threat model одной критичной фичи (STRIDE)Диаграмма + таблица угроз3 часа
3Включить secret scan + dependency scan в CIPR template с checkbox2 часа
4Назначить security champions (1 dev + 1 QA)RACI-матрица1 час
5Чек-лист code review (auth, input, logs)Секция в CONTRIBUTING.md2 часа

День 1 — Workshop OWASP Top 10

Соберите команду и разберите OWASP Top 10 на примерах вашего стека:

  • Broken Access Control — есть ли IDOR в ваших endpoint?
  • Cryptographic Failures — где хранятся пароли, какой TLS?
  • Injection — ORM или raw SQL?
  • Insecure Design — threat model есть?
  • Security Misconfiguration — открыты ли debug endpoint в prod?
  • Vulnerable Components — кто обновляет зависимости?
  • Authentication Failures — OAuth, MFA, session management
  • Software and Data Integrity — подпись артефактов, CI/CD
  • Logging Failures — логируете ли failed login?
  • SSRF — есть ли исходящие HTTP из backend?

Результат — одностраничная шпаргалка "Top 10 → наши риски → что делаем".

День 2 — Threat model одной фичи

Выберите фичу с PII или деньгами (оплата, экспорт данных, admin panel). Нарисуйте DFD (Data Flow Diagram):

Для каждого элемента и потока примените STRIDE:

УгрозаSTRIDEПримерМитигация
Подмена user_id в URLTamperingIDOR на /orders/123AuthZ check owner
Утечка чужих заказовInformation DisclosureНет проверки ownerТест + code review
Brute force loginDenial of Service1000 req/s на /loginRate limit

Подробнее — 8.07/1132.

День 3 — CI scans

Минимальный набор в pipeline:

ИнструментЧто ищетИнтеграция
gitleaks / trufflehogСекреты в git diffGitHub Actions, GitLab CI
npm audit / pip-audit / trivyCVE в зависимостяхНа каждый PR
hadolintПлохие практики в DockerfileПри изменении Dockerfile

Начните с warning, через 2 спринта переключите critical на block merge.

День 4 — Security champions

Security champion — разработчик или QA с дополнительной ответственностью за безопасность (без выделенной full-time роли security engineer):

  • Первый review security-аспектов в PR
  • Координация с DevOps по CI gates
  • Эскалация находок pentest

RACI-пример:

АктивностьDevQA championDevOpsProduct
Threat modelRCII
SAST tuningCIRI
Pentest triageCRIA
Patch SLACIRA

R = Responsible, A = Accountable, C = Consulted, I = Informed.

День 5 — Code review checklist

Добавьте в CONTRIBUTING.md:

  • Новый endpoint — есть AuthZ?
  • User input — валидация и parameterization?
  • Секреты — не в коде?
  • Логи — нет PII и паролей?
  • Ошибки — не раскрывают stack trace в prod?

Неделя 2 — automation и операции

ДеньДействиеАртефакт
1DevSecOps gates — block critical CVECI config
2SBOM для prod-образаSPDX/CycloneDX файл в артефактах
3Staging DAST (OWASP ZAP baseline)Отчёт в CI
4Runbook "security incident" (1 страница)Confluence / repo docs
5Retro + опционально фишинг-учениеМетрики, action items

День 1 — DevSecOps gates

  • Critical/High CVE в зависимостях → block PR (с waiver process)
  • Secret в diff → block PR
  • Dockerfile без non-root user → warning → block через месяц

День 2 — SBOM

SBOM (Software Bill of Materials) — машиночитаемый список всех компонентов в артефакте. Нужен для:

  • Быстрого ответа на CVE (Log4Shell — есть ли в prod?)
  • Compliance и аудитов
  • Supply chain transparency

Генерация: syft, trivy sbom, cyclonedx-cli. Храните SBOM рядом с каждым prod-образом.

День 3 — DAST baseline

DAST (Dynamic Application Security Testing) — сканирование работающего приложения. OWASP ZAP baseline scan против staging:

docker run -t owasp/zap2docker-stable zap-baseline.py \
-t https://staging.myapp.com \
-r zap-report.html

Начните с informational, фиксируйте High. Не заменяет pentest, но ловит очевидные misconfiguration.

День 4 — Incident runbook

Одна страница:

  1. Как сообщить (security@, Slack #incidents)
  2. Кто incident commander (ротация)
  3. Шаги: contain → assess → notify → fix → post-mortem
  4. Контакты: legal, PR, hosting provider
  5. Шаблон post-mortem (blameless)

День 5 — Retro

Что сработало, что нет. Запланируйте повтор threat model для следующей фичи. Опционально — учебный фишинг для проверки human layer.


OWASP ASVS как чек-лист

ASVS (Application Security Verification Standard) — структурированный стандарт проверки безопасности приложений. Три уровня:

УровеньДля когоПримеры требований
L1Большинство приложенийBaseline security
L2B2B SaaS, PIIСтрогая AuthN/AuthZ
L3Банкинг, health, critical infraHigh assurance

Для типичного B2B SaaS начните с L1, постепенно закрывайте L2.

Ключевые главы ASVS для старта

ГлаваТемаСсылка в энциклопедии
V2AuthenticationOAuth/Passkeys, 116
V4Access controlNo IDOR — 128
V5ValidationИнъекции
V7CryptographyTLS, hashing — 115
V13API security132
V14ConfigurationSecure defaults, no debug in prod

Пример требования V4.1.3: "Приложение enforces access control на trusted service layer, не только на клиенте".

OWASP ASVS


Gates в pull request

PR template

## Security
- [ ] No secrets in diff (CI gitleaks green)
- [ ] User input validated / parameterized queries
- [ ] AuthZ checked for new endpoints
- [ ] Threat model updated (if architecture changed)
- [ ] Dependencies scanned (no unapproved critical CVE)

CI gates (автоматические)

GateBlock или warnWaiver
Secret in diffBlockНет
Critical CVEBlockДа, с expiry date и risk acceptance
High CVEWarn → Block через месяцДа
SAST HighWarnДа, false positive

Release gate

Перед prod deploy:

  • Critical CVE = 0 или approved waiver с датой истечения
  • SBOM сгенерирован и сохранён
  • DAST staging — нет новых High
  • Pentest или bug bounty triage для major release (опционально) — 8.09
  • Threat model актуален для изменённой архитектуры

Secure coding — ключевые правила

КатегорияПравилоПример нарушения
InputВалидируйте всё от пользователяSQL injection через ?id=
OutputЭкранируйте при выводе в HTMLXSS в comment field
AuthПроверяйте на каждом endpointForgotten AuthZ на DELETE
SecretsТолько env / VaultAPI key в git
Cryptobcrypt/argon2 для паролейMD5 password hash
ErrorsGeneric message в prodStack trace в 500 response
LogsБез паролей и полных PANlog.info(password)

Языковые гайды: OWASP Cheat Sheet Series.


Роли и ответственность

Secure SDLC activityOwnerBackup
Threat modelDev + architectSecurity champion
SAST/DAST tuningDevOps + security championDev lead
Pentest coordinationSecurity champion / externalCTO
Patch SLA (critical CVE)Product + infra48h target
User report channelsecurity@ / HackerOneOn-call rotation
Security trainingHR + security championExternal vendor
Incident responseOn-call engineerIncident commander

Инструменты по этапам

ЭтапOpen sourceCommercial
Secret scangitleaks, trufflehogGitGuardian
SASTsemgrep, bandit, gosecSonarQube, Checkmarx
Dependencytrivy, dependabot, socketSnyk
DASTOWASP ZAPBurp Suite Enterprise
Containertrivy, grypeAqua
PentestCobalt, HackerOne
Threat modelOWASP Threat DragonIriusRisk

Не обязательно внедрять всё сразу. Минимум: gitleaks + trivy + semgrep + ZAP baseline.


Метрики зрелости

Отслеживайте прогресс ежемесячно:

МетрикаЦельКак измерять
% PR с security checklist> 90%PR template analytics
Mean time to patch critical CVE< 48hTicket timestamps
Secrets found in CI→ 0gitleaks count per month
Repeat findings in pentestСнижение YoYPentest report comparison
DAST High findings open< 5ZAP report
Threat models для critical features100%Confluence inventory
Security training completion100% team/yearLMS

Связь с DevSecOps и Supply Chain

Secure SDLC — процесс и люди. DevSecOps — автоматизация этого процесса в CI/CD.

Secure SDLCDevSecOps
Threat model на designSAST в PR
Code review checklistAutomated policy gates
Pentest перед major releaseContainer scan в pipeline
Security trainingSBOM generation

Подробнее — DevSecOps, Supply chain и SBOM.


Pentest в жизненном цикле

КогдаТипКто
Перед launch MVPLightweight reviewInternal / freelancer
Major release (раз в год)Full pentestExternal firm — 8.10
После инцидентаTargeted retestExternal
ContinuousBug bounty8.09

Результаты pentest → backlog с приоритетом → verification retest.


Обучение команды

ФорматЧастотаСодержание
OWASP Top 10 workshopПри onboarding + ежегодноАктуальные угрозы
Secure coding lab1 раз в кварталSQLi, XSS hands-on
Threat modeling sessionНа каждую major featureSTRIDE practice
Фишинг simulation2 раза в годУчебный фишинг
Post-mortem reviewПосле инцидентаBlameless learning

15 минут security tip на каждом sprint planning — хорошая привычка.


Threat modeling — углубление

Когда обновлять threat model

СобытиеДействие
Новая фича с PII/платежамиThreat model до coding
Новый внешний интеграторDFD + trust boundary
Смена auth (OAuth, passkeys)Пересмотр V2 ASVS
Pentest finding (архитектурный)Обновить model + митигации
Major releaseReview актуальности

Шаблон таблицы угроз

IDКомпонентSTRIDEУгрозаLikelihoodImpactМитигацияOwner
T-01/orders/{id}IIDORHighHighAuthZ owner checkBackend team
T-02Login formSCredential stuffingMedHighRate limit + MFAAuth team
T-03File uploadTMalware uploadMedMedMIME check + sandboxBackend

Likelihood и Impact — qualitative (Low/Med/High). Фокус на High/High — в sprint backlog.

Инструменты threat modeling

  • OWASP Threat Dragon — free, JSON export
  • Miro / Excalidraw — для workshop
  • Markdown table в repo — version controlled

Security в agile-церемониях

ЦеремонияSecurity activityВремя
Refinement"Есть ли PII? Нужен threat model?"5 мин на story
Sprint planningSecurity tasks в sprint (CVE patch)10% capacity max
DailyБлокеры по CI security gatesПо необходимости
ReviewDemo + security checklist2 мин
RetroОдна security action item5 мин

Не превращайте каждый refinement в hour-long threat model. Risk-based approach: глубокий анализ только для high-risk stories.


Waiver process для CVE

Иногда critical CVE не имеет патча или patch ломает совместимость.

## Security Waiver Request

**CVE:** CVE-2024-XXXX
**Component:** library-name@1.2.3
**Severity:** Critical (CVSS 9.1)
**Justification:** Нет fix; компонент не exposed to user input
**Compensating controls:** Network isolation, WAF rule
**Expiry:** 2026-08-01 (max 90 days)
**Approver:** CTO / Security champion

Waiver хранится в repo или ticket system. CI разрешает merge с label security-waiver-approved. По expiry — block снова.


Compliance mapping

FrameworkСвязь с Secure SDLC
152-ФЗThreat model для ПДн, encryption, access control
PCI DSSASVS V4, V6, pentest, logging
SOC 2Change management, access review, incident runbook
ISO 27001Risk assessment = threat model, controls = ASVS

Secure SDLC даёт технические артефакты. Юридическую интерпретацию — с compliance officer.


Onboarding нового разработчика

ДеньSecurity activity
1Security policy, acceptable use, password manager
2OWASP Top 10 cheatsheet команды
3Как работают CI gates (demo failed PR)
5Shadow security champion на code review
10Доступ к staging (no prod без training)
30Участие в threat model workshop

Vulnerability management lifecycle

SeveritySLA patchEscalation
Critical (CVSS 9+)48 часовCTO + on-call
High (7–8.9)7 днейTeam lead
Medium30 днейSprint backlog
Low90 днейBest effort

Источники discover: dependabot, pentest, bug bounty, user report, security advisory.


Secure defaults для нового сервиса

Шаблон "новый микросервис" в Platform Engineering должен включать:

КомпонентSecure default
HTTP serverTLS only, no debug endpoints
AuthJWT validation middleware включён
LoggingStructured JSON, no PII
Health/health без sensitive data
Dockerfilenon-root user, distroless base
K8s manifestreadOnlyRootFilesystem, drop capabilities
CIgitleaks + trivy + unit tests

Golden path из Platform Engineering + Secure SDLC checklist = security by default.


Post-mortem после security инцидента

Blameless template:

# Security Post-Mortem — [дата]

## Summary
Что произошло, impact, duration.

## Timeline
- HH:MM — обнаружение
- HH:MM — containment
- HH:MM — eradication
- HH:MM — recovery

## Root cause
Техническая и процессная причина.

## What went well
- Быстрый report от сотрудника

## What went wrong
- Нет rate limit на /login

## Action items
| Action | Owner | Due |
|--------|-------|-----|
| Add rate limit | Backend | 2026-06-20 |
| Update threat model T-02 | Architect | 2026-06-25 |

## Lessons for Secure SDLC
Какой gate мог поймать раньше?

Храните post-mortems в repo. Ссылайтесь на них в threat model updates.


Bug bounty и responsible disclosure

КаналОписание
security@company.ruEmail для researchers
HackerOne / BugcrowdManaged platform
security.txt/.well-known/security.txt по RFC 9116

Политика disclosure:

  • Acknowledge в 24 часа
  • Triage severity в 72 часа
  • Fix timeline по SLA
  • Credit researcher (если хочет)
  • No legal action при good-faith research

Связь с 8.09 Bug bounty.


Seasonal security calendar

МесяцActivity
ЯнварьAnnual OWASP Top 10 refresh
МартDependency audit всех repos
ИюньPentest или retest
СентябрьФишинг-симуляция
НоябрьAccess review (who has prod)
ДекабрьRetro года, maturity metrics

Не всё в одном спринте. Распределите нагрузку по кварталам.


Чек-лист Secure SDLC

  • OWASP Top 10 workshop проведён
  • Threat model для критичной фичи
  • Security champions назначены
  • PR template с security checkbox
  • gitleaks + dependency scan в CI
  • Critical CVE блокирует merge
  • SBOM для prod-образов
  • DAST baseline на staging
  • Incident runbook (1 страница)
  • ASVS L1 — прогресс > 50%
  • Метрики зрелости на dashboard

Runbook — critical CVE в prod dependency

ШагДействиеSLA
1Triage severity CVSS + exploitability2 ч
2Identify affected services via SBOM4 ч
3Patch version или workaround24–72 ч
4Emergency PR, expedited reviewSame day
5Deploy staging → prodPer policy
6Verify scan clean post-deploy1 ч
7Waiver только с CISO sign-off

Держите pre-approved patch window для critical — on-call может merge без полного sprint cycle.


Runbook — security incident P1

ФазаДействия
DetectSIEM alert, user report, bug bounty
ContainIsolate service, revoke tokens, block IP
EradicatePatch vuln, remove malware
RecoverRestore from backup, monitor
LearnPost-mortem 5 business days

Единый канал #security-incident в Slack/Teams. CISO или delegate — incident commander.


Compliance — Secure SDLC и регуляторика РФ

НормаТребование к SDLCАртефакт
152-ФЗЗащита ПДн by designThreat model PII stories
187-ФЗ КИИАктуализация уязвимостейVuln register
PCI DSS 6.xSecure coding, reviewASVS checklist
ГОСТ Р 57580Управление уязвимостямиScan reports
ISO 27001Change managementPR + CI gates

Mapping ведёт security champion совместно с compliance officer. Обновление раз в полгода или при новом контракте.


Расширенный пример — fintech, два релиза в неделю

Компания 80 разработчиков, PCI scope, GitLab self-hosted.

GateToolBlocks merge
Secret scangitleaksДа
SASTSemgrep OWASPCritical only
DependencyTrivy + OSVCritical CVE
ContainerTrivy imageCritical
ManualSecurity champion reviewPayment modules

Threat model обновляют при каждой фиче с card data. DAST OWASP ZAP nightly на staging. Pentest external раз в год.

Метрика — mean time to patch critical < 7 days, waiver rate < 5%.


Сравнение SAST для CI

ToolЯзыкиCI timeFalse positivesЛицензия
SemgrepMultiБыстроСредниеOSS + Team
CodeQLMultiМедленноНизкиеFree for OSS
SonarQubeMultiСреднеСредниеCommunity + Enterprise
BanditPythonБыстроСредниеOSS
gosecGoБыстроСредниеOSS

Старт — Semgrep с curated ruleset. CodeQL для critical repos при наличии GitHub Advanced Security.


Сравнение DAST baseline

ToolDeploymentCI integrationПримечание
OWASP ZAPDockerGitLab/JenkinsBaseline scan
NucleiCLIPipelineTemplates community
Burp EnterpriseServerScheduledPentest team
StackHawkSaaSPR commentsStartup friendly

DAST на staging после deploy, не на prod без scope agreement.


Региональная специфика — обучение и HR в РФ

ТемаПрактика
Трудовой договорSecurity training в onboarding
Дистанционная работаSecure SDLC для home office
ПодрядчикиNDA + access review 90 days
УвольнениеSame-day revoke Git, VPN, IdP
Учебный фишингSafe harbor письменно — 11.md

HR участвует в seasonal calendar — Seasonal security calendar.


Расширенный пример — waiver с expiration

# Security Waiver — CVE-2026-1234

Service: legacy-billing
Package: openssl 1.1.1 (EOL)
Risk: medium, no public exploit, air-gapped segment
Compensating: network ACL, no inbound
Owner: @ivanov
Expires: 2026-09-01
Review: monthly until migration complete

Expired waiver — CI блокирует merge автоматически. Migration ticket linked в waiver doc.


Runbook — false positive SAST блокирует release

ШагДействие
1Triage finding — true или false positive
2If FP — suppress с justification в .semgrepignore
3PR review security champion
4Track suppressions — quarterly audit
5Upstream rule fix — contribute или custom rule

Suppressions без expiry запрещены — max 90 days или привязка к migration ticket.


Compliance — хранение scan reports

Тип отчётаRetentionХранилище
SAST PR scan1 годCI artifacts
Container scan3 годаRegistry metadata
Pentest report5 летSecure doc repo
SBOMLife of serviceArtifact registry

Аудитор запросит proof scan на дату release — tag CI artifact к release tag.


Расширенный пример — security champion program

РольНагрузкаОтветственность
Champion4 h/недPR review security checklist
Backup champion2 h/недCoverage при отпуске
Security team2 h/недOffice hours для champions
CISO1 h/месSponsor meeting

Champion не заменяет security team — эскалация сложных findings обязательна.


Compliance — 187-ФЗ КИИ и patch SLA

Категория значимостиPatch criticalPentest
Кат. 124–72 ч1 раз в год min
Кат. 27 днейПо регламенту
Кат. 330 днейRisk-based

Waiver для КИИ — только с согласованием регулятора или внутреннего комитета, не team lead alone.


Связанные материалы


Содержание