Изменение, внесённое 18 июня 2026 года в публичный репозиторий snowflakedb/snowflake connector net, напрямую подставляло заголовок Issue в shell команду GitHub Actions. Уязвимость затрагивала CI/CD автоматизацию, а не выпущенный .NET коннектор Snowflake.
Ответ на исследование

Create a landscape editorial hero image for this Studio Global article: How did GitHub’s Copilot Autofix AI introduce a shell-injection vulnerability into Snowflake’s public .NET connector repository, how did Wiz. Article summary: The incident was a GitHub Actions workflow injection in Snowflake’s public `snowflake-connector-net` repository, not a flaw in the .NET connector’s shipped runtime code. A June 18, 2026 change in PR #1218 made an issue t. Topic tags: general, general web, user generated. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fa
Инцидент Snowflake был связан с уязвимостью внедрения команд в workflow GitHub Actions публичного репозитория snowflakedb/snowflake-connector-net, а не с программной уязвимостью в .NET-коннекторе, который поставляется клиентам. Изменение, слитое 18 июня 2026 года, поместило контролируемый атакующим заголовок GitHub Issue внутрь shell-команды. Через пять дней автономный Red Agent компании Wiz обнаружил слабое место и использовал его в рамках санкционированного теста HackerOne, чтобы извлечь учётные данные внутреннего Jira Snowflake.
Уязвимый код находился в .github/workflows/jira_issue.yml — workflow запускался при открытии нового GitHub Issue. Pull request № 1218 с названием «SNOW-2069227: Update Jira workflows» заменил более безопасный подход: заголовок Issue передавался через переменную окружения, а JSON формировался с помощью jq. В новой версии значение ${{ github.event.issue.title }}run:.
Это различие оказалось критичным. GitHub раскрывает выражение до того, как команду начинает выполнять shell. Поэтому вредоносный заголовок с одинарной кавычкой мог закрыть предусмотренную строку и добавить произвольные shell-команды. Последующая обработка значения с помощью sed уже не могла отменить произошедшую ранее интерпретацию shell.
Триггер issues: opened
В squash-коммите «Copilot Autofix powered by AI» был указан как соавтор, однако ИИ-проверка не обнаружила проблему. При этом имеющиеся данные не позволяют установить, сгенерировал ли Copilot небезопасное изменение или проверял код, написанный человеком. Корректнее говорить, что Copilot был связан с этим изменением и не выявил внедрение команд, а не утверждать, что авторство модели доказано.
Red Agent сканировал публичную GitHub-организацию Snowflake в поисках опасных шаблонов в CI/CD. Он определил, что workflow Jira передаёт недоверенные данные в shell-блок run:, и сделал вывод: специально сформированный заголовок публичного Issue может привести к выполнению произвольных команд на runner GitHub Actions.
23 июня — через пять дней после слияния уязвимого изменения — агент открыл специально подготовленный Issue в рамках программы Snowflake по поиску уязвимостей на HackerOne. Заголовок вышел за пределы shell-строки, после чего workflow отправил учётные данные Jira на контролируемый внешний callback, использованный для подтверждения концепции атаки.
Это был санкционированный тест безопасности, а не неконтролируемое проникновение. Но сама проблема была реальной: публичный Issue позволял добраться до шага workflow, обрабатывавшего учётные данные, и превратить обычное создание Issue в выполнение команд.
Скомпрометированный workflow имел доступ к настройкам внутреннего Jira Snowflake, включая URL Jira, адрес пользователя и API-токен. Извлечённый токен был связан с учётной записью qa@snowflake.net. Wiz использовала его для входа во внутренний портал Jira и оценки потенциального масштаба доступа.
Согласно сообщениям, токен обеспечивал чтение проектов Jira, связанных с инженерной работой, соответствием требованиям безопасности и активностью bug bounty. Переданные материалы не устанавливают полный набор разрешений токена и не содержат окончательного перечня всех доступных записей. Поэтому наиболее точный вывод состоит в том, что токен позволял получить доступ к чувствительным внутренним данным Jira, но не подтверждает неограниченный доступ к системам Snowflake.
Уязвимым компонентом была CI/CD-автоматизация репозитория. О затронутой выпущенной версии Snowflake Connector for .NET не сообщалось: проблема находилась в workflow GitHub Actions, а не в исполняемом коде самого коннектора.
Wiz сообщила об уязвимости 23 июня. Snowflake исправила workflow в тот же день, а на следующий день сменила раскрытые учётные данные Jira.
Затем Snowflake изучила журналы аудита и пришла к выводу, что в период потенциального доступа единственным действовавшим участником была Wiz. Компания также заявила, что Wiz безопасно удалила данные, полученные в рамках proof of concept.
О несанкционированном доступе третьих лиц, присвоении CVE или затронутом выпуске коннектора не сообщалось. Эти ограничения описывают подтверждённые последствия инцидента, но не делают исходную конструкцию workflow безопасной. Заголовок публичного Issue не должен был становиться частью shell-команды в workflow, работавшем с внутренними учётными данными.
Практический вывод выходит далеко за рамки Snowflake и Copilot. Заголовки Issues и pull request’ов, имена веток и комментарии следует считать потенциально вредоносными данными всякий раз, когда они попадают в shell-команду.
Более безопасная конструкция workflow предполагает:
run:;jq для формирования JSON вместо сборки shell-строк;Этот случай наглядно показывает новую проблему безопасности: одна ИИ-система, помогающая писать и проверять код, может пропустить опасное изменение в CI/CD, а автономный атакующий агент — найти и подтвердить его за несколько дней. Автоматизация ускоряет и исправление, и эксплуатацию уязвимостей, но не заменяет независимую проверку.
Studio Global AI
На этой странице есть ответ, подтвержденный источником, который вы можете продолжить внутри Studio Global.
Изменение, внесённое 18 июня 2026 года в публичный репозиторий snowflakedb/snowflake connector net, напрямую подставляло заголовок Issue в shell команду GitHub Actions.
Изменение, внесённое 18 июня 2026 года в публичный репозиторий snowflakedb/snowflake connector net, напрямую подставляло заголовок Issue в shell команду GitHub Actions. Уязвимость затрагивала CI/CD автоматизацию, а не выпущенный .NET коннектор Snowflake.
Коммит указывал «Copilot Autofix powered by AI» как соавтора, но доступные данные не доказывают, что именно Copilot написал небезопасный фрагмент.