Хакерская группировка TeamPCP продолжает свою кампанию по компрометации цепочек поставок, на этот раз взломав чрезвычайно популярный пакет Python “LiteLLM” в репозитории PyPI и заявив о краже данных с сотен тысяч устройств в результате атаки.
LiteLLM — это библиотека Python с открытым исходным кодом, которая служит шлюзом к многочисленным поставщикам больших языковых моделей (LLM) через единый API. Пакет пользуется огромной популярностью: более 3,4 миллиона загрузок в день и свыше 95 миллионов за последний месяц.
Согласно исследованию Endor Labs, злоумышленники скомпрометировали проект и опубликовали сегодня в PyPI вредоносные версии LiteLLM 1.82.7 и 1.82.8, которые развертывают инфостилер, собирающий широкий спектр конфиденциальных данных.
Ответственность за атаку взяла на себя TeamPCP — хакерская группировка, стоявшая за недавним нашумевшим взломом сканера уязвимостей Trivy от Aqua Security. Считается, что этот взлом привел к каскадным компрометациям, которые затронули образы Docker от Aqua Security, проект KICS от Checkmarx, а теперь и LiteLLM.
Также было обнаружено, что группировка нацеливалась на кластеры Kubernetes с помощью вредоносного скрипта, который уничтожает все машины при обнаружении систем, настроенных для Ирана. В противном случае на устройствах в других регионах устанавливается новый бэкдор CanisterWorm.
Источники сообщили BleepingComputer, что количество эксфильтраций данных составляет около 500 000, при этом многие из них являются дубликатами. VX-Underground сообщает о схожем количестве «зараженных устройств».
Однако BleepingComputer не смог самостоятельно подтвердить эти цифры.
Атака на цепочку поставок LiteLLM
Endor Labs сообщает, что сегодня злоумышленники внедрили две вредоносные версии LiteLLM, каждая из которых содержит скрытую полезную нагрузку, выполняющуюся при импорте пакета.
Вредоносный код был внедрен в файл ‘litellm/proxy/proxy_server.py’ [VirusTotal] в виде полезной нагрузки, закодированной в Base64, которая декодируется и выполняется всякий раз, когда импортируется модуль.
Версия 1.82.8 вводит более агрессивную функцию, которая устанавливает файл с расширением ‘.pth’ с именем ‘litellm_init.pth’ [VirusTotal] в среду Python. Поскольку Python автоматически обрабатывает все файлы ‘.pth’ при запуске интерпретатора, вредоносный код будет выполняться всякий раз при запуске Python, даже если LiteLLM не используется целенаправленно.
После выполнения полезная нагрузка в конечном итоге развертывает вариант хакерского «TeamPCP Cloud Stealer» и скрипт для обеспечения постоянства. Анализ BleepingComputer показывает, что полезная нагрузка содержит практически ту же логику кражи учетных данных, что использовалась в атаке на цепочку поставок Trivy.
«После срабатывания полезная нагрузка запускает трехэтапную атаку: она собирает учетные данные (SSH-ключи, облачные токены, секреты Kubernetes, криптокошельки и файлы .env), пытается осуществить горизонтальное перемещение по кластерам Kubernetes, развертывая привилегированные поды на каждом узле, и устанавливает постоянный бэкдор systemd, который опрашивает сервер на предмет дополнительных бинарных файлов», — объясняют в Endor Labs.
«Эксфильтрованные данные шифруются и отправляются на домен, контролируемый злоумышленником».

Стилер собирает широкий спектр учетных данных и секретов аутентификации, включая:
- Системную разведку путем выполнения команд hostname, pwd, whoami, uname -a, ip addr и printenv.
- SSH-ключи и конфигурационные файлы
- Облачные учетные данные для AWS, GCP и Azure
- Токены учетных записей служб Kubernetes и секреты кластера
- Файлы окружения, такие как варианты .env
- Учетные данные баз данных и конфигурационные файлы
- TLS-приватные ключи и секреты CI/CD
- Данные криптовалютных кошельков
Полезная нагрузка облачного стилера также включает дополнительный скрипт, закодированный в Base64, который устанавливается как пользовательский сервис systemd под видом «Службы телеметрии системы», периодически связывающийся с удаленным сервером по адресу checkmarx[.]zone для загрузки и выполнения дополнительных полезных нагрузок.

Украденные данные упаковываются в зашифрованный архив с именем tpcp.tar.gz и отправляются на инфраструктуру, контролируемую злоумышленниками, по адресу models.litellm[.]cloud, где хакеры могут получить к ним доступ.

Смените скомпрометированные учетные данные!
Обе вредоносные версии LiteLLM были удалены из PyPI; последним чистым релизом является версия 1.82.6.
Организациям, использующим LiteLLM, настоятельно рекомендуется немедленно:
- Проверить наличие установок версий 1.82.7 или 1.82.8
- Немедленно сменить все секреты, токены и учетные данные, используемые на затронутых устройствах или найденные в коде на них.
- Искать артефакты постоянства, такие как ‘~/.config/sysmon/sysmon.py’ и связанные сервисы systemd
- Проверить системы на наличие подозрительных файлов, таких как ‘/tmp/pglog’ и ‘/tmp/.pg_state’
- Проверить кластеры Kubernetes на наличие неавторизованных подов в пространстве имен ‘kube-system’
- Отслеживать исходящий трафик на известные домены злоумышленников
При подозрении на компрометацию все учетные данные на затронутых системах следует считать скомпрометированными и немедленно сменить.
BleepingComputer неоднократно освещал взломы, вызванные тем, что компании не меняли учетные данные, секреты и токены аутентификации, обнаруженные в предыдущих инцидентах.
И исследователи, и злоумышленники сообщали BleepingComputer, что, хотя смена секретов является сложной задачей, это один из лучших способов предотвратить каскадные атаки на цепочки поставок.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Lawrence Abrams




