Хакерская группа TeamPCP атаковала экосистему ИИ через популярный SDK LiteLLM, подменив пакет в PyPI

APT

Сообщество разработчиков искусственного интеллекта столкнулось с одной из самых изощренных атак на цепочку поставок за последнее время. Злоумышленники из группировки TeamPCP скомпрометировали учётную запись основного разработчика популярного Python SDK LiteLLM и опубликовали в официальном репозитории PyPI вредоносные версии пакета. Поскольку этот инструмент, имеющий свыше 40 000 звёзд на GitHub, широко используется как шлюз для работы с большими языковыми моделями (Large Language Models, LLM), последствия атаки могут быть крайне серьёзными для тысяч проектов. Уникальность инцидента заключается в использовании скрытного механизма выполнения кода, который срабатывает при каждом запуске интерпретатора Python, без необходимости импорта заражённого модуля.

Описание

Расследование, проведённое командой OpenSourceMalware, показало, что атака стала кульминацией цепочки компрометаций, начавшейся на неделе ранее. TeamPCP, также известная под псевдонимами DeadCatx3 и ShellForce, ранее была замечена в атаках на репозитории GitHub, включая организацию aquasec-com. Однако теперь тактика группировки эволюционировала от дефейсинга к полноценной атаке на цепочку поставок с вредоносной полезной нагрузкой. Первой фазой операции стала регистрация домена litellm.cloud 23 марта, который был стилизован под легитимный домен проекта litellm.ai и использовался для выгрузки похищенных данных.

Далее злоумышленники получили контроль над учётной записью krrishdholakia, сооснователя и CEO проекта LiteLLM, в репозитории пакетов PyPI. Это позволило им напрямую, в обход систем CI/CD проекта на GitHub, загрузить две вредоносные версии пакета - 1.82.7 и 1.82.8. Если в первой версии вредоносный код был встроен в файл proxy_server.py и требовал импорта, то во второй атака стала куда более опасной. Злоумышленники добавили файл "litellm_init.pth", который автоматически исполняется механизмом site модуля Python при каждом запуске интерпретатора, независимо от того, импортируется ли пакет litellm в коде. Это гарантировало выполнение вредоносной нагрузки на любой системе, где был установлен или обновлён пакет.

Параллельно с публикацией пакетов TeamPCP провела масштабную кампанию по компрометации аккаунтов на GitHub. Были дефейшены 15 репозиториев в организации BerriAI, поддерживающей LiteLLM, а также личный аккаунт основного разработчика, куда было отправлено 182 коммита за две минуты. Эти действия подтвердили, что злоумышленники получили не только доступ к организации, но и к персональному токену доступа (Personal Access Token, PAT) разработчика. Попытки сообщества привлечь внимание к проблеме были заблокированы спам-атакой: более 50 бот-аккаунтов одновременно засыпали комментариями issue с обсуждением уязвимости, пытаясь утопить легитимные отчёты.

Согласно анализу, вредоносная полезная нагрузка представляет собой комплексный сборщик учётных данных. Программа ищет и похищает ключи доступа ко всем основным облачным провайдерам (AWS, Google Cloud, Microsoft Azure), конфигурационные файлы Kubernetes, SSH- и GPG-ключи, историю командных оболочек, переменные окружения с API-ключами (включая ключи OpenAI и Anthropic), а также файлы окружения (.env). Особое внимание уделяется файлам криптокошельков для Bitcoin, Ethereum, Solana и других блокчейнов. Собранные данные шифруются с использованием гибридной схемы (AES-256 и RSA-4096) и отправляются на контролируемый злоумышленниками домен.

Наиболее опасная часть атаки активируется, если вредоносный код выполняется внутри pod в кластере Kubernetes. В этом случае скрипт не ограничивается кражей секретов, а пытается захватить контроль над всем кластером. Используя служебный аккаунт (service account) pod, он перечисляет все секреты во всех пространствах имён, а затем на каждом узле создаёт привилегированный pod с доступом к файловой системе хоста. Через этот pod на хост устанавливается бэкдор, маскирующийся под системный сервис с именем "System Telemetry Service" (sysmon.service). Этот сервис обеспечивает постоянное присутствие злоумышленника в инфраструктуре, переживая перезапуски pod и даже ребуты узлов, и периодически опрашивает командно-контрольный сервер за инструкциями.

Эксперты отмечают, что атака на LiteLLM является логическим продолжением предыдущих операций TeamPCP. В начале марта группировка скомпрометировала теги (tags) GitHub Actions для популярного сканера уязвимостей Trivy, подменив их на версии со сборщиком учётных данных. Похоже, что токены доступа к PyPI и GitHub, использованные для атаки на LiteLLM, были похищены именно из систем непрерывной интеграции и поставки (CI/CD) проекта BerriAI, который использовал Trivy в своих пайплайнах. Это демонстрирует классическую цепочку атаки, где компрометация одного инструмента безопасности приводит к взлому инфраструктур, которые от него зависят. На текущий момент проект litellm в PyPI полностью заблокирован администрацией репозитория, что остановило распространение вредоносных версий, однако тысячи разработчиков уже могли установить их. Специалистам по безопасности настоятельно рекомендуется проверить системы на наличие файла "litellm_init.pth" в директориях site-packages и отозвать все учётные данные, которые могли находиться в среде выполнения.

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

IPv4

  • 46.151.182.203

Domans

  • litellm.cloud
  • models.litellm.cloud

URLs

  • checkmarkr.zone/raw
Комментарии: 0