Недавний инцидент с программным обеспечением LiteLLM продемонстрировал, как уязвимость в распространении программного обеспечения может привести к серьезным последствиям для пользователей. В результате атаки, произошедшей 24 марта, злоумышленник, получивший доступ к учетной записи одного из поддерживающих разработчиков, опубликовал две вредоносные версии LiteLLM на платформе PyPI: 1.82.7 и 1.82.8. Эти версии превратили обычную установку Python в инструмент для кражи криптовалютных кошельков, который искал конфиденциальные данные каждый раз при запуске Python.
Что такое LiteLLM?
LiteLLM позиционирует себя как унифицированный интерфейс для более чем 100 поставщиков больших языковых моделей. Это делает его особенно привлекательным для разработчиков, работающих с конфиденциальными данными. По данным PyPI Stats, в последнем месяце LiteLLM было загружено более 96 миллионов раз. Однако, как показал инцидент, такая популярность также делает его мишенью для злоумышленников.
Механизм атаки
Версия 1.82.7 требовала прямого импорта модуля litellm.proxy для активации вредоносного кода, в то время как версия 1.82.8 внедряла файл .pth (litellm_init.pth) в установку Python. Документация Python подтверждает, что исполняемые строки в файлах .pth запускаются при каждом старте Python, что означало, что версия 1.82.8 выполнялась без необходимости импорта. Таким образом, любое устройство, на котором была установлена эта версия, запускало вредоносный код при следующем запуске Python.
Объем воздействия
По оценкам FutureSearch, в течение 46 минут было зафиксировано 46,996 загрузок, из которых 32,464 приходились на версию 1.82.8. Кроме того, было зафиксировано 2,337 пакетов PyPI, зависимых от LiteLLM, 88% из которых позволяли использование скомпрометированных версий на момент атаки. Страница инцидента LiteLLM предупреждала, что любой, чья зависимость включала LiteLLM через незащищенные транзитивные ограничения в этот период, должен считать свою среду потенциально уязвимой.
Цели вредоносного ПО
По данным SafeDep, вредоносное ПО было нацелено на сбор конфиденциальной информации, связанной с криптовалютами. Оно искало файлы конфигурации Bitcoin и Ethereum, а также файлы конфигурации Solana. В частности, вредоносное ПО проявляло особую активность в поиске пар ключей валидатора Solana, ключей голосования и директорий развертывания Anchor. Это подчеркивает, что кража авторизованного ключа может дать злоумышленнику полный контроль над операциями валидатора и его вознаграждениями.
Реакция и последствия
После обнаружения инцидента PyPI заблокировала обе версии примерно в 11:25 UTC 24 марта. LiteLLM удалил вредоносные сборки, сменил учетные данные разработчиков и обратился за помощью к Mandiant. На данный момент последней доступной версией является 1.82.6. Однако, несмотря на быструю реакцию, существует риск, что пользователи, установившие или обновившие LiteLLM в указанный период, могут не осознавать полного объема воздействия на их системы.
Потенциальные последствия для криптокоманд
Для команд, работающих с криптовалютами, инцидент подчеркивает необходимость более строгого разделения ролей и повышения уровня безопасности. Хранение ключей валидаторов в полностью оффлайн-режиме, использование изолированных подписей для развертывания и применение краткосрочных облачных учетных данных могут помочь минимизировать риски. Быстрая реакция команды DSPy на инцидент и рекомендации LiteLLM указывают на необходимость создания герметичных сборок как стандарта для устранения уязвимостей.
Заключение
Инцидент с LiteLLM стал ярким примером того, как злоумышленники могут использовать уязвимости в программном обеспечении для кражи конфиденциальной информации. Он подчеркивает важность соблюдения мер безопасности и необходимости быстрого реагирования на угрозы. Пользователи, установившие скомпрометированные версии, должны считать свои системы полностью уязвимыми и предпринять меры для защиты своих данных. Важно помнить, что безопасность в цифровом пространстве требует постоянного внимания и обновления практик, чтобы предотвратить подобные инциденты в будущем.
