




Атака на цепочку поставок: litellm 1.82.7 и 1.82.8 на PyPI содержат стилер credentials
24 марта 2026 года две версии Python-библиотеки litellm (1.82.7 и 1.82.8) на PyPI были опубликованы с вредоносным кодом, выполняющим кражу SSH-ключей, облачных credentials, секретов Kubernetes и API-ключей. Библиотека используется как единый шлюз к LLM-провайдерам (OpenAI, Anthropic, Bedrock и др.) и набирает около 97 млн загрузок в месяц.
Атаку выявили при анализе инцидента: у разработчика litellm оказался транзитивной зависимостью MCP-плагина в Cursor. Хост стал недоступен из-за форк-бомбы — бага в самой малвари: .pth-файл рекурсивно порождал дочерние процессы, что привело к исчерпанию ресурсов системы. По оценке исследователей FutureSearch, без этого бага атака могла бы дольше оставаться незамеченной.
Обе версии опубликованы на PyPI в 10:39–10:52 UTC без соответствующих тегов и релизов в GitHub. Исходный код репозитория остался чистым — вредоносный код был внедрён в артефакт при публикации, что делает его невидимым при стандартном code review.
Версия 1.82.8 содержит файл litellm_init.pth (34 628 байт). Python автоматически исполняет .pth-файлы при каждом запуске интерпретатора — срабатывание происходит без какого-либо import litellm. Версия 1.82.7 использует обфусцированный payload в proxy/proxy_server.py, исполняемый при импорте модуля.
Payload работает в три стадии:
1. Сбор данных. Скрипт извлекает SSH-ключи и конфиги, .env-файлы, credentials AWS/GCP/Azure, kubeconfig, пароли БД, историю shell, файлы крипто-кошельков, переменные окружения. Дополнительно выполняются запросы к cloud metadata endpoints (IMDS).
2. Эксфильтрация. Данные шифруются (AES-256-CBC + RSA-4096, hardcoded публичный ключ) и отправляются на models.litellm[.]cloud — домен, не относящийся к официальной инфраструктуре litellm.
3. Закрепление и латеральное
Читать на habr.com