ИИ-«автофикс» Copilot открыл дыру в Jira компании Snowflake
Исследователи из Wiz описали показательный инцидент: уязвимость в публичном репозитории Snowflake создал не человек, а ИИ-помощник GitHub Copilot Autofix. Обнаружил и подтвердил её тоже автомат — автономный «Red Agent» самой Wiz, работавший в рамках программы раскрытия уязвимостей на HackerOne.
Как «исправление» стало дырой
18 июня 2026 года в репозитории snowflake-connector-net появился коммит, соавтором которого значился Copilot Autofix. ИИ убрал уже существовавший безопасный приём — заголовок GitHub-issue передавался через переменную окружения, а JSON собирался утилитой jq --arg — и заменил его на прямую подстановку ${{ github.event.issue.title }} в shell-скрипт. Экранирование через sed при этом запускалось уже после подстановки шаблона GitHub, так что одна кавычка в заголовке выводила из строки echo и позволяла выполнить произвольную команду.
Рабочий процесс срабатывал при открытии любой issue, то есть запустить его мог кто угодно. Имевшееся условие if:, выглядевшее как защита, на деле проверяло github.event.pull_request — поле, которое для событий issue всегда пусто, поэтому проверку проходили все без исключения.
Агент, который сам починил свой эксплойт
Wiz Red Agent просканировал GitHub-организацию Snowflake, пометил workflow как уязвимый и собрал заголовок issue, крадущий учётные данные Jira через внешний callback. Любопытная деталь: первая попытка использовала символ комментария #, из-за чего runner выдал синтаксическую ошибку bash — комментарий «съел» закрывающую скобку. Агент не остановился: он сам разобрал ошибку, переписал полезную нагрузку через ; echo ' и в считаные секунды получил обратный вызов с base64-закодированными данными.
Похищенный токен принадлежал учётной записи qa@snowflake.net и давал доступ на чтение к внутренним проектам Jira — инженерным, по комплаенсу и по bug bounty.
Реакция и выводы
Snowflake отреагировала в тот же день, 23 июня: закрыла уязвимость, вернув безопасный шаблон с env: и jq, а на следующий день отозвала и заменила токен. Аудит подтвердил, что за пятидневное окно к эндпоинту обращалась только Wiz, а все тестовые данные были удалены.
Wiz формулирует три урока. Код, сгенерированный ИИ, должен проходить тот же статический анализ и проверку безопасности, что и написанный человеком. Окно между появлением уязвимости и её автоматическим обнаружением стремительно сжимается — здесь оно составило всего пять дней, что требует коротких сроков жизни секретов и быстрых патчей. Наконец, ИИ-помощники не знают истории кода и потому охотно возвращают опасные шаблоны, которые люди когда-то намеренно устранили, — против этого нужны отдельные защитные механизмы.
Источник: Hacker News
Комментарии
Войдите, чтобы комментировать.