Угрозы

В Gemini CLI закрыли критическую уязвимость: CI/CD мог выполнить чужую команду из pull request

Маша Даровская
By Маша Даровская , IT-редактор и автор
В Gemini CLI закрыли критическую уязвимость: CI/CD мог выполнить чужую команду из pull request
Обложка © Anonhaven

Google выпустила исправления для Gemini CLI и GitHub Action run-gemini-cli после критической уязвимости с оценкой 10 из 10 по CVSS. Проблема получила идентификатор GHSA-wpqr-6v78-jr5g, CVE для неё пока не назначен. Под удар попадали сценарии, где Gemini CLI запускался в автоматическом режиме внутри CI/CD, например при проверке pull request.

Суть бага — в доверии к рабочей папке. Старые версии Gemini CLI в headless-режиме автоматически считали текущий каталог безопасным и могли загружать локальные настройки из .gemini/, включая переменные окружения. Если злоумышленник мог добавить файлы в рабочую директорию через pull request или другой недоверенный ввод, это открывало путь к удалённому выполнению команд на хосте CI/CD.

Отдельно исправили поведение режима --yolo: раньше при его использовании Gemini CLI мог игнорировать детальный список разрешённых инструментов. При наличии run_shell_command это создавало риск выполнения лишних команд через prompt injection в workflow, работающих с недоверенным содержимым.

Исправления вышли в @google/gemini-cli 0.39.1, 0.40.0-preview.3 и google-github-actions/run-gemini-cli 0.1.22. Версии ниже этих релизов считаются уязвимыми. Пользователям, которые закрепляли конкретную версию Gemini CLI через gemini_cli_version, нужно обновить её вручную и проверить настройки workflow.

Gemini CLI GitHub Actions используется для автоматической проверки pull request, сортировки issues и задач по команде @gemini-cli в репозитории. Инструмент работает с контекстом проекта и может вызывать внешние CLI, включая GitHub CLI, поэтому ошибка в модели доверия сразу становится риском для цепочки поставки кода.

При успешной эксплуатации атакующий получает доступ к секретам CI/CD (tokens, credentials); приватному исходному коду; инфраструктуре сборки; возможностям изменения билдов и артефактов. Такие атаки опасны тем, что распространяются дальше — через зависимости, пакеты и обновления.

Рекомендации для команд: обновить пакеты, проверить workflow с Gemini CLI, включить явное доверие только для проверенных источников, не запускать агента с правами шире нужных, хранить ключи в GitHub Secrets, использовать Workload Identity Federation там, где это возможно, и закреплять версии Action. Эти меры уже есть в официальных рекомендациях проекта по безопасной эксплуатации.

Gemini CLI — не первый случай. Ранее исследователи демонстрировали как AI-CLI-агенты могут выполнять команды через prompt injection, читать локальные файлы и переменные, выполнять скрытые инструкции из README или конфигураций. Новая уязвимость показывает следующий этап — атаки уже идут через CI/CD и цепочки поставок.

ИИ-агенты в CI/CD нужно защищать как полноценные исполняемые компоненты, а не как «умные комментарии к коду». Агент, который читает pull request и может запускать команды, фактически становится частью сборочного контура.

Уязвимость касается:

  • @google/gemini-cli до версии 0.39.1

  • GitHub Action run-gemini-cli до версии 0.1.22

Риск максимален в автоматизированных средах без ручного контроля — GitHub Actions, CI runners, build-серверы.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.

Вопросы по теме

Что случилось?
В Gemini CLI нашли критическую уязвимость, которая могла привести к удалённому выполнению команд в CI/CD.
Какие версии опасны?
@google/gemini-cli ниже 0.39.1 и 0.40.0-preview.3, а также run-gemini-cli ниже 0.1.22.
Кому нужно срочно провериться?
Командам, которые запускают Gemini CLI в GitHub Actions, особенно для проверки pull request и обработки issues от внешних участников.
Это prompt injection?
Частично риск затрагивал prompt injection в режиме --yolo, но основная проблема была глубже: CLI автоматически доверял рабочей папке в headless-режиме.