LiteLLM расследует выпуск вредоносного пакета 1.107.0

Проект LiteLLM сообщил о компрометации конвейера релизов: 21 октября 2026 года в PyPI, Docker Hub и GitHub Container Registry были опубликованы вредоносные сборки версии 1.107.0. Пакет содержал средство кражи учётных данных и бэкдор, способный регулярно загружать удалённый код.
Затронуты пользователи, установившие неприкреплённую версию через pip с 11:39 до 13:23 UTC, а также пользователи Docker-образов v1.107.0, latest, main-latest и main-stable, полученных с 11:46 до 14:20 UTC. LiteLLM призвала удалить скомпрометированную версию, изолировать соответствующие хосты и сменить все доступные им секреты.
Как работал вредоносный код
В сборку добавили файл cook.pth, который при запуске интерпретатора Python импортировал скрипт cook.py. После деобфускации тот запускал компонент privcollect для сбора системных, браузерных, облачных, разработческих и связанных с ИИ-инструментами секретов.
Собранные данные отправлялись HTTP POST-запросом на домен litellm[.]dev/healthcheck. На Linux и macOS дополнительно выполнялся sitecustomize.py: он обращался к удалённому GitHub-репозиторию за адресом управляющего сервера, после чего мог получить и исполнить второй Python-скрипт по пути /codepy.
Исследователь Aikido Ильяс Макари отметил, что фоновый процесс создавал блокировку в /tmp/remote_code_loader.lock и затем ежечасно запрашивал актуальный домен и полезную нагрузку. По оценке Wiz, одновременное применение .pth-файла и sitecustomize.py стало первым задокументированным случаем такой комбинации в реальных атаках.
Как скомпрометировали выпуск
После похожего инцидента в марте LiteLLM перенесла релизы в приватный репозиторий, сделала Docker-теги неизменяемыми и включила подпись образов. Однако 19 октября команда временно расширила права на публикацию двум внутренним инженерам, чтобы выпускать ежедневные исправления для клиентов.
По версии LiteLLM, атакующий получил доступ к трём наборам учётных данных GitHub CLI, включая токен с правом запуска GitHub Actions. Токен владельца организации позволил отключить защиту ветки и принудительно отправить изменения, а скомпрометированный workflow был направлен на похожий репозиторий Berri-AI/litellm вместо BerriAI/litellm. Так вредоносные артефакты были подписаны и опубликованы.
Maintainers допускают, что OAuth-токены GitHub CLI попали в логи: в отдельных сценариях Claude Code может включать такой токен в тело ответа. Внутреннее развёртывание LiteLLM с логами оказалось доступно из интернета; как именно атакующий получил к нему доступ, пока не установлено. Команда предполагает связь с недавно исправленной уязвимостью.
Проверка следов и действия команд
Wiz наблюдала использование украденных данных примерно через 4,5 часа после эксфильтрации. Атакующий проверял AWS instance role credentials с CI-раннеров и Kubernetes-узлов через sts:GetCallerIdentity, затем вызывал bedrock:ListFoundationModels и ListModels. В некоторых средах также выполнялись перечисление IAM-объектов и общая разведка аккаунта.
Организациям, где запускалась LiteLLM 1.107.0, следует искать файлы cook.pth, cook.py и sitecustomize.py, заблокировать домен эксфильтрации, проверить выполнение /codepy, отозвать секреты и пересобрать затронутые окружения. Инцидент показывает практический риск цепочки поставки: чистый репозиторий не подтверждает безопасность установленного wheel-файла или контейнерного образа, поэтому версии и артефакты необходимо проверять до попадания в сборку.

