GitHub Copilot Autofix внёс уязвимость в Snowflake, её взломал автономный ИИ-агент Wiz

Исследовательская компания Wiz опубликовала разбор инцидента: её автономный инструмент «Red Agent» самостоятельно нашёл и использовал критическую уязвимость в публичном репозитории Snowflake snowflakedb/snowflake-connector-net, и сделал это без участия человека, за пять дней с момента появления дыры. Уязвимость появилась 18 июня 2026 года, когда был слит PR #1218: финальный squash-коммит указывает соавтором «Copilot Autofix powered by AI». Автофикс заменил безопасный паттерн обработки входных данных (передачу заголовка issue через переменную env: и сборку JSON через jq) на прямую строковую подстановку ${{ github.event.issue.title }} в shell-скрипте, это и открыло инъекцию команд. ИИ-ревью безопасности от GitHub этой критической проблемы не заметило.
Уязвимый workflow-файл jira_issue.yml запускался на событие «issue opened», то есть любой пользователь GitHub мог инициировать его, открыв issue со специально составленным заголовком. Формальное условие-«шлюз» в workflow должно было ограничивать запуск, но на события issues поле github.event.pull_request всегда равно null, поэтому условие фактически всегда истинно и пропускает любого.
Red Agent от Wiz составил заголовок issue, который после подстановки GitHub вырывался из строки echo и отправлял через внешний callback учётные данные Jira. Первая попытка с символом-комментарием # привела к синтаксической ошибке bash (комментарий «съедал» закрывающую скобку конструкции TITLE=$(...)); агент самостоятельно проанализировал ошибку выполнения и переделал полезную нагрузку, использовав «; echo '» для корректного закрытия shell-блока. Через несколько секунд слушатель Wiz получил callback с раннера GitHub Actions (Azure IP 20.106.182.197) с закодированными в base64 учётными данными.
Похищенный токен авторизовался как qa@snowflake.net на snowflakecomputing.atlassian.net и давал доступ на чтение к внутренним проектам Snowflake, инжинирингу, безопасности/комплаенсу и трекингу bug bounty. Находка была сделана в рамках программы раскрытия уязвимостей Snowflake на HackerOne: Wiz сообщила о проблеме 23 июня 2026 года, и в тот же день Snowflake устранила уязвимость (коммит 1dc7766, PR #1402, вернувший безопасный паттерн env: + jq --arg), а 24 июня ротировала скомпрометированный токен. Разбор журналов аудита подтвердил, что кроме Wiz никто извне доступа к системе за пять дней экспозиции не получал; все данные, собранные Wiz в ходе тестирования, были удалены.
17 августа 2026 года Wiz обновила текст блога, уточнив роль Copilot: функция была соавтором, который проверил слитый PR и изменения кода и пометил их как «всё чисто», не заметив критической уязвимости; при этом неясно, был ли сам изменённый код написан с помощью ИИ. В качестве выводов Wiz указывает: ИИ-сгенерированные PR должны проходить тот же статический анализ и проверку безопасности, что и код человека; окно от появления уязвимости до автоматического обнаружения сжимается до часов, что требует более быстрых циклов патчей и короткоживущих учётных данных; нужны защитные механизмы (guardrails), блокирующие замену ИИ-агентами структурированных парсеров данных прямой строковой интерполяцией.
Ключевые факты
- Функция GitHub Copilot Autofix соавторски внесла PR #1218 (слит 18 июня 2026), заменивший безопасный паттерн env:+jq на прямую строковую интерполяцию, так появилась инъекция команд в GitHub Actions; ИИ-ревью безопасности от GitHub эту критическую проблему не заметило.
- Автономный «Red Agent» компании Wiz независимо нашёл и использовал уязвимость через пять дней, без участия человека: составил вредоносный заголовок issue, столкнулся с синтаксической ошибкой bash, сам проанализировал её и переделал payload, чтобы завершить эксплуатацию.
- Похищенный токен давал доступ на чтение к внутренним проектам Snowflake в Jira (инжиниринг, безопасность/комплаенс, bug bounty); Snowflake устранила уязвимость в тот же день, что и получила отчёт (23 июня 2026), на следующий день ротировала токен и подтвердила аудитом, что кроме Wiz доступа не было.
- 17 августа 2026 года Wiz уточнила формулировку: подтверждена лишь роль Copilot Autofix как соавтора, проверившего слитый PR и не заметившего уязвимость; был ли сам изменённый код написан ИИ, неизвестно.
Почему это важно
Инцидент демонстрирует обе стороны ИИ в разработке сразу: инструмент автопочинки и проверки кода (Copilot Autofix) может незаметно внести критическую уязвимость и не заметить её при собственном ревью, а независимый автономный ИИ-агент безопасности способен найти и использовать такую дыру за часы, без участия человека. Окно от появления уязвимости до её обнаружения в этом случае сократилось до пяти дней.
Кому это важно
Командам, которые полагаются на ИИ-автопочинку кода и ИИ-ревью pull request'ов в CI/CD; инженерам по безопасности, работающим с workflow-файлами GitHub Actions; а также компаниям, использующим или разрабатывающим автономные ИИ-агенты для поиска уязвимостей (red teaming).
Как это применить
Wiz формулирует рекомендации прямо: PR, сгенерированные или проверенные ИИ, должны проходить тот же статический анализ и ту же проверку безопасности, что и код человека; нужны защитные механизмы (guardrails), которые не дают ИИ-агентам заменять структурированные парсеры данных (env: + jq) прямой строковой интерполяцией в shell-скриптах; короткоживущие учётные данные и быстрые циклы патчей становятся необходимостью, раз автоматическое обнаружение уязвимостей теперь занимает часы, а не месяцы.
Можно ли доверять
Источник, блог самой Wiz, компании-исследователя, обнаружившей уязвимость по программе HackerOne; факты подкреплены техническими деталями (конкретный workflow-файл, хэши коммитов PR #1218 и PR #1402, IP-адрес раннера, точный таймлайн по датам) и подтверждением самой Snowflake, что расследование и патч состоялись. 17 августа 2026 года Wiz сама уточнила формулировку: неизвестно, был ли ИИ-ассистированным сам изменённый код, подтверждена только роль Copilot Autofix как соавтора, проверившего PR и не заметившего проблему.
Риски и подводные камни
Похищенный токен давал доступ на чтение к внутренним проектам Snowflake, инжинирингу, безопасности/комплаенсу и bug bounty, в течение пяти дней, пока уязвимость оставалась незамеченной; в источнике сказано, что кроме Wiz доступа к системе никто не получал, но сам механизм, ИИ-инструмент правки кода тихо убирает проверенную защиту от инъекций, а ИИ-ревью это пропускает, способен повториться в любом репозитории, где используются автоматические ИИ-ревью и автофиксы кода.
«Этот инцидент подчёркивает новую реальность разработки ПО: критические уязвимости всё ещё могут появляться и одобряться в процессах с участием ИИ-агентов для написания кода, тогда как автономные ИИ-агенты безопасности способны быстро находить и использовать их в реальных условиях.»
— Wiz Research