Долгое время безопасность жила по другую сторону стены от разработки. Команда писала код, тестировала функциональность, релизила — и где-то ближе к продакшену передавала продукт «безопасникам на проверку». Те находили проблемы. Разработчики возвращались к уже закрытым задачам. Цикл повторялся. По данным IBM, стоимость устранения уязвимости, найденной в продакшене, в среднем в 15 раз выше, чем той же уязвимости, обнаруженной на этапе разработки.
DevSecOps меняет этот порядок радикально: безопасность встраивается в каждый шаг CI/CD-пайплайна, а не ждёт у финишной черты. Три ключевых инструментальных подхода этой модели — SAST, DAST и SCA — перекрывают разные векторы рисков: уязвимости в собственном коде, небезопасные зависимости и бреши в работающем приложении. Понять, что делает каждый из них и где его правильно разместить в пайплайне, — задача этой статьи.
💡 Shift Left — принцип, лежащий в основе DevSecOps: чем раньше в цикле разработки обнаружена уязвимость, тем дешевле и быстрее её устранение. SAST, SCA и DAST реализуют этот принцип на разных этапах пайплайна.
Все три подхода решают одну задачу — находить уязвимости. Но каждый смотрит на приложение под своим углом: один анализирует текст кода, другой — состав библиотек, третий — поведение запущенной системы. Путаница между ними — один из главных источников ошибок при построении AppSec-программы.
SAST — Static Application Security Testing. Инструмент получает исходный код или скомпилированный байткод и анализирует его статически: без запуска, без сети, без базы данных. По сути это очень умный поиск паттернов: SQL-инъекции, небезопасная работа с памятью, жёстко прописанные секреты, небезопасная десериализация — всё это можно обнаружить, читая код.
Главное преимущество SAST — ранний запуск. Инструмент можно встроить прямо в IDE (как плагин) или запускать при каждом коммите, ещё до слияния кода в основную ветку. Главное ограничение — высокий уровень ложных срабатываний: SAST не знает контекста исполнения и нередко помечает безопасный код как проблемный. Это требует настройки правил и регулярного тюнинга.
💡 SAST видит только ваш собственный код. Уязвимости в подключённых библиотеках и фреймворках он не покроет — для этого нужен SCA.
SCA — Software Composition Analysis. Современное приложение на 70–90% состоит из open-source компонентов: библиотек, фреймворков, транзитивных зависимостей. Каждая из них — потенциальная точка риска. SCA строит полное дерево зависимостей (Software Bill of Materials, SBOM) и проверяет каждый компонент по базам известных уязвимостей: NVD, GitHub Advisory Database, OSV.
Помимо CVE, SCA отслеживает лицензионные риски — критично для коммерческих продуктов, где неправильная лицензия компонента может привести к юридическим проблемам. После инцидентов с Log4Shell и XZ Utils SCA из «желательного» инструмента превратился в обязательный: транзитивные уязвимости в глубоко вложенных зависимостях невозможно отследить вручную.
DAST — Dynamic Application Security Testing. В отличие от SAST и SCA, DAST не нуждается в доступе к коду. Он работает снаружи: запускает приложение и атакует его через интерфейс — отправляет специально сформированные HTTP-запросы, перебирает параметры, проверяет заголовки ответов. Это ближе всего к тому, что делает атакующий в реальной жизни.
DAST хорошо ловит то, что SAST пропускает в силу отсутствия контекста: XSS, SSRF, проблемы аутентификации и авторизации, некорректные конфигурации сервера. Ограничение — медленная работа (полный скан может занимать часы) и необходимость задеплоенного окружения. Поэтому DAST обычно запускают не при каждом коммите, а на этапе staging или ночью по расписанию.
Три метода не конкурируют — они дополняют друг друга. Использование только одного из них оставляет значительные слепые зоны. Ниже — сводная таблица ключевых характеристик:
| Характеристика | SAST | SCA | DAST |
|---|---|---|---|
| Объект анализа | Исходный / байткод | Open-source зависимости | Запущенное приложение |
| Нужен исходный код | ✅ Да | ✅ Да (манифест) | ❌ Нет |
| Нужно запущенное окружение | ❌ Нет | ❌ Нет | ✅ Да |
| Скорость сканирования | Быстро (секунды–минуты) | Очень быстро | Медленно (часы) |
| Ложные срабатывания | Высокий уровень | Низкий | Средний |
| Типичные находки | SQLi, секреты, небезопасная логика | CVE в библиотеках, лицензии | XSS, SSRF, AuthN/AuthZ |
💡 Зрелая AppSec-программа использует все три подхода одновременно: SAST и SCA закрывают «левую» часть пайплайна (код и сборка), DAST — «правую» (staging и предпрод). Покрытие только одним методом — это иллюзия безопасности.
Знать, что делает инструмент, — половина дела. Вторая половина — правильно разместить его в пайплайне: запустить слишком рано без достаточного контекста бесполезно, запустить слишком поздно — дорого. Каждый из трёх методов имеет своё естественное место в жизненном цикле сборки.
На этом этапе время — главная ценность: разработчик ещё в контексте задачи и может исправить проблему немедленно. Здесь уместны два инструмента. SAST в режиме diff — анализирует только изменённые строки кода, а не весь репозиторий. Это делает сканирование быстрым (секунды) и релевантным: разработчик видит замечание прямо в PR-комментарии. SCA при любом изменении зависимостей — срабатывает при добавлении или обновлении библиотеки в package.json, requirements.txt, pom.xml. Блокировать merge при наличии критичной CVE — стандартная и оправданная практика.
На этапе сборки SAST запускается уже в полном объёме — по всей кодовой базе, с полным набором правил. Результаты идут в дашборд, а не только в PR-комментарии: здесь важна агрегированная картина технического долга по безопасности. Параллельно — сканирование контейнерного образа: Trivy или Grype проверяют финальный Docker-образ на CVE в системных пакетах и библиотеках. Это отдельный слой, который не покрывает ни SAST, ни SCA приложения.
На staging деплоится рабочая версия приложения — именно здесь включается DAST. Автоматический сканер (OWASP ZAP, Nuclei) запускает базовую проверку: пассивное сканирование при каждом деплое, активное сканирование по расписанию (ночью или перед релизом). Результаты DAST часто дополняются ручным пентестом перед крупными релизами.
Quality Gate — порог, при превышении которого пайплайн падает и деплой не происходит. Это самый болезненный вопрос при внедрении: слишком жёсткий порог парализует команду, слишком мягкий — не даёт никакого эффекта. Практический подход: на старте внедрения ставить gate только на Critical/High без исключений; Medium — в режиме warning без блокировки; первые 2–3 месяца — режим обучения и настройки правил, а не блокировок.
💡 Правило «не сломай разработчика»: каждое предупреждение инструмента должно содержать конкретную рекомендацию по исправлению, а не только описание проблемы. Инструмент, генерирующий сотни необъяснимых предупреждений, будет отключён командой в первую же неделю.
Выбор инструмента зависит от языка, архитектуры и зрелости команды. Ниже — актуальная карта решений по каждой категории: от бесплатных open-source вариантов до enterprise-платформ.
Semgrep — один из наиболее популярных открытых SAST-инструментов: быстрый, с гибкими кастомными правилами на YAML, поддерживает 30+ языков. Отлично встраивается в GitHub Actions и GitLab CI. CodeQL (GitHub) — мощный семантический анализатор, работающий на базе запросов к графу кода; бесплатен для публичных репозиториев, входит в GitHub Advanced Security для корпоративных пользователей. Checkmarx SAST и Veracode — enterprise-решения с расширенной отчётностью, интеграцией с JIRA/ServiceNow и управлением ложными срабатываниями на уровне политик. Из российских инструментов активно развивается PT Application Inspector от Positive Technologies.
OWASP Dependency-Check — классический бесплатный инструмент, поддерживает Java, .NET, Node.js, Python; интегрируется в Maven, Gradle, Jenkins. Trivy от Aqua Security — универсальный сканер: покрывает файловую систему, контейнерные образы, Git-репозитории и SBOM; де-факто стандарт для контейнерных сред. Snyk — коммерческая платформа с удобным developer experience: находит уязвимости, предлагает патч-рекомендации и PR с исправлением прямо в GitHub. GitHub Dependabot — встроенный в GitHub механизм: автоматически создаёт PR на обновление уязвимых зависимостей.
OWASP ZAP (Zed Attack Proxy) — наиболее распространённый open-source DAST-инструмент с режимом автоматизированного сканирования и поддержкой CI-интеграции через Docker-образ. Nuclei от ProjectDiscovery — шаблонизированный сканер с огромной библиотекой community-шаблонов: особенно эффективен для проверки конфигурационных уязвимостей и CVE-специфичных проверок. Burp Suite Pro — стандарт де-факто для ручного тестирования; Enterprise-версия позволяет встроить сканирование в CI/CD. StackHawk — современный DAST с API-first подходом, нативной интеграцией в GitHub Actions и GitLab CI.
SAST, SCA и DAST — базовая троица. Но существуют ещё два подхода, которые упоминаются реже, хотя занимают важную нишу в зрелых AppSec-программах.
IAST (Interactive Application Security Testing) работает изнутри: агент внедряется в JVM или среду выполнения и мониторит поведение приложения в реальном времени во время функционального тестирования. IAST видит точный поток данных от входного параметра до уязвимой операции — это обеспечивает крайне низкий уровень ложных срабатываний. Платой за точность становится необходимость поддерживаемого рантайма и ограниченное покрытие языков. RASP (Runtime Application Self-Protection) — это уже не тестирование, а защита в продакшене: агент, встроенный в приложение, перехватывает потенциально опасные вызовы в реальном времени и блокирует их до выполнения. Это последний рубеж, когда другие меры не сработали.
💡 IAST и RASP не заменяют SAST/DAST/SCA — они закрывают разные слои. IAST усиливает тестирование там, где SAST даёт много ложных срабатываний. RASP защищает в продакшене то, что могло проскользнуть через все проверки. Хорошая AppSec-программа использует несколько слоёв одновременно.
Большинство проблем при внедрении SAST/DAST/SCA не технические. Они организационные — и повторяются из компании в компанию с удивительной регулярностью.
Запуск с максимальными правилами с первого дня. Включить все правила SAST сразу — гарантированный способ получить тысячи предупреждений, половина из которых ложные. Разработчики теряют доверие к инструменту за одну неделю. Правильно: начать с subset критичных правил (injection, secrets, hardcoded credentials), отладить ложные срабатывания, постепенно расширять покрытие.
SCA без политики на устаревшие зависимости. Обнаружить уязвимости в зависимостях легко. Объяснить команде, почему нужно обновить 47 пакетов, — сложнее. Без чёткой политики (например: Critical — блокируют PR, High — должны быть закрыты за 14 дней) результаты SCA превращаются в накапливающийся технический долг.
DAST только в ручном режиме. Многие команды запускают DAST раз в квартал перед аудитом. Это не DevSecOps — это compliance-театр. DAST должен быть автоматизирован: минимум пассивное сканирование при каждом деплое на staging. Это занимает минуты и находит регрессии мгновенно.
Отсутствие интеграции с процессом управления уязвимостями. Результаты сканеров должны попадать в единую систему — JIRA, ServiceNow или специализированную VM-платформу — с SLA и ответственными. Иначе отчёты накапливаются, никто ими не занимается, а реальная поверхность атаки растёт.
SAST, DAST и SCA — инструменты, которым нужно учиться на практике: настраивать, интегрировать в реальные пайплайны, разбирать находки. Ниже — подборка программ от базового до углублённого уровня.
CyberED
48-часовой дистанционный курс: основные концепции безопасности веб-приложений, уязвимости OWASP Top 10, методы атак и способы их устранения, криптографическая защита и механизмы аутентификации. По окончании выдаётся сертификат.
Codeby Academy
Профессия DevSecOps-инженер: безопасная разработка
Карьерная программа DevSecOps-инженера от Codeby: безопасная разработка, интеграция ИБ-инструментов в CI/CD, работа с уязвимостями на всех этапах жизненного цикла приложения.
Otus
Внедрение и работа в DevSecOps
4-месячный онлайн-курс для разработчиков, DevOps-инженеров и специалистов по ИБ с опытом работы в CI/CD. Программа охватывает полный стек DevSecOps-инструментария: SAST, DAST, SCA, IAST, WAF, Secrets Management, NGFW, SIEM/SOAR, ASOC.
INSECA
DevSecOps Deep Dive: практический курс
3-месячный курс с акцентом на практику: 70% программы — лабораторные задания. Включает SAST, DAST, SCA, работу с ASOC-платформой для обработки findings от разных сканеров, автоматическую дедупликацию результатов и встраивание проверок в CI/CD. Резидент «Сколково».
Академия АйТи
Программа подготовки DevSecOps-специалиста: интеграция безопасности в DevOps-процессы, инструменты анализа кода, управление уязвимостями в пайплайне, безопасность контейнеров и облачной инфраструктуры.
Все курсы по DevSecOps и безопасной разработке
Сравните программы по уровню, формату и набору инструментов — в разделе каталога ibcourses.ru.
Смотреть курсы по DevSecOps →