Израильская компания Novee Security вскрыла критический класс уязвимостей в конвейерах CI/CD, получивший кодовое имя Cordyceps. Специалисты просканировали около 30 тысяч репозиториев с высоким уровнем воздействия и обнаружили более 300 полностью эксплуатируемых проектов. Среди пострадавших — инфраструктура Microsoft, Google, Cloudflare, Apache и Python Software Foundation. Суть проблемы: любой пользователь с бесплатной учётной записью GitHub способен запускать произвольный код на серверах этих организаций, похищать учётные данные и получать контроль над цепочкой поставок программного обеспечения.
Что именно пошло не так?
Корень зла — в избыточных разрешениях, которые pull request'ы получают в рабочих процессах. Pull request (PR) — это предложение влить изменения из одной ветки в главную. Когда такой запрос приходит от недоверенного лица, он не должен иметь доступа к чувствительным механизмам CI/CD. Во многих случаях так и происходит: чужие правки способны инициировать привилегированные workflow'ы. Данные от неизвестного отправителя пересекают границу доверия без какой-либо проверки. Ни один автоматический сканер этого не видит, поскольку каждый отдельный элемент работает «как задумано». Уязвимость прячется в композиции: workflow делает ровно то, что ему приказали, но никто не задавал вопрос, какие данные допустимо класть ему на вход.
«Уязвимость эксплуатируется любым неавторизованным пользователем, — поясняет Элад Мегед, ведущий инженер и исследователь безопасности Novee Security. — Никакого членства в организации или особых привилегий не требуется: бесплатной учётной записи достаточно, чтобы подделывать одобрения, отправлять код или красть учётные данные».
Досье на жертв
Список организаций, чьи конвейеры оказались под ударом, читается как перечень тяжеловесов индустрии. Microsoft — проект Azure Sentinel: достаточно оставить комментарий под pull request'ом, чтобы анонимный злоумышленник выполнил код на сборочной инфраструктуре компании и похитил ключ GitHub App с неограниченным сроком действия. Google — репозиторий adk-samples, часть AI Agent Development Kit. Открытие PR даёт атакующему полный контроль над репозиторием в Google Cloud. Apache Doris, проект фонда Apache, подвержен сразу двум атакам с нулевым взаимодействием: одна срабатывает от единственного комментария под любым PR, вторая — от форкнутого запроса на слияние. В обоих случаях выполняется произвольный код и эксфильтруются захардкоженные CI-учётки плюс токен с полными правами записи. Cloudflare Workers SDK ломается через специально сформированное имя ветки в pull request'е, что открывает путь к выполнению произвольных команд на раннерах компании. Python Software Foundation и проект Black (популярный форматтер кода на Python) — открыть pull request от любого пользователя, и на сборочных мощностях запускается код атакующего. Главный приз — токен автоматизации, способный одобрять pull request'ы.
Почему «инфекция» повторяется бесконечно?
В Novee Security назвали обнаруженный класс пробоин «Cordyceps» — в честь рода грибов, которые захватывают тела насекомых и управляют ими. Метафора точная. По словам Мегеда, эпоха «агентного кодирования» — когда разработчики массово применяют ИИ-ассистентов и автоматизацию — приводит к тому, что одни и те же уязвимости CI/CD воспроизводятся везде и всегда, заражая репозитории с экспоненциальной скоростью. «Анонимные пользователи могут использовать их, чтобы получить контроль над цепочкой поставок, — продолжает исследователь. — Мы предпочитаем называть это «кукловождением» репозиториев крупнейших мировых компаний: кто-то молча манипулирует их рабочими процессами».
Объяснение от самой Novee Security
В заявлении компании описана природа этой угрозы, и звучит оно тревожно: «Уязвимость заложена в фундаментальной открытой инфраструктуре, на которой стоит вся индустрия. Это такая проблема, которая прячется от сканеров, потому что технически каждый отдельный фрагмент работает по проекту. Workflow делает то, что ему сказали. Уязвимость существует только в композиции — недоверенные данные пересекают границу доверия, которую никто не проверял».
Чем это грозит дальше?
Compaund-эффект колоссален. Cordyceps проникает в базовое «водопроводное оборудование» всей отрасли — открытый код, которым пользуются миллионы разработчиков. Скомпрометированный репозиторий вроде Black или Apache Doris — это потенциально миллионы загрузок заражённых артефактов. Последствия для пользователей и бизнесов, зависящих от этих проектов, могут оказаться катастрофическими.
Что делать?
Конкретные шаги для защиты вытекают из природы атаки. Аудит workflow'ов, запускаемых pull request'ами, на предмет избыточных разрешений — главный пункт. Границы доверия обязаны соблюдаться: нельзя передавать контексту PR никакого доверия, которого нет у его автора. Перетряска токенов с прицелом на сокращение привилегий — следующий шаг. Novee Security отдельно рекомендует проверить, не остались ли в репозиториях токены без срока действия и захардкоженные учётные данные — именно они стали главным призом для атакующих в случаях Microsoft и Apache Doris. PR-комментарии и имена веток как вектор — не новость для мира безопасности, но именно они оказались точками входа в Cloudflare и Microsoft. Наконец, конфигурация CI/CD должна оцениваться как код критической значимости, ведь композиционные дефекты сканеры не ловят в принципе.
Масштаб потерь и молчание вокруг CVE
Novee Security говорит о «десятках крупнейших мировых организаций», но подробно описала только пять. Открытыми остаются публикационные даты, идентификаторы CVE, статус патчей и оценки CVSS. Молчание вокруг номеров CVE настораживает специалистов — даже о полностью раскрытых случаях не объявлено системно. Это лишний повод держать свои конвейеры под ручным контролем, пока индустрия не начнёт воспринимать рабочие процессы CI/CD как полноценную поверхность атаки, требующую регулярных пентестов, ревью изменений и принципа минимальных привилегий.
Что именно пошло не так?
Корень зла — в избыточных разрешениях, которые pull request'ы получают в рабочих процессах. Pull request (PR) — это предложение влить изменения из одной ветки в главную. Когда такой запрос приходит от недоверенного лица, он не должен иметь доступа к чувствительным механизмам CI/CD. Во многих случаях так и происходит: чужие правки способны инициировать привилегированные workflow'ы. Данные от неизвестного отправителя пересекают границу доверия без какой-либо проверки. Ни один автоматический сканер этого не видит, поскольку каждый отдельный элемент работает «как задумано». Уязвимость прячется в композиции: workflow делает ровно то, что ему приказали, но никто не задавал вопрос, какие данные допустимо класть ему на вход.
«Уязвимость эксплуатируется любым неавторизованным пользователем, — поясняет Элад Мегед, ведущий инженер и исследователь безопасности Novee Security. — Никакого членства в организации или особых привилегий не требуется: бесплатной учётной записи достаточно, чтобы подделывать одобрения, отправлять код или красть учётные данные».
Досье на жертв
Список организаций, чьи конвейеры оказались под ударом, читается как перечень тяжеловесов индустрии. Microsoft — проект Azure Sentinel: достаточно оставить комментарий под pull request'ом, чтобы анонимный злоумышленник выполнил код на сборочной инфраструктуре компании и похитил ключ GitHub App с неограниченным сроком действия. Google — репозиторий adk-samples, часть AI Agent Development Kit. Открытие PR даёт атакующему полный контроль над репозиторием в Google Cloud. Apache Doris, проект фонда Apache, подвержен сразу двум атакам с нулевым взаимодействием: одна срабатывает от единственного комментария под любым PR, вторая — от форкнутого запроса на слияние. В обоих случаях выполняется произвольный код и эксфильтруются захардкоженные CI-учётки плюс токен с полными правами записи. Cloudflare Workers SDK ломается через специально сформированное имя ветки в pull request'е, что открывает путь к выполнению произвольных команд на раннерах компании. Python Software Foundation и проект Black (популярный форматтер кода на Python) — открыть pull request от любого пользователя, и на сборочных мощностях запускается код атакующего. Главный приз — токен автоматизации, способный одобрять pull request'ы.
Почему «инфекция» повторяется бесконечно?
В Novee Security назвали обнаруженный класс пробоин «Cordyceps» — в честь рода грибов, которые захватывают тела насекомых и управляют ими. Метафора точная. По словам Мегеда, эпоха «агентного кодирования» — когда разработчики массово применяют ИИ-ассистентов и автоматизацию — приводит к тому, что одни и те же уязвимости CI/CD воспроизводятся везде и всегда, заражая репозитории с экспоненциальной скоростью. «Анонимные пользователи могут использовать их, чтобы получить контроль над цепочкой поставок, — продолжает исследователь. — Мы предпочитаем называть это «кукловождением» репозиториев крупнейших мировых компаний: кто-то молча манипулирует их рабочими процессами».
Объяснение от самой Novee Security
В заявлении компании описана природа этой угрозы, и звучит оно тревожно: «Уязвимость заложена в фундаментальной открытой инфраструктуре, на которой стоит вся индустрия. Это такая проблема, которая прячется от сканеров, потому что технически каждый отдельный фрагмент работает по проекту. Workflow делает то, что ему сказали. Уязвимость существует только в композиции — недоверенные данные пересекают границу доверия, которую никто не проверял».
Чем это грозит дальше?
Compaund-эффект колоссален. Cordyceps проникает в базовое «водопроводное оборудование» всей отрасли — открытый код, которым пользуются миллионы разработчиков. Скомпрометированный репозиторий вроде Black или Apache Doris — это потенциально миллионы загрузок заражённых артефактов. Последствия для пользователей и бизнесов, зависящих от этих проектов, могут оказаться катастрофическими.
Что делать?
Конкретные шаги для защиты вытекают из природы атаки. Аудит workflow'ов, запускаемых pull request'ами, на предмет избыточных разрешений — главный пункт. Границы доверия обязаны соблюдаться: нельзя передавать контексту PR никакого доверия, которого нет у его автора. Перетряска токенов с прицелом на сокращение привилегий — следующий шаг. Novee Security отдельно рекомендует проверить, не остались ли в репозиториях токены без срока действия и захардкоженные учётные данные — именно они стали главным призом для атакующих в случаях Microsoft и Apache Doris. PR-комментарии и имена веток как вектор — не новость для мира безопасности, но именно они оказались точками входа в Cloudflare и Microsoft. Наконец, конфигурация CI/CD должна оцениваться как код критической значимости, ведь композиционные дефекты сканеры не ловят в принципе.
Масштаб потерь и молчание вокруг CVE
Novee Security говорит о «десятках крупнейших мировых организаций», но подробно описала только пять. Открытыми остаются публикационные даты, идентификаторы CVE, статус патчей и оценки CVSS. Молчание вокруг номеров CVE настораживает специалистов — даже о полностью раскрытых случаях не объявлено системно. Это лишний повод держать свои конвейеры под ручным контролем, пока индустрия не начнёт воспринимать рабочие процессы CI/CD как полноценную поверхность атаки, требующую регулярных пентестов, ревью изменений и принципа минимальных привилегий.