Уязвимост в Snowflake GitHub Actions позволява инжектиране на команди чрез фалшиви задачи

Откритие на критична уязвимост в Snowflake

Екипът на компанията Wiz е разкрил нова уязвимост в GitHub Actions работния процес на Snowflake, който е открит за публичност. Проблемът се намираше в хранилището snowflakedb/snowflake-connector-net и позволяваше на злоумишленици да изпълняват произволни команди в работния процес чрез специално подготвена GitHub задача. Най-тревожното е, че атаката би могла да даде достъп до вътрешни Jira идентификационни данни, съхранявани в работния процес.

Уязвимостта беше открита в конфигурационния файл .github/workflows/jira_issue.yml, който се активира автоматично при определени действия. Това е типичен пример за workflow injection атака — един от най-опасните типове уязвимости при работа с GitHub Actions, автоматизирана платформа за непрекъснато интегриране и доставка (CI/CD), която е станала неразделна част от разработката на модерния софтуер.

Какво представляват GitHub Actions и workflow injections

GitHub Actions е вградена платформа за автоматизация, която позволява на разработчиците да автоматизират тестване, компилиране, пакетиране и развертывание на софтуер директно от своите хранилища. Работните процеси (workflows) са последователности от задачи, които се изпълняват при определени събития, като например натискане на код, отваряне на pull request или създаване на GitHub задача.

Workflow injection е техника, при която нарушител внедрява вредоносен код в работния процес чрез контролиране на входни данни, които се използват в това автоматизирано изпълнение. Когато работния процес обработва неподготвени входни данни — например съдържанието на GitHub задача или pull request — злоумишленик може да внедри команди на Shell или PowerShell, които ще бъдат изпълнени с правата на работния процес.

Това е особено опасно, когато работния процес има достъп до чувствителни ресурси, като криптографски ключове, пароли, токени за достъп или други идентификационни данни. В случая със Snowflake, работния процес съдържа внутрешни Jira идентификационни данни — вероятно API токени или пароли, които се използват за автоматично свързване между GitHub и вътрешната система за проследяване на задачи на Snowflake.

Как работи атаката

Според разкритието на Wiz, уязвимостта може да бъде експлоатирана чрез създаване на специално подготвена GitHub задача в публичното хранилище на Snowflake. Когато работния процес обработва тази задача, той автоматично предава нейното съдържание в Jira чрез интегрирания работен процес. Ако работния процес не санитизира правилно входните данни, злоумишленикът може да внедри команди, които ще бъдат изпълнени на сървърите, управляващи GitHub Actions.

За да се защитят от такива атаки, работните процеси трябва да третират всички външни входни данни като потенциално враждебни. Това означава декодиране на специални символи, избягване на динамично оценяване на код и ограничаване на достъпа до чувствителни переменни на окръжението. GitHub предоставя препоръки за безопасност, които включват използване на контекстни маски и ограничаване на разрешенията на работния процес само до необходимото.

Значение за Snowflake и софтуерната екосистема

Snowflake е значима компания в облачната аналитика и управление на данни, с хиляди клиенти по целия свят. Хранилището snowflakedb/snowflake-connector-net е публично достъпно, което означава, че всеки потенциален нарушител может да го инспектира и да потърси уязвимости. Факт, че критична уязвимост е открита именно тук, подчертава важността на регулярния пристъп към безопасност на CI/CD работните процеси.

Разкритието също така подчертава, че дори именити компании, със значителни ресурси, могат да направят критични грешки при конфигуриране на автоматизирани системи. Това не е единичен случай — workflow injection уязвимости стават все по-чести, тъй като повече организации прилагат CI/CD практики, но не винаги го правят с адекватна безопасност.

Препоръки за защита и добри практики

За разработчици и DevOps екипи, разкритието на Wiz е напомняне за необходимостта от здравословни практики при работа с GitHub Actions. Първо, никога не трябва да се съхраняват критични идентификационни данни директно в работните процеси. Вместо това, трябва да се използват GitHub Secrets — зашифровано хранилище за чувствителни данни, които се инжектират като переменни на окръжението по време на изпълнението.

Второ, всички входни данни — от pull requests, задачи, comments или други външни източници — трябва да се третират като потенциално враждебни и да се санитизират правилно. GitHub препоръчва използването на context expressions правилно и избягване на директното внедряване на потребителския вход в shell команди.

Трето, работните процеси трябва да имат минимални разрешения. Ако конкретен work действие не се нуждае от пълен достъп до читане и писане на хранилището, то трябва да се конфигурира с по-ограничени разрешения.

Четвърто, организациите трябва редовно да преглеждат своите CI/CD работни процеси за такива уязвимости, особено при публични хранилища, където съдържанието може да бъде манипулирано от външни страни.

Отговор на Snowflake

Snowflake обикновено реагира бързо на разкритията относно безопасност. Очаква се компанията да издаде исправка и да обновит конфигурацията на работния процес, за да предотврати експлоатацията. Организациите, които используват snowflake-connector-net, трябва да следят за обновления на безопасност и да действат бързо при тяхното издаване.

Разкритието на Wiz служи като ценен урок за целия софтуерен индустрия — CI/CD безопасността не трябва да бъда обмислена posteriori, а трябва да бъда вградена от самото начало в разработката на работни процеси и системи.

Източник: The Hacker News.
Оригинал: https://thehackernews.com/2026/08/snowflake-github-actions-flaw-lets_0330881554.html

Picture of Велислав Никифоров
Велислав Никифоров

Web Developer & Cybersecurity Enthusiast