Исследователи Wiz обнаружили уязвимость внедрения команд в GitHub Actions в публичном репозитории Snowflake snowflakedb/snowflake-connector-net. Специально подготовленная общедоступная задача GitHub Issue могла запустить команды оболочки внутри CI/CD-процесса, имевшего доступ к внутренним учетным данным Jira. Проблема касалась автоматизации репозитория, а не кода Snowflake Connector : ни одной затронутой выпущенной версии коннектора найти не удалось.

Ошибка находилась в файле.github/workflows/jira_issue.yml. Процесс запускался при открытии публичной задачи и передавал в один шаг три секрета: JIRA_BASE_URL, JIRA_USER_EMAIL и JIRA_API_TOKEN. Заголовок и текст GitHub Issue, полностью контролируемые автором задачи, напрямую подставлялись в shell-блок run:. Значения не экранировались и не отделялись от исполняемого кода, поэтому оболочка могла принять фрагменты текста за команды.
Предусмотренная фильтрация не работала из-за обращения к github.event.pull_request.user.login. Процесс обрабатывал Issue, а не pull request, следовательно, свойства pull_request в событии не существовало. Документация GitHub описывает поведение однозначно: «Если попытаться разыменовать несуществующее свойство, результатом будет пустая строка». Полученную пустую строку сравнивали с именем whitesource-for-github-com[bot], и такая проверка не мешала обычной публичной задаче дойти до уязвимого шага.
Система Wiz Red Agent использовала ошибку во время санкционированного тестирования безопасности. Первая полезная нагрузка завершилась синтаксической ошибкой оболочки, после чего Red Agent изменил способ эксплуатации. Затем исследователи получили внеполосный обратный вызов от исполнителя GitHub Actions и извлекли Jira API token, применявшийся процессом. Это подтвердило возможность выполнения команд и доступа к секрету, а не только теоретическую опасность небезопасной подстановки.
По данным Wiz, токен давал право читать проекты Jira, связанные с инженерными работами, соблюдением требований безопасности и учетом программ bug bounty. Использовался экземпляр . В исходных материалах сказано, что токен «принадлежал» определенной учетной записи или организации, но ее название отсутствует. Полный набор разрешений токена, помимо заявленного чтения, не опубликован; также недоступны сведения о соответствующем запуске процесса и журналы аудита Jira и GitHub Actions.
Wiz передала сведения Snowflake через HackerOne 23 июня 2026 года, номер отчета — 3819931. В тот же день Snowflake объединила исправление из pull request 1402. Прямую подстановку выражений GitHub внутрь shell-кода убрали: заголовок и содержимое задачи сначала помещаются в переменные окружения, а затем передаются jq как аргументы. Исправленный вариант остается в ветке master.
Уязвимый процесс попал в ветку по умолчанию 18 июня 2026 года после squash-слияния pull request 1218. Исправление появилось 23 июня, поэтому заявленное окно доступности ошибки составило пять дней. 24 июня Snowflake заменила Jira API token. При этом сама категория подобных атак была описана GitHub еще в июле 2025 года: разработчикам советовали не разворачивать недоверенные данные Issue непосредственно в блоках run:, а сохранять их в промежуточных переменных окружения и безопасно передавать вызываемым программам.
Snowflake сообщила в заявлении, приведенном Wiz: «Наше расследование не обнаружило доказательств несанкционированного доступа». По информации Wiz, проверка компании также не выявила постороннего внешнего использования Jira-токена в течение пятидневного окна. Независимо проверить все детали нельзя: исходные журналы аудита Snowflake публично не предоставила.
Wiz связала появление ошибки с изменением GitHub Copilot Autofix, но история репозитория не доказывает авторство конкретных уязвимых строк в.github/workflows/jira_issue.yml. Коммит 6d0e2fa действительно отмечен как созданный при соавторстве Copilot, однако он менял jira_close.yml. Небезопасный рефакторинг jira_issue.yml содержится в коммите 094038e от 25 августа 2025 года, который GitHub приписывает пользователю sfc-gh-hpathak. При squash-слиянии pull request 1218 18 июня 2026 года оба изменения вошли в коммит 4a1b8ce, где Copilot Autofix указан среди соавторов. Участие Copilot в pull request 1218 подтверждается, авторство проблемной подстановки — нет.
По состоянию на 17 августа 2026 года для уязвимости не были найдены идентификатор CVE и оценка CVSS; записи в каталоге CISA Known Exploited Vulnerabilities, или KEV, также не обнаружено. Snowflake не выпускала связанное с этой ошибкой обновление Snowflake Connector , а опасной подстановки в master уже не было. Доступные первичные данные не подтверждают эксплуатацию злоумышленниками, компрометацию клиентов или наличие уязвимости в какой-либо выпущенной версии коннектора.

Изображение носит иллюстративный характер
Ошибка находилась в файле.github/workflows/jira_issue.yml. Процесс запускался при открытии публичной задачи и передавал в один шаг три секрета: JIRA_BASE_URL, JIRA_USER_EMAIL и JIRA_API_TOKEN. Заголовок и текст GitHub Issue, полностью контролируемые автором задачи, напрямую подставлялись в shell-блок run:. Значения не экранировались и не отделялись от исполняемого кода, поэтому оболочка могла принять фрагменты текста за команды.
Предусмотренная фильтрация не работала из-за обращения к github.event.pull_request.user.login. Процесс обрабатывал Issue, а не pull request, следовательно, свойства pull_request в событии не существовало. Документация GitHub описывает поведение однозначно: «Если попытаться разыменовать несуществующее свойство, результатом будет пустая строка». Полученную пустую строку сравнивали с именем whitesource-for-github-com[bot], и такая проверка не мешала обычной публичной задаче дойти до уязвимого шага.
Система Wiz Red Agent использовала ошибку во время санкционированного тестирования безопасности. Первая полезная нагрузка завершилась синтаксической ошибкой оболочки, после чего Red Agent изменил способ эксплуатации. Затем исследователи получили внеполосный обратный вызов от исполнителя GitHub Actions и извлекли Jira API token, применявшийся процессом. Это подтвердило возможность выполнения команд и доступа к секрету, а не только теоретическую опасность небезопасной подстановки.
По данным Wiz, токен давал право читать проекты Jira, связанные с инженерными работами, соблюдением требований безопасности и учетом программ bug bounty. Использовался экземпляр . В исходных материалах сказано, что токен «принадлежал» определенной учетной записи или организации, но ее название отсутствует. Полный набор разрешений токена, помимо заявленного чтения, не опубликован; также недоступны сведения о соответствующем запуске процесса и журналы аудита Jira и GitHub Actions.
Wiz передала сведения Snowflake через HackerOne 23 июня 2026 года, номер отчета — 3819931. В тот же день Snowflake объединила исправление из pull request 1402. Прямую подстановку выражений GitHub внутрь shell-кода убрали: заголовок и содержимое задачи сначала помещаются в переменные окружения, а затем передаются jq как аргументы. Исправленный вариант остается в ветке master.
Уязвимый процесс попал в ветку по умолчанию 18 июня 2026 года после squash-слияния pull request 1218. Исправление появилось 23 июня, поэтому заявленное окно доступности ошибки составило пять дней. 24 июня Snowflake заменила Jira API token. При этом сама категория подобных атак была описана GitHub еще в июле 2025 года: разработчикам советовали не разворачивать недоверенные данные Issue непосредственно в блоках run:, а сохранять их в промежуточных переменных окружения и безопасно передавать вызываемым программам.
Snowflake сообщила в заявлении, приведенном Wiz: «Наше расследование не обнаружило доказательств несанкционированного доступа». По информации Wiz, проверка компании также не выявила постороннего внешнего использования Jira-токена в течение пятидневного окна. Независимо проверить все детали нельзя: исходные журналы аудита Snowflake публично не предоставила.
Wiz связала появление ошибки с изменением GitHub Copilot Autofix, но история репозитория не доказывает авторство конкретных уязвимых строк в.github/workflows/jira_issue.yml. Коммит 6d0e2fa действительно отмечен как созданный при соавторстве Copilot, однако он менял jira_close.yml. Небезопасный рефакторинг jira_issue.yml содержится в коммите 094038e от 25 августа 2025 года, который GitHub приписывает пользователю sfc-gh-hpathak. При squash-слиянии pull request 1218 18 июня 2026 года оба изменения вошли в коммит 4a1b8ce, где Copilot Autofix указан среди соавторов. Участие Copilot в pull request 1218 подтверждается, авторство проблемной подстановки — нет.
По состоянию на 17 августа 2026 года для уязвимости не были найдены идентификатор CVE и оценка CVSS; записи в каталоге CISA Known Exploited Vulnerabilities, или KEV, также не обнаружено. Snowflake не выпускала связанное с этой ошибкой обновление Snowflake Connector , а опасной подстановки в master уже не было. Доступные первичные данные не подтверждают эксплуатацию злоумышленниками, компрометацию клиентов или наличие уязвимости в какой-либо выпущенной версии коннектора.