Верификация графа сборочных конвейеров, защита секретов и жёсткая фиксация зависимостей
Злоумышленник создаёт запрос на слияние кода со специально составленным заголовком или именем ветки, которые выполняются как команда внутри сборочного узла, позволяя украсть ключи от продакшена или подменить библиотеку. Испытатель разбирает граф конвейера без запуска вредоносной сборки и в автоматическом режиме выпускает правило защиты.
Конвейеры непрерывной интеграции и доставки кода (CI/CD) сосредоточивают в себе ключи подписи релизов, учётные записи облачного развёртывания и прямой доступ к рабочим серверам. Компрометация происходит в тех случаях, когда сборочный сценарий запускает код из внешней недоверенной ветки с доступом к хранилищу секретов, подставляет заголовок запроса на слияние напрямую в строку командной оболочки либо скачивает внешние шаги сборки по плавающему тегу вместо точного хэша коммита.
Силовику и руководителю (без жаргона): Перехват «Execute untrusted fork code with production deployment secrets or pull unverified external package» до сокета (0 вреда рабочей базе, готовая печать ГОСТ)
Техническому проверяющему (улика): Норма ГОСТ Р 56939-2024 §5.2, §5.7; Приказ ФСТЭК России от 11.04.2025 № 117 п. 4 | Фильтр SEC-ZD-V2-07 | Свидетель 6f42a815c3094b87
Технократу, CTO и VC (математика): Инвариант Z3 (assert (and (= (untrusted_fork_secret_exposure wf) false)... | FP = 0,0% | Правило IMMUNE-CIC-6F42A815 (mcp-sentinel 1.1.2)
1. Схема перехвата на проводе и выпуска контракта для DEV-CIC-07
Инструментальный цикл проверки по классу DEV-CIC-07 (OWASP CI/CD Top 10 (CICD-SEC-1 / SEC-4), SLSA Level 3 / MITRE T1195.002): блокировка опасной мутации правилом SEC-ZD-V2-07 до сокета, фиксация свидетеля 6f42a815c3094b87 и выпуск контракта IMMUNE-CIC-6F42A815 для шлюза mcp-sentinel.
2. Фильтр нулевого ущерба и формальный инвариант решателя для DEV-CIC-07
По правилу SEC-ZD-V2-07 программный фильтр на проводе анализирует граф сборочных сценариев, файлы фиксации пакетов и условия запуска без реального выполнения стороннего кода на сборочных узлах и без обращения к внешним каталогам.
На испытательном стенде анализатор сопоставляет модели потоков управления уязвимых конвейеров с эталонными сценариями, разделяющими сборку внешнего кода и доступ к ключам выкладки. Наличие пути утечки секрета фиксируется свидетелем 6f42a815c3094b87 при нулевом уровне ложных тревог.
Код класса: DEV-CIC-07 (cicd_pipeline_supply_chain)
Международные матрицы: OWASP CI/CD Top 10 (CICD-SEC-1 / SEC-4) | SLSA Level 3 / MITRE T1195.002
Нормативная привязка: ГОСТ Р 56939-2024 §5.2, §5.7; Приказ ФСТЭК России от 11.04.2025 № 117 п. 4
Режим проверки: Активное безопасное зондирование (AUTO_SCAN)
Проверочный зонд: POST /api/v1/ci/lint-workflow {"trigger":"pull_request_target","run":"echo ${{ github.event.pull_request.title }}","uses":"third-party/action@main"}
Перехваченная мутация: Execute untrusted fork code with production deployment secrets or pull unverified external package
Инвариант решателя Z3: (assert (and (= (untrusted_fork_secret_exposure wf) false) (= (shell_interpolated_pr_title wf) false) (pinned_commit_sha40 action_ref)))
Правило фильтра: SEC-ZD-V2-07
Хэш свидетеля: 6f42a815c3094b87
Скомпилированный фильтр: IMMUNE-CIC-6F42A815 (mcp-sentinel 1.1.2)
3. Автоматический выпуск защитного контракта IMMUNE-CIC-6F42A815 и квитанция ГОСТ Р 34.11-2012
На основании свидетеля 6f42a815c3094b87 компилятор в автоматическом режиме выпускает контракт IMMUNE-CIC-6F42A815 для перехватчика mcp-sentinel. Правило запрещает передачу секретов в ветки внешних авторов, требует привязки всех шагов к полному сороказначному хэшу коммита и переводит установку библиотек на проверку контрольных сумм SHA-256.
4. Инженерные разъяснения по проверке и закрытию класса DEV-CIC-07
Защита сборочного узла от внедрения команд через название ветки или описание коммита
Контракт запрещает прямую текстовую подстановку внешних полей события внутрь сценария оболочки и требует передачи любых строк только через изолированные переменные окружения без вычисления метасимволов.
Предотвращение подмены внутренних библиотек одноимёнными пакетами из публичных каталогов
Сборка принудительно изолируется от публичных индексов ключами локальной установки с обязательной сверкой каждого архива по реестру контрольных сумм SHA-256 и ГОСТ Р 34.11-2012.