LiteLLM используют разработчики, которым нужно работать с разными нейросетями через единый интерфейс. Библиотека позволяет подключаться к моделям OpenAI, Anthropic и других поставщиков, а также управлять ключами доступа. Именно поэтому ее компрометация оказалась особенно неприятной: в таких системах часто хранятся данные, которые открывают доступ сразу к нескольким платным сервисам.
21 октября злоумышленники смогли вмешаться в процесс выпуска обновлений LiteLLM. Как подтвердили разработчики в официальном сообщении, атакующие использовали скомпрометированные учетные данные трех сотрудников и изменили механизм сборки программы.
В результате в каталог PyPI попала версия 1.107.0 с дополнительными вредоносными файлами. Они присутствовали во всех семи готовых пакетах для установки, хотя исходный код официального релиза на GitHub не содержал этих компонентов.
Здесь и скрывалась главная опасность. Разработчик мог проверить исходники, не обнаружить ничего подозрительного, а затем установить уже скомпрометированную сборку.
Вредоносная программа использовала особенности запуска Python. Файлы cook.pth и sitecustomize.py позволяли выполнять посторонний код при запуске интерпретатора, даже если сама библиотека LiteLLM не использовалась в конкретной программе.
Один компонент собирал конфиденциальные данные: переменные окружения, ключи облачных сервисов, учетные данные разработчиков и другие доступные секреты. Собранная информация отправлялась на подконтрольный злоумышленникам сервер.
Второй компонент создавал скрытый фоновый процесс, который периодически проверял внешний источник команд. Такая схема давала возможность загружать и запускать дополнительный код уже после первоначального заражения.
