Как компрометация одного CI/CD-пайплайна поставила под удар треть облачных сред планеты?

24 марта 2026 года на PyPI появились две новые версии популярного Python-пакета litellm — 1.82.7 и 1.82.8. Обновления выглядели рутинно. Ничто не указывало на то, что внутри спрятан трёхэтапный вредоносный пейлоад, способный красть учётные данные, захватывать Kubernetes-кластеры и закрепляться на хостах через systemd-сервисы. По данным компании Wiz (принадлежит Google), litellm установлен в 36% всех облачных сред. Масштаб потенциального поражения — колоссальный.
Как компрометация одного CI/CD-пайплайна поставила под удар треть облачных сред планеты?
Изображение носит иллюстративный характер

За атакой стоит группировка TeamPCP, которая ранее уже скомпрометировала инструменты Trivy и KICS. Собственно, именно через взлом CI/CD-воркфлоу Trivy злоумышленники получили возможность внедрить вредоносный код в официальные релизы litellm. Разработчиком и мейнтейнером litellm является компания Berri AI. Цепочка атаки выглядит почти иронично: инструмент безопасности Trivy послужил входной точкой для компрометации совершенно другого проекта. TeamPCP в своём Telegram-канале и через аккаунт @pcpcats в X (бывший Twitter) открыто глумились: «Эти компании были созданы, чтобы защищать ваши цепочки поставок, но они не могут защитить даже свои собственные... состояние современных исследований в области безопасности — это шутка».
Технически атака реализована в три стадии. В версии 1.82.7 вредоносный код встроен напрямую в файл litellm/proxy/proxy_server.py и срабатывает при импорте модуля — никакого взаимодействия с пользователем не нужно. Версия 1.82.8 пошла дальше. В корень wheel-пакета добавлен файл litellm_init.pth, который обрабатывается Python'овским site.py автоматически при запуске любого Python-процесса в окружении. Через subprocess.Popen пейлоад стартует фоновым отвязанным процессом. Исследователи из JFrog и Endor Labs (в частности, аналитик Киран Радж) описали вторую версию как «более агрессивную».
На втором этапе происходит сбор и кража данных. Пейлоад целенаправленно ищет SSH-ключи, облачные учётные данные, секреты Kubernetes, криптовалютные кошельки и файлы .env. Всё собранное пакуется в зашифрованный архив с именем «tpcp.tar.gz» и отправляется HTTPS POST-запросом на домен models.litellm[.]cloud. Название архива — прямая отсылка к аббревиатуре группировки.
Третий этап — латеральное перемещение и закрепление. Используя токен сервисного аккаунта Kubernetes, малварь перечисляет ноды кластера и разворачивает на каждой из них привилегированные поды. Эти поды выполняют chroot в файловую систему хоста. Для персистентности устанавливается systemd user-сервис под именем sysmon.service, который запускает Python-скрипт по пути ~/.config/sysmon/sysmon.py. Скрипт каждые 50 минут обращается к адресу checkmarx[.]zone/raw за бинарниками следующей стадии. Любопытная деталь: если полученный URL содержит youtube[.]com, выполнение прерывается. Это своего рода «выключатель» — kill switch.
Группа TeamPCP заявляет о партнёрстве с известной вымогательской группировкой LAPSUS$. Лидер TeamPCP, известный под псевдонимом «DMT», объявил об уходе из-за выгорания, но группа продолжает работать. Их стратегию они сами называют «эффектом снежного кома»: учётные данные из одного взлома (Trivy) используются для следующего (litellm), а тот, в свою очередь, бьёт по десяткам тысяч нижестоящих сред. Цель — украсть «терабайты коммерческих секретов».
Бен Рид из Wiz прокомментировал ситуацию так: «Мы наблюдаем опасное сближение между атакующими цепочки поставок и известными группами вымогателей вроде LAPSUS$». Галь Нагли, тоже из Wiz, высказался жёстче: «Цепочка поставок с открытым исходным кодом схлопывается сама в себя... Мы застряли в замкнутом круге».
Под угрозой оказались не только пользователи litellm. Скомпрометированы были платформы PyPI, GitHub Actions, Docker Hub, npm и Open VSX. Python Packaging Authority (PyPA) была уведомлена. Но сам факт того, что атака распространилась через официальные каналы дистрибуции, ставит неприятные вопросы о доверии к пакетным репозиториям в целом.
Командам безопасности рекомендуется немедленно проверить, не установлены ли версии 1.82.7 или 1.82.8, и откатиться на чистые релизы. Все учётные данные — переменные окружения, конфигурационные файлы — на скомпрометированных системах подлежат ротации. Поголовной. Затронутые хосты нужно изолировать и проверить на наличие подозрительных Kubernetes-подов. В сетевых логах следует искать исходящий трафик к models.litellm[.]cloud и checkmarx[.]zone. Сервис sysmon.service и связанные с ним файлы нужно удалить. И отдельно: стоит провести аудит всех CI/CD-пайплайнов, которые использовали Trivy или KICS в период компрометации.
Вся эта история — наглядная демонстрация того, насколько хрупка экосистема, в которой один взломанный инструмент безопасности способен каскадом обрушить доверие к тысячам зависимых проектов. TeamPCP не изобрели ничего нового. Они просто воспользовались тем, что индустрия давно знала, но предпочитала игнорировать.


Новое на сайте

19641OpenAI залатала две дыры: как через ChatGPT и Codex утекали данные пользователей 19640Утечки секретов ускоряются быстрее, чем индустрия успевает их затыкать 19639Метавселенная всё-таки умерла? 19638Почему люди до сих пор верят, что пришельцы создали древние цивилизации? 19637Растения у Колорадо крадут подземные воды, усугубляя засуху в и без того истощённом... 19636Уязвимость ShadowPrompt: как любой сайт мог молча захватить браузер через расширение... 19635Может ли война с Ираном оставить голодными 363 миллиона человек по всему миру? 19634Зачем роботам терять конечности, если ИИ научился собирать их заново за секунды? 19633Шахматы по телеграфу — первый в истории киберспорт? 19632Почему фреймворки LangChain и LangGraph ставят под удар файлы, секреты и базы данных... 19631Почему кошки приручили нас, а не мы их? 19630Что нашли дайверы на дне эгейского моря в бриге лорда Элгина? 19629Почему 65 000 лет назад в Европе выжила только одна линия неандертальцев? 19628DeepLoad: как поддельное окно Windows крадёт пароли и расползается по флешкам 19627Почему три китайские хакерские группировки одновременно атаковали одно правительство в...
Ссылка