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):
Кто может запускать воркфлоу? Ограничьте триггеры доверенными событиями (например, пушами в защищенные ветки) или требуйте явного одобрения для запусков, инициированных внешними контрибьюторами. Избегайте
on: issue_commentилиon: issuesбез дополнительных механизмов контроля.Какие секреты загружаются в том же задании (job)? Никогда не передавайте API-ключи, облачные токены или учетные данные сервисных аккаунтов в задании, в котором также запускается ИИ-агент с неограниченным доступом к shell. Разделите шаги, содержащие много секретов, на изолированные задания или раннеры, которые не вызывают ИИ-инструменты.
Дополнительные меры по усилению защиты:
- Удалите флаг, пропускающий запросы разрешений, чтобы заставить ИИ-инструмент запрашивать явное подтверждение перед выполнением shell-команд.
- Добавьте шаг, который очищает или маскирует любые переменные окружения, которые может прочитать ИИ-инструмент.
- Используйте self-hosted раннеры с контролем исходящего сетевого трафика, чтобы заблокировать эксфильтрацию данных на произвольные эндпоинты.
Контраргумент: полезность ИИ в CI
Сторонники утверждают, что рост производительности перевешивает риски. Автоматизированные предложения кода сокращают время ревью, а тестирование на базе ИИ позволяет выявлять баги на ранних этапах. Тем не менее, то же самое удобство расширяет поверхность атаки. Ключ не в том, чтобы отказаться от ИИ, а в том, чтобы относиться к любому инструменту с привилегиями уровня shell как к потенциальному вектору атаки.
На что обратить внимание в дальнейшем
Эти выводы уже вызвали дискуссии на форумах безопасности GitHub относительно ужесточения разрешений по умолчанию для Actions с поддержкой ИИ. Будущие обновления платформы могут включать:
- Флаг, принуждающий инструменты ИИ работать в изолированной среде (песочнице) без прямого доступа к shell.
- Встроенное обнаружение паттернов prompt-инъекций в описаниях issue или комментариях.
- Автоматические оповещения в случаях, когда workflow смешивает публичные триггеры с задачами, содержащими секреты.
На данный момент ответственность лежит на мейнтейнерах репозиториев. 22 выявленных репозитория показывают, что проблема не является единичной; любой проект, использующий аналогичный паттерн workflow, уязвим. Быстрый аудит конфигураций CI может помочь выявить проблему раньше, чем это сделает злоумышленник.
Итог: Одна строка текста в публичном issue на GitHub может дать ИИ-агенту полный контроль над вашей CI-средой и позволить украсть хранящиеся там секреты. Проверяйте, кто может запускать ваши workflow, не допускайте использования секретов в шагах, управляемых ИИ, и тщательно проверяйте каждый флаг, предоставляющий неконтролируемые разрешения. Цена утечки данных значительно превышает усилия, необходимые для проведения тщательной проверки.
