GitHub Actions с поддержкой ИИ могут быть взломаны всего одним комментарием, что приводит к утечке API-ключей, облачных токенов и других секретов. Исследователь безопасности обнаружил 22 open-source репозитория, где сочетание публичного триггера, инструмента ИИ, запущенного с флагом «skip prompts», и открытых секретов создает прямой путь для эксфильтрации данных.

Как работает эта уязвимость

Проекты теперь внедряют ИИ-агентов — Claude Code, GitHub Copilot CLI и подобные инструменты — непосредственно в CI-конвейеры. Шаг воркфлоу выполняет shell-команду и часто добавляет флаг, который приказывает инструменту игнорировать интерактивные запросы разрешений. Когда воркфлоу запускается на основе любого публичного ввода — issue, комментария или заголовка pull-request — злоумышленнику достаточно отправить строку текста, которую ИИ воспримет как команду.

ИИ, уже получивший неограниченный доступ к shell благодаря флагу «skip prompts», считывает любые переменные окружения или файлы, которые открывает воркфлоу. Если задание также загружает секреты — API-ключи, токены облачных сервисов или полные учетные данные сервисных аккаунтов — ИИ перенаправляет эти значения на сервер, контролируемый злоумышленником. Никаких изменений кода, никаких новых зависимостей — просто безобидный на вид комментарий.

Реальные примеры

Исследователь подтвердил наличие трех уязвимых репозиториев, которые уже были исправлены:

  • pymc-labs/pymc-marketing — через prompt injection можно было получить доступ к ключу Anthropic API через публичный issue.
  • MadAppGang/dingo — воркфлоу предоставлял Claude Code полный доступ к Bash и раскрывал два секрета в том же задании.
  • MadAppGang/claudish — использовал тот же уязвимый шаблон, что и проект dingo.

Один из случаев касался активного ключа аккаунта облачного сервиса, о чем исследователь сообщил напрямую команде безопасности крупного поставщика ИИ. Еще двенадцать отчетов находятся на рассмотрении у мейнтейнеров; их имена не разглашаются до момента выпуска исправлений.

Что стоит на кону

Когда злоумышленник извлекает секрет, ущерб может быть мгновенным и дорогостоящим. Ключ аккаунта облачного сервиса предоставляет неограниченный доступ к вычислительным ресурсам, бакетам хранилищ и другим платным сервисам. API-ключ провайдера больших языковых моделей может выполнять неограниченное количество запросов, что потенциально может привести к расходам в тысячи долларов. Поскольку эксплойт запускается внутри среды CI, утечка может распространиться дальше: любой артефакт, собранный на скомпрометированном раннере, может содержать вредоносный код, превращая один репозиторий в вектор атаки на цепочку поставок.

Для команд, полагающихся на CI с поддержкой ИИ, компромисс очевиден. Удобство автогенерации кода, линтинга или документации должно сопоставляться с риском того, что публичный комментарий станет скрытым бэкдором.

Почему эту уязвимость легко пропустить

Исследователь изначально подал шесть отчетов, которые позже были отозваны. Отзыв был вызван предположениями о проверках разрешений GitHub Actions, а не пошаговым анализом исходного кода Action. Документация и интуиция могут вводить в заблуждение; единственный надежный способ подтвердить безопасность шага с поддержкой ИИ — это изучить код, запускающий инструмент, и YAML-файл воркфлоу, который связывает его с системой.

Чек-лист по устранению уязвимости

Если вы запускаете ИИ-CLI или аналогичный инструмент внутри воркфлоу GitHub Actions, ответьте на эти два вопроса перед слиянием (merge):

  1. Кто может запускать воркфлоу? Ограничьте триггеры доверенными событиями (например, пушами в защищенные ветки) или требуйте явного одобрения для запусков, инициированных внешними контрибьюторами. Избегайте on: issue_comment или on: issues без дополнительных механизмов контроля.

  2. Какие секреты загружаются в том же задании (job)? Никогда не передавайте API-ключи, облачные токены или учетные данные сервисных аккаунтов в задании, в котором также запускается ИИ-агент с неограниченным доступом к shell. Разделите шаги, содержащие много секретов, на изолированные задания или раннеры, которые не вызывают ИИ-инструменты.

Дополнительные меры по усилению защиты:

  • Удалите флаг, пропускающий запросы разрешений, чтобы заставить ИИ-инструмент запрашивать явное подтверждение перед выполнением shell-команд.
  • Добавьте шаг, который очищает или маскирует любые переменные окружения, которые может прочитать ИИ-инструмент.
  • Используйте self-hosted раннеры с контролем исходящего сетевого трафика, чтобы заблокировать эксфильтрацию данных на произвольные эндпоинты.

Контраргумент: полезность ИИ в CI

Сторонники утверждают, что рост производительности перевешивает риски. Автоматизированные предложения кода сокращают время ревью, а тестирование на базе ИИ позволяет выявлять баги на ранних этапах. Тем не менее, то же самое удобство расширяет поверхность атаки. Ключ не в том, чтобы отказаться от ИИ, а в том, чтобы относиться к любому инструменту с привилегиями уровня shell как к потенциальному вектору атаки.

На что обратить внимание в дальнейшем

Эти выводы уже вызвали дискуссии на форумах безопасности GitHub относительно ужесточения разрешений по умолчанию для Actions с поддержкой ИИ. Будущие обновления платформы могут включать:

  • Флаг, принуждающий инструменты ИИ работать в изолированной среде (песочнице) без прямого доступа к shell.
  • Встроенное обнаружение паттернов prompt-инъекций в описаниях issue или комментариях.
  • Автоматические оповещения в случаях, когда workflow смешивает публичные триггеры с задачами, содержащими секреты.

На данный момент ответственность лежит на мейнтейнерах репозиториев. 22 выявленных репозитория показывают, что проблема не является единичной; любой проект, использующий аналогичный паттерн workflow, уязвим. Быстрый аудит конфигураций CI может помочь выявить проблему раньше, чем это сделает злоумышленник.

Итог: Одна строка текста в публичном issue на GitHub может дать ИИ-агенту полный контроль над вашей CI-средой и позволить украсть хранящиеся там секреты. Проверяйте, кто может запускать ваши workflow, не допускайте использования секретов в шагах, управляемых ИИ, и тщательно проверяйте каждый флаг, предоставляющий неконтролируемые разрешения. Цена утечки данных значительно превышает усилия, необходимые для проведения тщательной проверки.