Атака на цепочку поставок: litellm 1.82.7 и 1.82.8 на PyPI содержат стилер credentials

3 мин
Атака на цепочку поставок: litellm 1.82.7 и 1.82.8 на PyPI содержат стилер credentials

24 марта 2026 года две версии Python-библиотеки litellm (1.82.7 и 1.82.8) на PyPI были опубликованы с вредоносным кодом, выполняющим кражу SSH-ключей, облачных credentials, секретов Kubernetes и программный интерфейс-ключей. Набор модулей используется как единый шлюз к 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. Закрепление и латеральное движение. При наличии Kubernetes service account token малварь читает все секреты кластера и создаёт привилегированные поды alpine:latest в kube-system с монтированием хост-ФС. Бэкдор устанавливается как ~/.config/sysmon/sysmon.py с регистрацией systemd user service — локально и на каждой ноде кластера.

Что проверить и сделать

# Проверить установленную версию
pip show litellm # Найти следы в кеше uv
find ~/.cache/uv -name "litellm_init.pth" # Проверить наличие бэкдора
ls ~/.config/sysmon/sysmon.py
ls ~/.config/systemd/user/sysmon.service

В Kubernetes: проверить поды с именем node-setup-* в namespace kube-system.

Если установлена релиз 1.82.7 или 1.82.8 — удалить пакет и очистить кеш:

pip uninstall litellm
rm -rf ~/.cache/uv # или: pip cache purge

Версия для отката: 1.82.6 (опубликована 22 марта; в соответствии с отчёту Endor Labs, является последней незатронутой версией).

Все credentials на затронутой машине следует считать скомпрометированными и ротировать: SSH-ключи, токены AWS/GCP/Azure, kubeconfig, программный интерфейс-ключи из .env, пароли БД. Отдельно рекомендуется проверить CI/CD-пайплайны и Docker-образы, собиравшиеся с pip install litellm без пина версии за последние двое суток.

Контекст: кампания TeamPCP

В соответствии с отчётам Wiz и Endor Labs, атака на litellm предположительно является частью продолжающейся кампании группировки TeamPCP. По данным Endor Labs, каждый скомпрометированный средство открывал доступ к credentials, использованным в следующей атаке:

  • 19 марта — компрометация Trivy (Aqua Security), 75 из 76 тегов trivy-action перезаписаны

  • 21–23 марта — компрометация KICS/Checkmarx GitHub Action, OpenVSX-расширений; распространение CanisterWorm в npm (64+ пакета)

  • 24 марта — litellm на PyPI

Во всех задокументированных инцидентах фигурирует одна схема шифрования (AES-256 + RSA-4096) и один RSA-публичный ключ. По данным профиля группировки, опубликованного компанией Flare, TeamPCP действует как минимум с декабря 2025 года.

GitHub Issue #24512 в репозитории litellm был закрыт мейнтейнером как «not planned»; ветка обсуждения заполнена сотнями однотипных комментариев. По оценке исследователей FutureSearch, подобное поведение может свидетельствовать о компрометации аккаунта мейнтейнера.

Индикаторы компрометации (IoC)

  • Домен C2: models.litellm[.]cloud

  • Вредоносный файл: litellm_init.pth

  • SHA-256: ceNa7wMJnNHy1kRnNCcwJaFjWX3pORLfMh7xGL8TUjg

  • Бэкдор: ~/.config/sysmon/sysmon.py

  • K8s-поды: node-setup-* в namespace kube-system


Источники

Читают сейчас

Claude Code нашел 23-летний дефект в Linux

5 часов назад

Claude Code нашел 23-летний дефект в Linux

Николас Карлини, исследователь из Anthropic, рассказал на конференции [un]prompted 2026, что с помощью Claude Code обнаружил несколько удаленно эксплуатируемых уязвимостей в ядре Linux. Одна из них —

OpenAI приобрела популярное бизнес-шоу

6 часов назад

OpenAI приобрела популярное бизнес-шоу

Организация OpenAI приобрела популярное ток-шоу технологической индустрии TBPN — Technology Business Programming Network. Ведущим шоу станет главный политический стратег OpenAI Крис Лехейн. Ознакомить

Microsoft раскритиковали за принудительное включение Edge при запуске в тестах Windows 11

6 часов назад

Microsoft раскритиковали за принудительное включение Edge при запуске в тестах Windows 11

Пользователей возмутило, что Microsoft тестирует новые методы продвижения Edge как браузера по умолчанию в Windows 11. В критику компании включилась и коалиция браузеров. Читать далее

Claude не хватает серверов — но Anthropic сознательно не торопится закупать новые

6 часов назад

Claude не хватает серверов — но Anthropic сознательно не торопится закупать новые

Anthropic столкнулась с острым дефицитом серверных мощностей: спрос на Claude растет быстрее, чем компания наращивает инфраструктуру. По данным The Information и Axios, нехватка GPU уже приводит к сбо

6 часов назад

Telegram усилит защиту опросов от накрутки ботов

Основатель Telegram Павел Дуров объявил, что в мессенджере появятся дополнительные механизмы для борьбы с накруткой голосов в опросах. Об этом он сообщил в комментариях к одному из публичных опросов о