// Безопасность / Искусственный интеллект

Защита от CI-инъекции: реальные взломы и как их ловит agentpipe

За последний год CI/CD-пайплайн превратился из служебного конвейера в главную мишень. В нём лежат токены, ключи облака и права на публикацию пакетов, а теперь ещё и ИИ-агент, который читает текст, написанный кем угодно. Класс атак, где недоверенный ввод дотягивается до такого агента или до секретов сборки, называют CI-инъекцией (clinejection). Ниже четыре реальных взлома 2025 года и то, что в каждом из них статически поймали бы agentpipe и agentpipe SaaS.

Что такое CI-инъекция и при чём здесь ИИ-агент

Инъекция в CI/CD-пайплайн начинается там, где обычный код-ревью её не ждёт. Сценарий сборки срабатывает на новую задачу или пул-реквест, заголовок этого события падает прямо в промпт ИИ-агента, а само задание держит npm-токен и право на публикацию. В итоге любой, кто открыл задачу, уже передал инструкции процессу, который может опубликовать ваш пакет или слить ключи. Никто ничего не нажимал. Это и есть clinejection: недоверенный триггер соединяется в одну цепочку с секретом.

Важно понять главное: защита от CI-инъекции начинается не в рантайме, а на код-ревью. Если заранее видно, что недоверенный триггер и секрет лежат в одной цепочке, её можно разорвать до того, как ей воспользуется атакующий. Ровно это и делает сканер безопасности CI/CD agentpipe: он статически прослеживает связь от точки входа до удара и показывает конкретный файл и строку.

01 точка входа

Недоверенный триггер

Заголовок задачи или пул-реквеста, комментарий, внешний пакет, чужой форк. Текст, который может написать кто угодно.

02 усиление

Шаг с широкими правами

Шаг с ИИ-агентом или действие в задании, у которого есть токены, доступ к облаку или права на запись.

03 удар

Секрет или публикация

Кража секретов в CI, публикация вредоносного релиза, доступ к приватным репозиториям и данным.

Взлом 1. Amazon Q Developer: враждебный пул-реквест внутри ИИ-агента

Июль 2025 года. Атакующий отправил пул-реквест в открытый репозиторий популярного расширения Amazon Q Developer для VS Code и внедрил в системный промпт ИИ-агента разрушительную инструкцию: очистить файловую систему и удалить облачные ресурсы пользователя. Пул-реквест прошёл ревью и попал в релиз, вредоносная версия успела разойтись по маркетплейсу на сотни тысяч установок, прежде чем её откатили. Это учебный пример промпт-инъекции в GitHub Actions и в цепочку сборки: недоверенный внешний участник дотянулся до агента с мощными правами.

что поймал бы agentpipe Здесь сработала классическая цепочка clinejection: вклад извне достигает шага с ИИ-агентом, у которого есть права на изменение системного поведения и на выпуск релиза. agentpipe помечает такую связь как предпосылку ещё на пул-реквесте и указывает точный шаг сценария сборки, где недоверенный ввод встречается с привилегией. Как исправить: отделить обработку внешнего вклада от шага с агентом, урезать права задания до минимума, проверять релиз отдельным доверенным этапом.

Источник: отчёты об инциденте с расширением Amazon Q Developer (VS Code Marketplace), июль 2025.

Взлом 2. GitHub MCP: публичная задача как команда агенту

Исследователи Invariant Labs показали в 2025 году живой сценарий кражи данных через GitHub MCP. Злоумышленник открывает публичную задачу со скрытыми инструкциями. ИИ-агент, подключённый к GitHub через MCP и имеющий доступ к приватным репозиториям, читает её как команду и послушно переносит приватные данные в публичный пул-реквест. Это каноническая CI/CD-инъекция: недоверенный триггер, шаг агента, утечка приватного содержимого. Атакующему не нужен ни один эксплойт в коде, ему хватает текста в задаче.

что поймал бы agentpipe agentpipe распознаёт сам приём, а не конкретную формулировку промпта: недоверенное событие (задача, комментарий) достигает шага агента, у которого есть доступ к приватным репозиториям и к записи. Он строит цепочку от триггера до чувствительного доступа и объясняет, что доказано, а что нет. Как исправить: не давать агенту, который читает публичные события, одновременный доступ к приватным репозиториям и к созданию пул-реквестов.

Источник: исследование Invariant Labs по промпт-инъекции через GitHub MCP, 2025.

Взлом 3. tj-actions/changed-files: секреты в публичных логах

Март 2025 года, CVE-2025-30066. Один из самых популярных GitHub Actions, tj-actions/changed-files, был скомпрометирован через подмену тега. Вредоносный код заставлял раннер выгружать содержимое памяти процесса, то есть секреты сборки, прямо в публичные логи. Под удар попали десятки тысяч репозиториев, которые подключали действие по плавающему тегу вместо фиксированного коммита. Это чистая атака на цепочку поставок CI/CD и массовая кража секретов в CI.

что поймал бы agentpipe agentpipe помечает две предпосылки этого взлома: стороннее действие, подключённое по изменяемому тегу (@v-что-то) вместо неизменяемого SHA, и наличие секретов в области видимости того же задания. Обе видны статически, до запуска. Как исправить: пиновать сторонние действия к полному SHA-коммиту, убирать секреты из заданий, которым они не нужны, включать проверку на каждом пул-реквесте.

Источник: NVD, CVE-2025-30066; разбор StepSecurity и Wiz, март 2025.

Взлом 4. s1ngularity / Nx: постинсталл, который искал секреты вашим же ИИ

Август 2025 года. В npm-пакет Nx попали вредоносные версии с постинсталл-скриптом, который собирал GitHub-токены, npm-токены, SSH-ключи и криптокошельки прямо на машинах разработчиков и в CI. Отдельно примечательно то, что скрипт использовал установленные локально ИИ-CLI, чтобы автоматически найти файлы с секретами. Это показало новую грань проблемы: агент и его конфигурация на машине сборки сами становятся частью атаки на цепочку поставок.

что поймал бы agentpipe Команда agentpipe local проверяет конфигурации ИИ-агентов на машине (например файлы вроде .claude.json и .mcp.json) и подсвечивает, где агент имеет доступ к токенам и секретам, которыми может воспользоваться недоверенный код. Это сужает поверхность до того, как её найдёт чужой постинсталл. Как исправить: изолировать сборку, хранить токены вне досягаемости постинсталл-скриптов, регулярно проверять локальные конфигурации агентов.

Источник: разборы инцидента s1ngularity / Nx (Wiz, StepSecurity, Socket), август 2025.

Что именно проверяют agentpipe и agentpipe SaaS

Это один движок в двух формах. Свободная версия agentpipe (CLI и GitHub Action, открытый код, лицензия MIT) даёт защиту от CI-инъекции прямо в вашем пайплайне: запускаете локально за две минуты или подключаете одним файлом, и на каждом пул-реквесте бот оставляет один комментарий с найденными цепочками. agentpipe SaaS ставится один раз на всю GitHub-организацию, следит за каждым репозиторием без единого файла сценария сборки и собирает все находки на одном дашборде.

Сценарийagentpipe (CLI и Action)agentpipe SaaS
Поиск цепочки clinejection на пул-реквестедада
Стороннее действие по плавающему тегу вместо SHAдада
Секрет в области видимости заданиядада
Проверка локальных конфигураций агентаagentpipe localна машинах
Единая картина по всем репозиториям организациинетда
Без файлов сценария сборки, установка в один кликнетда
Политика на весь парк репозиториев и дашборднетда

Честные границы

agentpipe показывает предпосылки, а не доказательство эксплуатации. Он статически анализирует GitHub Actions и конфигурации агентов, не запускает ваш агент и не останавливает промпт-инъекцию в момент атаки. Каждый отчёт заканчивается тем, что скан не видит, и именно там начинается настоящий пентест. Если нужен рубеж в рантайме, его закрывает Airlock, а честное подтверждение действий человеком берёт на себя Countersign. Вместе это — эшелонированная защита: agentpipe ловит цепочку заранее, Airlock и Countersign страхуют в момент выполнения.

Как начать за две минуты

Защита от CI-инъекции не требует внедрения на неделю. Поставьте CLI и просканируйте репозиторий:

pip install agentpipe-scan
agentpipe scan .        # проверить сценарии сборки этого репозитория
agentpipe local         # проверить конфигурации ИИ-агентов на машине

Понравилось на одном репозитории и хотите единую панель и политику на всю организацию? Подключите agentpipe SaaS, он бесплатен на время беты. Безопасность ИИ-агентов в CI/CD начинается с того, чтобы увидеть цепочку раньше атакующего.

Частые вопросы про защиту от CI-инъекции

Что такое CI-инъекция (clinejection)?

Это класс атак, где недоверенный ввод (заголовок задачи, пул-реквест, внешний пакет) дотягивается в одной цепочке до ИИ-агента или до секретов сборки. Атакующему не нужен эксплойт в коде, ему достаточно текста, который читает ваш пайплайн.

Чем agentpipe отличается от обычного линтера или сканера кода?

Линтер проверяет синтаксис сценария сборки или сам код. agentpipe прослеживает связь целиком: недоверенное событие, шаг агента, секрет, и показывает конкретный файл и строку. Он ищет цепочку, а не отдельную строку конфигурации.

agentpipe останавливает prompt injection (промпт-инъекцию) в момент атаки?

Нет. agentpipe работает статически и показывает предпосылки до запуска, он не выполняет ваш агент. Рубеж в рантайме закрывает Airlock, а честное подтверждение действий человеком берёт на себя Countersign.

Чем agentpipe SaaS полезнее свободной версии?

Движок один и тот же. agentpipe SaaS ставится один раз на всю GitHub-организацию, следит за каждым репозиторием без файлов сценария сборки и собирает все находки на одном дашборде с политикой на весь парк репозиториев. Свободная версия (CLI и Action) защищает отдельный репозиторий.

Это правда бесплатно?

CLI и GitHub Action бесплатны и с открытым кодом навсегда (MIT). agentpipe SaaS бесплатен на время беты с разумными лимитами.

← назад в блог