
Что произошло
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.
Уроки для бизнеса
- AI-шлюзы и прокси концентрируют ключи многих провайдеров и требуют защиты как критичные системы
- Инструменты безопасности в конвейере сборки сами являются частью цепочки поставки
- Фиксация версий и проверка хэшей зависимостей снижает риск автоматического получения вредоносного релиза
- Скорость реакции реестра пакетов не заменяет собственный контроль входящих зависимостей
Меры, которые предотвратили бы инцидент
- Фиксация версий и хэшей зависимостей, установка через внутренний прокси-репозиторий с задержкой новых релизов
- Хранение ключей LLM-провайдеров в менеджере секретов с коротким сроком жизни и быстрой ротацией
- Доверенная публикация (Trusted Publishing) вместо долгоживущих токенов в CI/CD
- Контроль исходящего трафика серверов с AI-шлюзами
- Инвентаризация AI-компонентов и SBOM для быстрого поиска затронутых систем