Заражённый Python-пакет LiteLLM крадёт облачные ключи и токены

Вредоносные релизы LiteLLM затронули более 2100 организаций

Кампания TeamPCP добралась до PyPI

В середине марта две вредоносные версии открытого AI-шлюза LiteLLM примерно на 40 минут появились в репозитории PyPI. Инцидент стал частью масштабной атаки на цепочку поставок, начавшейся со взлома сканера Trivy от Aqua Security.

Специалисты CloudSEK проанализировали массив из примерно 434 000 файлов, захваченных злоумышленниками, и обнаружили потенциальное воздействие на более 2500 организаций. Среди них — NVIDIA, Cisco, Deloitte, Volkswagen, FedEx, Siemens и X Corp. Окончательный список пострадавших всё ещё уточняется.

Файлы, попавшие в руки исследователей, представляют собой логи и украденные данные, а не результаты опроса компаний. CloudSEK подчёркивает: это именно информация, похищенная атакующими, а не просто список тех, кто мог бы пострадать.

Опубликован публичный поисковый инструмент, где по названию организации или домену можно проверить предполагаемую степень компрометации. Каждой записи присвоен уровень уверенности: High или Medium.

Что именно попало под удар

Проблемные пакеты — версии 1.82.7 и 1.82.8 — находились в PyPI 24 марта с 10:39 UTC около 40 минут. Затем репозиторий поместил их в карантин, однако разработчики рекомендуют считать подозрительными любые установки, выполненные в тот день до 16:00 UTC.

Опасность версии 1.82.8 заключалась в файле litellm_init.pth. Python обрабатывает его при запуске интерпретатора, поэтому вредоносный код выполнялся всегда, когда в окружении стартовал любой Python-процесс, даже если сама библиотека LiteLLM не импортировалась.

Собранные данные — переменные окружения, SSH-ключи, облачные учётные данные, токены Kubernetes, пароли баз данных — отправлялись на контролируемый атакующими домен models.litellm[.]cloud.

Мы получили эти файлы из источников разведывательных данных. Это не просто список организаций, а захваченная добыча и логи, принадлежащие именно этой кампании.

Аналитики Unit 42 отметили, что полезная нагрузка также читала переменные окружения с API-ключами моделей, включая OPENAI_API_KEY и ANTHROPIC_API_KEY. Таким образом, под угрозой оказались не только инфраструктурные секреты, но и доступ к коммерческим AI-сервисам.

Связь со взломом Trivy и рекомендации

Инцидент с LiteLLM — прямое продолжение атаки на Trivy, которую Google отслеживает как UNC6780. После неполной ротации учётных данных злоумышленники сохранили доступ и 19 марта принудительно внедрили вредоносные коммиты в 76 из 77 тегов trivy-action и все семь тегов setup-trivy, а также выпустили заражённый релиз Trivy 0.69.4.

Уязвимость получила идентификатор CVE-2026-33634 и 26 марта была добавлена в каталог эксплуатируемых уязвимостей CISA. Теперь в записи CVE указаны и версии LiteLLM с 1.82.7 по 1.82.8.

Как именно вредоносные релизы попали в PyPI — вопрос остаётся спорным. Версия CloudSEK указывает на отравленную сборку, тогда как отчёт LiteLLM говорит о прямой загрузке в обход CI/CD, а Unit 42 связывает всё с кражей токенов публикации после взлома Trivy. В CloudSEK парируют: это не конкурирующие версии, а разные стадии одной атаки.

ФБР в рекомендациях FLASH-20260702-01 призвало организации немедленно сменить секреты CI/CD, токены публикации и облачные учётные данные, которые могли быть доступны в период компрометации. Ведомство также советует отказываться от долгоживущих токенов в пользу временных.

Конкретные шаги для проверки:

  • Проверить, не устанавливались ли версии LiteLLM 1.82.7 или 1.82.8 в промежутке с 10:39 до 16:00 UTC 24 марта.
  • Ротировать все секреты, к которым эти системы имели доступ.
  • Поискать в GitHub-организациях репозитории с именами tpcp-docs или docs-tpcp — индикаторы кампании из списка ФБР.

Проверять репозитории нужно внимательно: вредонос создавал их с префиксом tpcp-docs- и грузил украденные данные как релизный актив с тегом data-<timestamp>. Поиск по точному совпадению имени может не дать результата.

Читайте также: Что такое компьютерный вирус и как он заражает системы

Источник: The Hacker News

Похожие записи