Google ADK: промпт-инжект заставлял ИИ-агента атаковать собственный репозиторий
Google Agent Development Kit, опенсорсный фреймворк компании для сборки ИИ-агентов, скачали уже больше 90 миллионов раз. При этом проблемы, которые нашла в его репозитории команда Pillar Security, касаются не самого кода, а автоматизации сопровождения проекта на GitHub. И уязвимость оказалась не одна, а целых две.
Первая связана с тем, как устроены пул-реквесты в репозитории ADK. Злоумышленник мог открыть PR с настоящим исправлением, внутри которого спрятан вредоносный код, а следом создать второй PR, где прятался промпт-инжект. Автоматизированный агент на базе Gemini, проверявший изменения, рано или поздно «съедал» подсунутую инструкцию. Дальше атакующий получал GitHub-токен и мог уже сам менять комментарии, issues и пул-реквесты, отклонять чужие ревью, одобрять изменения и запускать GitHub Actions.
Хуже того, этой схемой легко фабриковалась полностью поддельная история проверки: в логах всё выглядело так, будто человек запросил ревью, Gemini изучил код и одобрил его. На самом деле ничего этого не было.
Второй вариант атаки оказался опаснее. Он затрагивал воркфлоу на базе Antigravity SDK, где публичный агент автоматически разбирал новые issues и оставлял комментарии. Через промпт-инжект в issue агента можно было заставить выполнить произвольные действия. Работал он в окружении, где лежали токен бота, API-ключ Google и учётные данные сервисного аккаунта. С такими правами агент мог менять содержимое репозитория, создавать ветки и пул-реквесты.
Разработчики воркфлоу пытались ограничить агента, разрешив ему только команды gh и git. Но ему оставили возможность записывать файлы, а этого хватило: вредоносный пейлоад сохранялся на диск и выполнялся.
Хорошая новость в том, что скомпрометированных релизов ADK эксперты не нашли, следов эксплуатации этих багов в реальных атаках тоже. Инженеры Google уже усилили защиту репозитория и удалили три проблемных воркфлоу.
Вывод исследователей, если коротко, простой: изоляции агентов больше недостаточно. У каждого бота должна быть собственная учётная запись с минимально необходимыми правами и жёсткими ограничениями на доступ к ресурсам. Иначе одна удачно подсунутая инструкция превращает помощника в инструмент для взлома собственного проекта.
Вопрос по практике: почему у проверяющего агента вообще был токен с правами запускать Actions и отклонять ревью? Обычно для таких ботов заводят отдельную учётку с минимальными правами, а тут, судя по описанию, одного промпт-инжекта хватило, чтобы получить контроль над репозиторием. Или агент работал под обычной учёткой человека?