Цепочка поставки · 24 марта 2026

Бэкдор в пакете LiteLLM на PyPI: кража ключей облаков и AI-сервисов

Группировка TeamPCP опубликовала на PyPI две вредоносные версии LiteLLM — популярного шлюза к API языковых моделей, который по данным Wiz присутствует в 36% облачных сред. Доступ к публикации был получен через ранее скомпрометированный сканер безопасности Trivy в CI/CD проекта. Вредоносный код собирал облачные ключи, секреты CI/CD и токены Kubernetes.

Иллюстрация к инциденту «Бэкдор в пакете LiteLLM на PyPI: кража ключей облаков и AI-сервисов»
ЗатронутоПользователи Python-библиотеки LiteLLM (шлюз к LLM API), установившие версии 1.82.7 и 1.82.8 с PyPI
КритичностьКритический
Дата24 марта 2026

Что произошло

19 марта 2026 года TeamPCP скомпрометировала сканер Trivy, который использовался в CI/CD LiteLLM, и получила оттуда токен для публикации. 24 марта на PyPI появились версии 1.82.7 и 1.82.8, загруженные в обход штатного конвейера сборки. По данным Wiz, пакеты были опубликованы около 8:30 UTC и помещены PyPI в карантин в 11:25 UTC; проект LiteLLM оценивает окно доступности примерно в 40 минут. В 1.82.7 вредоносный код находился в модуле прокси-сервера, в 1.82.8 добавлен файл .pth, который исполняется при каждом запуске интерпретатора Python. Собранные данные шифровались и отправлялись на поддельный домен, имитирующий проект. 30 марта проект выпустил чистую версию 1.83.0 через новый конвейер.

Где нарушилась защита

Граница доверия была нарушена дважды: инструмент безопасности в CI/CD сам оказался скомпрометирован и раскрыл токен публикации, а пользователи без фиксации версий автоматически получили новый релиз. Шлюз к LLM по своей роли хранит ключи многих AI-провайдеров и облаков, поэтому заражение именно этого компонента давало доступ к большому числу секретов. Механизм .pth расширял действие закладки на любые Python-процессы в среде, а не только на сам LiteLLM.

Последствия

  • Вредоносные версии собирали переменные окружения, SSH-ключи, учётные данные AWS, GCP и Azure, токены Kubernetes и пароли баз данных
  • Под угрозой оказались все, кто установил незафиксированную версию через pip в окно атаки, в том числе как транзитивную зависимость
  • По данным Datadog, вредоносный код устанавливал механизм закрепления и мог создавать привилегированные поды в Kubernetes
  • Пользователи официального Docker-образа LiteLLM Proxy, по данным проекта, не пострадали благодаря зафиксированным зависимостям

Реакция

PyPI поместил пакеты в карантин, проект удалил их, сменил учётные данные мейнтейнеров, привлёк Mandiant, ввёл подпись Docker-образов и новый изолированный конвейер CI/CD.

Уроки для бизнеса

  1. AI-шлюзы и прокси концентрируют ключи многих провайдеров и требуют защиты как критичные системы
  2. Инструменты безопасности в конвейере сборки сами являются частью цепочки поставки
  3. Фиксация версий и проверка хэшей зависимостей снижает риск автоматического получения вредоносного релиза
  4. Скорость реакции реестра пакетов не заменяет собственный контроль входящих зависимостей

Меры, которые предотвратили бы инцидент

  • Фиксация версий и хэшей зависимостей, установка через внутренний прокси-репозиторий с задержкой новых релизов
  • Хранение ключей LLM-провайдеров в менеджере секретов с коротким сроком жизни и быстрой ротацией
  • Доверенная публикация (Trusted Publishing) вместо долгоживущих токенов в CI/CD
  • Контроль исходящего трафика серверов с AI-шлюзами
  • Инвентаризация AI-компонентов и SBOM для быстрого поиска затронутых систем
Проверка фактов

Первоисточники

LiteLLM · 2026-03Security Update: Suspected Supply Chain IncidentWiz · 2026-03-24Three's a Crowd: TeamPCP Trojanizes LiteLLM in Continuation of CampaignDatadog Security Labs · 2026-03LiteLLM and Telnyx compromised on PyPI: Tracing the TeamPCP supply chain campaign