Группировка TeamPCP атаковала цепочку поставок AI через компрометацию библиотеки LiteLLM и скачала учётные данные провайдеров

TeamPCP

Цепочки поставок программного обеспечения переживают очередную волну атак. Теперь злоумышленники нацелились на модули искусственного интеллекта. Вслед за недавней публикацией о симуляции AI-атак эксперты зафиксировали реальный инцидент с популярной библиотекой LiteLLM. Это открытый шлюз, который предоставляет единый интерфейс для обращения к более чем сотне больших языковых моделей через формат OpenAI. Атака продемонстрировала, как один скомпрометированный компонент способен открыть доступ к целому созвездию облачных сервисов и разработческих сред.

Описание

Злоумышленники из группы TeamPCP внедрили вредоносный код прямо в код библиотеки. Механизм атаки оказался многоступенчатым и затронул инфраструктуру непрерывной интеграции и доставки (CI/CD, конвейер автоматической сборки и развёртывания). Всё началось с компрометации другого инструмента - Trivy, популярного сканера уязвимостей. Хакеры подделали коммиты и подменили личности легитимных мейнтейнеров, чтобы получить доступ. После этого они выложили вредоносную версию Trivy в репозиторий GitHub. Автоматический конвейер выпуска подхватил изменения и распространил заражённые бинарные файлы через GitHub Releases, Docker Hub и Amazon ECR.

Именно этот отравленный Trivy стал ключом к LiteLLM. Дело в том, что конвейер сборки LiteLLM использовал Trivy на своём этапе проверки безопасности. Поскольку TeamPCP уже контролировала поддельный Trivy, вредоносная версия просканировала память раннера CI/CD и извлекла токен для публикации пакетов в PyPI (репозиторий Python-пакетов). С его помощью атакующие выложили две версии LiteLLM - 1.82.7 и 1.82.8, минуя основной репозиторий исходного кода библиотеки. Каждая из них применяла разную технику внедрения.

Версия 1.82.7 выполняла прямую инъекцию в файл proxy_server.py. Вредоносный код был закодирован в Base64 и вставлен прямо в скрипт. Он запускался при старте прокси-сервера LiteLLM. Версия 1.82.8 действовала скрытнее. Она добавляла в каталог site-packages файл litelllm_init.pth. Такие файлы исполняются при каждом запуске интерпретатора Python, ещё до импорта каких-либо модулей. То есть после установки пакета через pip install LiteLLM==1.82.8 нагрузка активировалась в каждом последующем Python-процессе, даже если LiteLLM явно не импортировался.

Анализ показал, что полезная нагрузка состоит из трёх этапов. Первый - сбор данных. Скрипт сразу сканирует переменные окружения и конфигурационные файлы, связанные с облачными провайдерами и AI-сервисами. Он извлекает ключи OpenAI, Anthropic, секреты Azure из переменных окружения. Затем идут метаданные облаков AWS, GCP, Azure, которые используются SDK. Наконец, из домашнего каталога копируются файлы ~/.kube/config и ~/.aws/credentials.

Второй этап - шифрование и выгрузка. Скрипт генерирует 32-байтовый сеансовый ключ AES, шифрует данные алгоритмом AES-256-CBC с ключом, выведенным через PBKDF2. Всё упаковывается в архив tpcp.tar.gz и отправляется на сервер models.litellm.cloud с помощью curl.

Третий этап - закрепление в системе. Для этого устанавливается файл Sysmon.py, реализующий бэкдор с опросом по таймеру. Сначала пауза составляет 300 секунд, затем каждые 50 минут (3000 секунд) скрипт обращается к ресурсу checkmarx.zone/raw. Если в ответе обнаруживается URL, начинающийся с "http", он загружает файл в /tmp/pglog, делает его исполняемым и запускает в фоновом режиме.

Эксперты отмечают в своём анализе, что данная атака является наглядным примером новой угрозы для AI-инфраструктуры. LiteLLM выступает единым шлюзом к крупнейшим провайдерам нейросетей. Компрометация одной библиотеки даёт злоумышленникам одновременный доступ к учётным данным OpenAI, Anthropic и Azure. Фактически теряется контроль над несколькими связанными AI-провайдерами разом.

Инцидент подтверждает, что цепочки поставок становятся всё более уязвимыми, а модули искусственного интеллекта - привлекательной целью. Специалистам по безопасности стоит пересмотреть процессы проверки зависимостей в своих конвейерах, особенно когда речь идёт о библиотеках, управляющих доступом к облачным AI-сервисам.

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

URLs

  • https://checkmarx.zone/raw
  • https://models.litellm.cloud/

SHA1

  • 2d94efc6d49e05b314a9da55804f6a0d57154b18
  • 9e7587b990ae57319a6afedeba3b8873f6238206

Комментарии: 0