TeamPCP внедрила вредоносный код в LiteLLM через цепочку поставок

TeamPCP провела атаку на цепочку поставок, затронувшую GitHub Actions, PyPI, npm, Docker Hub и OpenVSX. В версиях LiteLLM 1.82.7 и 1.82.8 обнаружили вредоносный код: он собирал конфиденциальные данные, а в некоторых средах обеспечивал закрепление и удалённое выполнение кода.

Путь от среды Trivy к другим проектам

Кампания началась с эксплуатации неправильно настроенного рабочего процесса pull_request_target в среде CI Trivy. Это позволило злоумышленникам похитить персональный токен доступа Aqua Security. Используя всё ещё действительные учётные данные, TeamPCP принудительно отправила вредоносные коммиты в связанные с Trivy репозитории и опубликовала скомпрометированные образы Docker.

Модифицированный сканер извлекал память исполнителей заданий, облачные учётные данные, ключи SSH и другие секреты. При этом он продолжал выполнять легитимное сканирование. Учётные данные, полученные из скомпрометированных сред CI/CD, применялись для заражения других проектов.

TeamPCP развернула самораспространяющийся червь для npm, скомпрометировала теги GitHub Action Checkmarx KICS и опубликовала вредоносные расширения для VS Code. Затем команда получила токен публикации в PyPI из конвейера сборки LiteLLM, где использовалось скомпрометированное действие Trivy.

Вредоносный код в LiteLLM

В LiteLLM 1.82.7 полезную нагрузку внедрили в файл proxy_server.py. Она запускалась при импорте прокси. Версия 1.82.8 сохранила этот код и включала файл LiteLLM_init.pth размером 34 628 байт. Python автоматически выполняет такие файлы при запуске интерпретатора.

Полезная нагрузка состояла из нескольких уровней кода Python, закодированных в Base64. Она нацеливалась на среды CI/CD, проверяя переменную GITHUB_ACTIONS, и применяла дополнительное географическое ограничение на основе локали и реестра.

Вредоносная программа собирала более 50 категорий конфиденциальных данных. Среди них были учётные данные для AWS, GCP и Azure, конфигурации Kubernetes, токены служебных учётных записей и секреты кластера, ключи SSH, а также файлы Docker, npm, Git, Vault, баз данных, Terraform, CI/CD, VPN, криптографических кошельков и TLS. Программа также собирала историю командной строки, файлы .env и ключи API для LLM.

Закрепление, передача данных и инфраструктура

Программа могла перечислять секреты Kubernetes и создавать привилегированные поды, монтировавшие файловые системы узлов. Это обеспечивало закрепление на уровне всего кластера. Собранные данные шифровались с помощью AES-256-CBC, а сеансовый ключ защищался встроенным публичным ключом RSA-4096-OAEP. Затем данные отправлялись на инфраструктуру, контролируемую злоумышленниками.

На системах, не относящихся к CI, вредоносная программа устанавливала пользовательский модуль systemd sysmon.service и бэкдор на Python в каталоге ~/.config/sysmon/. Бэкдор периодически загружал и выполнял вредоносные нагрузки с домена checkmarx[.]zone. Он сохранял работоспособность после перезагрузки и обеспечивал удалённое выполнение кода.

Инфраструктура кампании также включала домен models[.]litellm[.]cloud, связанные IP-адреса и механизм аварийного отключения, основанный на ответах со строкой «youtube». Обнаружению атаки частично способствовал дефект, аналогичный бомбе процессов (fork bomb): он приводил к исчерпанию ресурсов ЦП и сбоям из-за нехватки памяти.

Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.

Ознакомиться подробнее с отчетом можно по ссылке.

Технологии киберугроз
Автор: Технологии киберугроз
Технологии киберугроз – технологическая компания, специализирующаяся на решениях по анализу угроз для предприятий любого размера. Мы собираем, нормализуем, обогащаем информацию о киберугрозах со всего мира. Нашими источниками являют более 260 открытых фидов, более 100 открытых поставщиков Threat Intelligence-отчетов, открытые online sandbox, социальные сети и репозитории GitHub. Мы также предоставляем ряд сервисов по: семантическом анализу Threat Intelligence-отчетов и приведения их в машиночитаемый формат STIX 2.1, проверки IoC на потенциальные ложноположительные сработки, а также получению WHOIS-записей для доменных имен.
Комментарии:

Как мы обрабатываем данные: политика обработки персональных данных