
В Python-пакете LiteLLM версий 1.82.7 и 1.82.8, который загружают с PyPI около 97 млн раз в месяц, обнаружен встроенный стилер учетных данных. Вредоносный код крал SSH-ключи, токены AWS, GCP и Azure, конфигурации Kubernetes, криптокошельки и все переменные окружения — то есть, по сути, все API-ключи, которые LiteLLM и должен хранить как шлюз к OpenAI, Anthropic и еще сотне LLM-провайдеров. Скомпрометированные версии уже удалены с PyPI, последняя чистая — 1.82.6.
Атака сработала необычно: достаточно было просто установить пакет. В версии 1.82.8 вредоносный код запускался при каждом старте Python — не нужно было даже подключать библиотеку в своем проекте. Любой Python-скрипт на машине невольно активировал стилер. Собранные данные шифровались и отправлялись на домен models.litellm.cloud, замаскированный под официальный litellm.ai. В более ранней версии 1.82.7 малварь работала чуть скромнее — запускалась только при подключении библиотеки в коде.
Компрометацию обнаружили случайно: MCP-плагин в IDE Cursor подтянул LiteLLM как транзитивную зависимость, а баг в малвари — порождение дочерних процессов через .pth при каждом запуске Python — устроил форк-бомбу и съел всю оперативную память. Без этого сбоя стилер мог бы работать незамеченным значительно дольше. Один из разработчиков, обнаруживших проблему, написал: "Мы были взломаны… тысячи людей, вероятно, прямо сейчас под атакой".
Атаку приписывают группировке TeamPCP, которая за последнюю неделю марта провела серию supply chain атак: сначала — на сканер уязвимостей Trivy от Aqua Security, затем — на инструменты Checkmarx и KICS, теперь — на LiteLLM. Паттерн один и тот же: компрометация аккаунта мейнтейнера, публикация вредоносной версии в реестр пакетов, многоступенчатый стилер. В репозиториях BerriAI атакующие оставили "визитку" — коммит с текстом TeamPCP owns BerriAI, а issue с описанием уязвимости (#24512) был закрыт — предположительно, самим атакующим через скомпрометированный аккаунт.
Всем, у кого LiteLLM 1.82.7 или 1.82.8 был установлен хотя бы на одной машине, рекомендуется считать все учетные данные скомпрометированными и заменить ключи. Проверить стоит и CI/CD-пайплайны: если в них стоял pip install litellm без пиннинга версии, скомпрометированный пакет мог подтянуться автоматически. Ирония в том, что LiteLLM — это шлюз для управления API-ключами к нейросетям. Атакующие выбрали пакет, который по определению имеет доступ ко всем LLM-ключам в организации.
P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.
