Популярный пакет LiteLLM PyPI содержит бэкдор для кражи учетных данных и токенов аутентификации
Хакерская группировка TeamPCP продолжает взламывать цепочки поставок. На этот раз она скомпрометировала чрезвычайно популярный пакет Python LiteLLM на PyPI и заявила, что в ходе атаки были похищены данные с сотен тысяч устройств.
LiteLLM — это библиотека Python с открытым исходным кодом, которая предоставляет доступ к нескольким поставщикам больших языковых моделей (БЯМ) через единый API. Этот пакет очень популярен: его скачивают более 3,4 миллиона раз в день и более 95 миллионов раз за последний месяц.
Согласно исследованию Endor Labs, злоумышленники взломали проект и сегодня опубликовали в PyPI вредоносные версии LiteLLM 1.82.7 и 1.82.8, в которых используется программа для кражи информации, собирающая широкий спектр конфиденциальных данных.
Ответственность за атаку взяла на себя TeamPCP — хакерская группировка, стоящая за недавним громким взломом сканера уязвимостей Trivy от Aqua Security. Считается, что этот взлом привел к каскадным компрометациям, которые повлияли на образы Docker от Aqua Security, проект Checkmarx KICS, а теперь и на LiteLLM.
Также было обнаружено, что группа атакует кластеры Kubernetes с помощью вредоносного скрипта, который стирает данные со всех компьютеров при обнаружении систем, настроенных для работы в Иране. В остальных случаях на устройства в других регионах устанавливается новый бэкдор CanisterWorm.
Источники сообщили BleepingComputer, что было похищено около 500 000 файлов, многие из которых являются дубликатами. VX-Underground сообщает о примерно таком же количестве «заражённых устройств».
Однако BleepingComputer не смог подтвердить эти цифры самостоятельно.
Атака на цепочку поставок LiteLLM
Endor Labs сообщает, что сегодня злоумышленники выпустили две вредоносные версии LiteLLM, каждая из которых содержит скрытую полезную нагрузку, которая активируется при импорте пакета.
Вредоносный код был внедрен в ‘litellm/proxy/proxy_server.py’ [VirusTotal] в виде полезной нагрузки в кодировке base64, которая декодируется и активируется при импорте модуля.
В версии 1.82.8 появилась более агрессивная функция, которая устанавливает в среду Python файл ‘.pth’ с именем ‘litellm_init.pth’ [VirusTotal]. Поскольку 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
- Данные криптовалютного кошелька
Вредоносная программа Cloud Stealer также содержит дополнительный скрипт в кодировке 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, что, несмотря на сложность ротации секретных данных, это один из лучших способов предотвратить каскадные атаки на цепочки поставок.
Редактор: AndreyEx


