Как LiteLLM 1.107.0 превратили в ловушку для учётных данных?

Популярный Python-пакет LiteLLM оказался скомпрометирован в результате атаки на цепочку поставок ПО. По сообщениям SafeDep, Socket, StepSecurity и Upwind, версия 1.107.0 содержала похититель учётных данных и бэкдор. Вредоносный релиз распространялся через колёса PyPI и Docker-образы. Сейчас пакет помещён в карантин на Python Package Index (PyPI), а заражённые Docker-образы удалены.
Как LiteLLM 1.107.0 превратили в ловушку для учётных данных?
Изображение носит иллюстративный характер

Вредоносный код рассчитан на сбор облачных учётных данных, приватных ключей, данных браузеров и файлов авторизации для инструментов разработки ИИ. По словам Оливера Дженсена, директора по безопасности LiteLLM, расследование продолжается: компания пока выясняет, каким способом злоумышленники добились публикации релиза.
Дженсен сообщил, что вредоносные действия провели через GitHub-аккаунты трёх инженеров, предположительно используя украденные OAuth-токены GitHub CLI. С одного аккаунта запустили процедуру project-releaser, другой аккаунт подтвердил её. Все токены, замеченные в атаке, отозваны. Но LiteLLM пока не установила, как они попали к злоумышленникам, и потому не может утверждать, что дальнейшего доступа к аккаунтам нет.
В качестве временной меры LiteLLM удалила из своей организации на GitHub всех пользователей, кроме одного, чья учётная запись не была затронута. Компания также убрала из публичных реестров доверенные ссылки на свою GitHub-организацию, чтобы затруднить публикацию новых вредоносных пакетов.
В перечень затронутых файлов LiteLLM 1.107.0 вошли 107.0-cp310-abi3-macosx_10_12_x86_64.whl (так имя указано в опубликованном перечне), litellm-1.107.0-cp310-abi3-macosx_11_0_arm64.whl, litellm-1.107.0-cp310-abi3-manylinux_2_28_aarch64.whl, litellm-1.107.0-cp310-abi3-manylinux_2_28_x86_64.whl, litellm-1.107.0-cp310-abi3-musllinux_1_2_aarch64.whl, litellm-1.107.0-cp310-abi3-musllinux_1_2_x86_64.whl и litellm-1.107.0-cp310-abi3-win_amd64.whl. Архив litellm-1.107.0.tar.gz не содержал файлов с полезной нагрузкой, но его pyproject.toml был изменён.
Запуск происходил ещё до импорта LiteLLM: при старте интерпретатора Python файл cook.pth автоматически выполнял единственную строку import cook. По данным StepSecurity, первый модуль назывался privcollect. Он собирал облачные токены и пароли, данные учётных записей разработчиков и приватные ключи, JSON-файлы с секретами AI-инструментов, переменные окружения, а также данные Chromium и Firefox. В установках LiteLLM вредоносная программа могла извлечь сохранённые прокси-сервера учётные данные и конфигурацию моделей.
Собранную информацию злоумышленники упаковывали в TAR-архив с GZIP-сжатием и отправляли HTTP POST-запросом на litellm[.]dev/healthcheck. Второй модуль запускал фоновый процесс-демон: раз в час тот проверял GitHub-репозиторий github[.]com/letters9813 и читал файл domain.txt. Если в файле был указан домен, программа повторно запускала похититель данных, отправляла HTTP GET-запрос к <domain>/codepy и выполняла полученный ответ. Сейчас репозиторий возвращает ошибку 404.
Похожий приём с cook.pth, который позволяет исполнить код до импорта LiteLLM, обнаруживали и при компрометации LiteLLM, связанной с атаками TeamPCP на цепочку поставок. Это произошло ранее в марте; год и точная дата в опубликованной информации не указаны.
Тем, кто скачал версию 1.107.0, следует из чистой среды отозвать все потенциально раскрытые учётные данные и заменить их. Для LiteLLM рекомендуется закрепить версию 1.106.2 по дайджесту, а не полагаться только на номер версии.


Новое на сайте

20873Как Chrome и Safari мешают мошенникам красть данные? 20872Может ли один запрос взломать сервер на PHP? 20871Что скрывает критическая уязвимость GitLab с оценкой CVSS 10,0? 20870Как LiteLLM 1.107.0 превратили в ловушку для учётных данных? 20869Когда ИИ-агенты отключают контроль 20868Уязвимости Plex открыли путь майнерам и Linux-бэкдору 20867Взлом OpenCode Console: под угрозой могли оказаться ключи OpenAI, Anthropic и Google 20866Rank Math PRO: заражённое обновление оставило на сайтах самовосстанавливающийся бэкдор 20865Как исследовательские модели OpenAI обходили ограничения и присваивали чужие данные 20864Атака на BeyondTrust: шпионская группа получила доступ к серверам поддержки 20863Как пакет imgdecode превращает npm-зависимость в загрузчик вредоносного кода? 20862Как PEERSTITCH обходит проверки VPN-сессий FortiOS? 20861Что происходит, когда ИИ-агент выходит за пределы тестовой среды? 20860Как 37-летняя ошибка открыла путь к root в OpenBSD 7.9? 20859ИИ-модели для SOC: точный ответ зависит от улик
Ссылка