
Как при помощи LLM детектить абьюз CI/CD-пайплайнов
#CI_CD #DevSecOps #AppSec #ThreatDetection #LLM
Исследователи Elastic Security Labs разработали open-source шаблон cicd-abuse-detector, сочетающий извлечение 50+ regex- и metadata-сигналов из diff с LLM-анализом (Claude через Code CLI). Шаблон работает без Python и custom runtime: в представленной реализации используются стандартные shell-утилиты, bash и Claude Code CLI.
Метод позволяет детектить техники вроде pull_request_target-эксплойтов, double base64-обфускации и LD_PRELOAD-инъекций на этапе анализа изменений (например, в PR).
Суть проблемы
Злоумышленники используют легитимные триггеры (например, on: pull_request_target), чтобы в привилегированном контексте базового репозитория исполнять код из недоверенных форков. Это позволяет эксфильтрировать секреты через env-дампы (например, env -0 | awk '/^secret_/' | base64 -w0 | base64 -w0) или через загрузку артефактов с path: ., включая чувствительные файлы вроде .git/config, содержащие GITHUB_TOKEN.
Дополнительно атакующие могут расширять привилегии воркфлоу, например, через permissions: {id-token: write, contents: write}, увеличивая потенциальный ущерб при компрометации.
Техника детекта
Описанный Elastic детектор работает в 4 фазы (в их реализации — на ubuntu-latest ранере):
Фильтрация diff по CI-путям (.github/workflows, .gitlab-ci.yml, Dockerfiles, .vscode/tasks.json) с лимитом ~10к символов на файл
Извлечение сигналов regex (secrets_context: ${{ secrets.XXX }}, ld_preload: LD_PRELOAD=malicious.so, vscode_auto_task: runOn: folderOpen)
LLM-анализ (Claude): контекстный reasoning по сигналам и изменениям с JSON-выводом (severity, confidence, evidence)
Alerting (Slack, Issues, PR-fail) + индексация в Elasticsearch (logs-cicd.abuse-*) для корреляции по actor/platform
Таким образом LLM выступает как слой анализа, понимающий, что именно происходит в пайплайне.
Проверка
Подход валидировался через сопоставление с реальными техниками атак. Elastic проверял сигнатуры и логику детектора на основе публичных исследований, известных offensive-инструментов и разборов инцидентов.
В репозитории есть набор тестовых примеров изменений (diff), которые используются как базовый датасет для ручной проверки детектора.
Источник
GitHub
@poxek | MAX | Блог | YT | RT | VK Если у вас установлено приложение,
вы можете сразу перейти в канал