Автономный AI-инструмент Wiz Research под названием Red Agent нашёл критическую уязвимость в GitHub Actions workflow публичного репозитория Snowflake snowflakedb/snowflake-connector-net. Проблема позволяла любому неаутентифицированному пользователю выполнять произвольные команды в GitHub Actions runner — достаточно открыть issue с особым заголовком. Уязвимость появилась за пять дней до обнаружения, 18 июня 2026 года, в коммите 4a1b8ce (PR #1218 «SNOW-2069227: Update jira workflows»), соавтором которого значится Copilot Autofix powered by AI. AI-ассистент удалил прежний безопасный паттерн — передачу заголовка через переменную env и сборку JSON через jq — и заменил его прямой подстановкой ${{ github.event.issue.title }} в shell-скрипт.
Workflow jira_issue.yml срабатывал на событие issues: opened, так что запустить его мог кто угодно. Экранирование через sed выполнялось уже после подстановки GitHub, поэтому одинарная кавычка в заголовке вырывалась из echo '...' и открывала путь к произвольным командам. В workflow был if-блок, который выглядел защитным: он проверял, что логин пользователя не равен whitesource-for-github-com[bot]. Но для issues-событий github.event.pull_request всегда null, условие сводилось к null != 'whitesource-for-github-com[bot]' и пропускало всех.
Red Agent сформировал заголовок, который ломал строку echo и уводил Jira-токен на внешний сервер через out-of-band колбэк. Первая попытка с символом # провалилась: комментарий съел закрывающую скобку TITLE=$(...), и bash выдал ошибку. Инструмент сам проанализировал ошибку, переписал payload с ; echo ' и получил колбэк с runner на Azure IP 20.106.182.197 — там были base64-закодированные учётные данные Jira. Токен авторизовался как qa@snowflake.net в snowflakecomputing.atlassian.net и открывал чтение инженерных проектов, security compliance и bug bounty трекинга Snowflake.
Wiz ответственно сообщил об уязвимости через HackerOne (отчёт #3819931) 23 июня 2026 года. Snowflake в тот же день закрыл дыру коммитом 1dc7766 (PR #1402), вернув безопасный env + jq --arg паттерн, а 24 июня отозвал и заменил Jira-токен. Аудит логов подтвердил: за пять дней уязвимости к эндпоинту никто кроме Wiz не обращался, все аномальные запросы совпали с тестовыми IP Wiz. Snowflake поблагодарил исследователей за ответственное раскрытие и заявил, что следов несанкционированного доступа нет.
Главный урок: AI-генерация кода требует строгой проверки. Модели предсказывают код по вероятностным паттернам и могут случайно вернуть устаревшие небезопасные конструкции, поэтому AI-сгенерированные PR нужно прогонять через тот же статический анализ, что и обычный код. Уязвимость прожила всего пять дней до автоматического обнаружения — защита должна быть готова к атакам за часы, нужны быстрые патчи и короткоживущие учётные данные. Ассистентам не хватает исторического контекста о том, почему код написан так, а не иначе, поэтому нужны guardrails, блокирующие замену структурированных парсеров прямой строковой интерполяцией.