Безопасность CI/CD-пайплайна
CI/CD-пайплайн — это последняя автоматическая линия защиты перед тем, как код попадёт к пользователям. Каждый коммит, каждый пул-реквест, каждый деплой проходит через него. Это идеальное место для автоматической проверки: уязвимости в коде, опасные зависимости, утечка секретов, небезопасные конфигурации.
Цель — не блокировать каждую сборку предупреждениями. Цель — автоматически находить критичные проблемы, давать разработчикам быструю обратную связь и не позволять очевидным уязвимостям попасть в продакшн.
Почему это важно для компании с разработкой
Масштаб превышает возможности ручной проверки. Небольшая команда может делать десятки коммитов в день. Ни у кого нет времени проверять каждое изменение вручную. Автоматические сканеры закрывают этот пробел.
Скорость — и уязвимость. В малом бизнесе нет многоступенчатых согласований: код уходит с ноутбука в продакшн за часы. Это преимущество — но уязвимости движутся с той же скоростью. Сканирование в пайплайне — страховочная сеть.
Зависимости — это чужой код. Приложение содержит тысячи строк кода команды и сотни тысяч строк открытых библиотек. Одна уязвимость в стеке зависимостей — и атакующие могут использовать её автоматически. Так произошло с Log4Shell в 2021 году: тысячи организаций были скомпрометированы через одну уязвимую библиотеку.
Атакующие тоже сканируют. Массовая эксплуатация известных уязвимостей — автоматизированный процесс. Российские группы атакующих регулярно сканируют открытые порты и известные CVE в поисках незащищённых систем. Если у вас нет инструментов обнаружения, у атакующих будет преимущество во времени.
Пять типов сканирования
Разные инструменты ловят разные проблемы — они дополняют, а не заменяют друг друга.
| Тип | Что делает | Когда запускать |
|---|---|---|
| SAST — статический анализ кода | Анализирует исходный код на уязвимости | При каждом коммите / пул-реквесте |
| SCA — анализ состава ПО | Находит уязвимые зависимости | При каждой сборке |
| SBOM — реестр компонентов | Ведёт полный перечень всего ПО в продукте | При каждом релизе |
| IaC-сканирование | Ищет небезопасные конфигурации инфраструктуры | При каждом коммите |
| DAST — динамическое тестирование | Тестирует работающее приложение | При деплое на стейджинг |
SAST — статический анализ кода
Инструменты SAST читают исходный код и ищут паттерны, указывающие на уязвимости. Никакого запуска приложения — только анализ текста программы.
Что находит: SQL-инъекции, XSS, инъекции команд, небезопасную криптографию, захардкоженные секреты, небезопасную обработку входных данных.
Российские коммерческие инструменты:
- PT Application Inspector (Positive Technologies) — российский SAST, сертифицированный ФСТЭК России. Поддерживает широкий спектр языков. Рекомендован для проектов с требованиями к отечественным средствам защиты информации.
- Solar appScreener (ГК «Солар») — SAST/DAST/SCA в одном продукте. Возможность размещения на собственной инфраструктуре.
Open-source:
- Semgrep — быстрый, настраиваемый сканер с готовыми правилами по OWASP Top 10. Хорошо интегрируется с GitLab CI, GitFlic CI, GitVerse CI.
SCA — анализ состава ПО
SCA-инструменты сканируют файлы зависимостей и находят библиотеки с известными уязвимостями.
Что находит: известные CVE в сторонних библиотеках, устаревшие компоненты без патчей, проблемы с лицензиями.
Российские коммерческие инструменты:
- CodeScoring — российский SCA с реестром уязвимостей, включая данные БДУ ФСТЭК (bdu.fstec.ru). Поддерживает самостоятельное размещение.
- Solar appScreener — включает SCA-модуль.
Open-source:
- Trivy — универсальный сканер: файловые системы, контейнеры, репозитории. Использует несколько баз уязвимостей.
- OWASP Dependency-Check — open-source SCA от OWASP.
SBOM — реестр программных компонентов
SBOM (Software Bill of Materials) — полный перечень всех компонентов вашего ПО: каж дая библиотека, каждый фреймворк, каждая транзитивная зависимость с версией и источником. Представьте это как состав продукта на этикетке.
Зачем это нужно бизнесу:
Скорость реагирования. Когда появляется критичная уязвимость в популярном компоненте, компании с актуальным SBOM узнают за часы, затронуты ли их системы. Без SBOM — тратят дни на ручное исследование.
Видимость цепочки поставок. Ваше приложение зависит от пакета А, который зависит от пакета Б, который зависит от пакета В. Уязвимость в В затрагивает вас — но без SBOM вы можете не знать о существовании В.
Требования заказчиков и регуляторов. Корпоративные клиенты и государственные заказчики всё чаще требуют SBOM как часть оценки безопасности поставщика. В контексте требований Минцифры к составу используемого ПО и реестра российского ПО наличие актуального SBOM — конкурентное преимущество при работе с госсектором.
Форматы SBOM:
- CycloneDX (OWASP) — акцент на безопасности, хорошо интегрируется со сканерами уязвимостей
- SPDX (Linux Foundation) — ориентирован на соответствие лиц ензий, широко поддерживается
Инструменты:
- Trivy — генерирует SBOM и сразу сканирует на уязвимости
- Syft (open-source, Anchore) — универсальный генератор SBOM
- OWASP Dependency-Track — бесплатная платформа для централизованного хранения и анализа SBOM. Самостоятельное размещение
Практическое правило: генерируйте SBOM при каждом релизе, храните как артефакт сборки, периодически сканируйте на появление новых CVE.
DAST — динамическое тестирование
DAST-инструменты тестируют работающее приложение, посылая запросы и анализируя ответы. Они находят то, чего не видит статический анализ: неправильно настроенный сервер, отсутствующие заголовки безопасности, уязвимости, проявляющиеся только в рантайме.
Что находит: отсутствующие заголовки безопасности, активный XSS, неверная конфигурация CORS, проблемы с TLS.
Запускайте только на стейджинге — активное сканирование может нарушить работу продуктивной системы.
Инструменты:
- OWASP ZAP — стандартный open-source DAST. Базовое сканирование: 1–5 минут. Полное: 30–60 минут. Хорошо интегрируется с GitLab CI.
- Solar appScreener — включает DAST-модуль.
Сканирование инфраструктурного кода (IaC)
Если команда использует Terraform или Kubernetes-манифесты для описания инфраструктуры (Yandex Cloud, VK Cloud, Selectel, Cloud.ru), эти файлы тоже нужно сканировать. Небезопасная конфигурация инфраструктуры не менее опасна, чем уязвимость в коде.
Что находит: чрезмерно широкие права доступа, нешифрованные хранилища, открытые сетевые порты.
Инструменты:
- Checkov (open-source) — поддерживает Terraform, Kubernetes, Docker Compose и другие форматы. Имеет готовые правила для облачных платформ.
- Trivy — в режиме сканирования IaC.
Сканирование секретов
Случайно закоммиченные API-ключи, пароли к базам данных, токены доступа — одна из наиболее частых причин инцидентов. Атакующие регулярно сканируют публичные репозитории в поисках таких утечек; внутренние репозитории тоже не застрахованы от случайных коммитов.
Инструменты:
- gitleaks (open-source) — быстрый, настраиваемый сканер Git-истории. Устанавливается как pre-commit хук.
- truffleHog (open-source) — углублённое сканирование, в том числе верификация секретов.
Обнаруженные секреты должны немедленно аннулироваться — даже если коммит был сделан давно и кажется, что «никто не видел». Правильное место хранения секретов — Пассворк (российский менеджер секретов с размещением на собственном сервере) или open-source HashiCorp Vault / OpenBao, но не переменные окружения в репозитории.
Пла тформы CI/CD для российских команд
Все описанные инструменты интегрируются в CI/CD-пайплайн — запускаются автоматически при каждом изменении кода. Российские команды могут использовать:
- GitFlic (gitflic.ru) — российская платформа с встроенным CI/CD
- GitVerse (gitverse.ru, СберТех) — российская платформа с CI/CD
- GitLab CE, self-hosted — полнофункциональная платформа с GitLab CI; размещение на собственном сервере
- Gitea с внешними CI/CD-инструментами — лёгкая платформа для небольших команд
Принципы конфигурации едины для всех платформ: определите стадии (тест → сборка → безопасность → деплой) и на каждой стадии запустите соответствующий сканер.
Процесс реагирования на находки
Настроить инструменты — первая часть задачи. Вторая — выстроить процесс работы с их результатами. Без чёткого процесса алерты накапливаются, команда их игнорирует, инструменты отключают «чтобы не мешали».
Приоритизация
Используйте следующую шкалу для расстановки приоритетов:
| Приоритет | Признаки | Срок реагирования |
|---|---|---|
| Критичный | Активная эксплуатация, CVE с высоким CVSS в БДУ ФСТЭК, данные пользователей под угрозой | 1–4 часа |
| Высокий | Публичный эксплойт, уязвимость в компоненте с внешним доступом | 24–48 часов |
| Средний | Нет публичного эксплойта, ограниченный доступ | Текущий спринт |
| Низкий | Теоретический риск, нет внешней доступности | Бэклог |