В GitHub Actions Snowflake нашли инъекцию команд через публичные issues

Ошибка в CI/CD-автоматизации репозитория Snowflake Connector for .NET позволяла выполнить команды в workflow, где были доступны учётные данные Jira. Snowflake заявила, что не обнаружила признаков несанкционированного доступа.

В GitHub Actions Snowflake нашли инъекцию команд через публичные issues

Исследователи Wiz обнаружили уязвимость в публичном репозитории snowflakedb/snowflake-connector-net. Специально сформированная задача в GitHub Issues могла привести к выполнению команд в GitHub Actions workflow, которому были доступны переменные с учётными данными Jira.

Проблема находилась в файле .github/workflows/jira_issue.yml и срабатывала при создании публичного issue. Заголовок и текст задачи, контролируемые её автором, напрямую подставлялись в shell-блок run:. Кроме того, workflow проверял свойство, относящееся к pull request, хотя запускался событием issue. По документации GitHub, обращение к несуществующему свойству даёт пустую строку, поэтому проверка не блокировала выполнение задания для обычной задачи.

По данным Wiz, в ходе согласованного тестирования их система Red Agent добилась обратного соединения с runner GitHub Actions и получила Jira API-токен, доступный workflow. Исследователи утверждают, что токен был привязан к адресу qa@snowflake.net и позволял читать данные Jira-проектов, связанных с разработкой, соответствием требованиям безопасности и bug bounty, на snowflakecomputing.atlassian.net. Публично проверить права токена, журналы запусков и аудит Jira нельзя.

Wiz сообщила Snowflake об уязвимости через HackerOne 23 июня 2026 года. В тот же день компания внесла исправление: вместо прямой подстановки выражений GitHub в shell-скрипт данные передаются через переменные окружения и аргументы jq. Уязвимый workflow попал в основную ветку 18 июня, то есть был доступен пять дней. По сведениям Wiz, токен отозвали 24 июня.

Snowflake заявила, что её расследование не выявило признаков несанкционированного доступа. Также, по данным Wiz, проверка компании не обнаружила внешнего использования этого токена за пределами проведённого исследования. Доступные материалы не подтверждают эксплуатацию уязвимости злоумышленниками или компрометацию клиентов.

Ошибка касалась автоматизации репозитория, а не опубликованных версий Snowflake Connector for .NET. Для неё не указаны CVE и оценка CVSS, а исправленный код остаётся в ветке master.

Wiz связала появление проблемы с изменениями в pull request, среди соавторов которого был указан Copilot Autofix. Однако история коммитов не подтверждает, что именно Copilot написал уязвимые строки: явно помеченный как соавторский коммит Copilot изменял другой workflow, тогда как небезопасная переработка jira_issue.yml была внесена отдельным коммитом.