В популярных версиях Python-пакета LiteLLM, загружаемого с PyPI более 97 миллионов раз в месяц, был выявлен встроенный стилер учетных данных, который крал важную информацию, включая SSH-ключи, токены AWS, GCP и Azure, а также другие API-ключи, необходимые для доступа к OpenAI и другим провайдерам LLM. Вредоносные версии уже удалены с PyPI, а последняя корректная версия — 1.82.6.
Атака произошла достаточно необычно: вредоносный код активировался при установке пакета, а в версии 1.82.8 он запускался при каждом запуске Python, даже без подключения библиотеки. Данные шифровались и отправлялись на поддельный домен.
Компрометация произошла в результате случайного обнаружения уязвимости, когда плагин в IDE Cursor подтянул LiteLLM как зависимость. Группировка TeamPCP, ответственная за серию supply chain атак, может стоять за данной уязвимостью. Разработчики призывают всех, кто использует скомпрометированные версии, обновить учетные данные и проверить свои CI/CD-пайплайны.
Вопрос-ответ
Какова природа проблемы и чем опасен пакет LiteLLM?
В популярных версиях LiteLLM на PyPI обнаружен встроенный стилер учетных данных, который крадет SSH-ключи, токены AWS, GCP и Azure, а также другие API-ключи, необходимые для доступа к OpenAI и другим провайдерам LLM. Вредоносная версия сразу крала данные или запускалась при каждом запуске Python (в зависимости от версии). Удаление вредоносных версий и выпуск безопасной версии 1.82.6 уже произведено. Пользователи должны обновиться до безопасной версии и сменить украденные учетные данные.
Как узнать, были ли затронуты ваши проекты и какие версии пакета использовать безопасно?
Проверьте зависимость LiteLLM в ваших проектах. Если встречаются версии ранее 1.82.6, особенно 1.82.8 и ниже, немедленно обновитесь до 1.82.6 или более поздних исправленных сборок. Также пересмотрите CI/CD пайплайны на наличие подозрительных изменений и потенциальной утечки учетных данных. Рекомендуется проводить аудит секретов и регенерировать ключи/API, которые могли быть скомпрометированы.
Что делать, если вы уже установили вредоносную версию пакета?
1) Немедленно обновитесь до безопасной версии (1.82.6 или позже). 2) Смените украденные учетные данные (SSH-ключи, токены облачных провайдеров и API-ключи). 3) Проведите аудит CI/CD пайплайнов и репозиториев на предмет несанкционированных изменений или встроенного кода. 4) Сообщите команде безопасности и, если применимо, поставщикам облачных услуг. 5) Рассмотрите внедрение дополнительной защиты секретов и мониторинга аномалий в пайплайнах.
Какие признаки компрометации стоит отслеживать в дальнейшем?
Признаки включают неожиданные сетевые подключения к неизвестным доменам, шифрование и отправку данных из окружения, необычную активность в пайплайнах (например, новые переменные окружения, изменения в зависимостях), неожиданные запуски кода при старте Python, а также оповещения от систем безопасности об попытках кражи секретов. Важно регулярно сканировать проекты на наличие несанкционированного кода и поддерживать централизованный реестр секретов.