Утёкший мастер-ключ LiteLLM обернулся отравлением релиза Python-пакета
Компания LiteLLM, разрабатывающая популярный шлюз для больших языковых моделей, в пятницу сообщила о компрометации, причиной которой стала старая и, казалось бы, давно исправленная ошибка.
Ключ, который забыли отозвать
27 мая 2026 года в публичный репозиторий LiteLLM-Labs/lite-harness был по неосторожности закоммичен конфигурационный файл с мастер-ключом от развёртывания Agent Platform — открытого инструмента для оркестрации агентов. Ошибку быстро заметили, коммит перезаписали принудительным push, а ключи отметили как подлежащие отзыву. Однако сам мастер-ключ так и не отозвали.
Этой оплошностью 10 октября 2026 года воспользовался неизвестный атакующий (адрес 69.48.229.143). Через Agent Platform он извлёк OAuth-токен GitHub CLI, которым сервис пользовался, чтобы самостоятельные облачные агенты могли открывать pull-запросы. Токен не был ограничен в правах и принадлежал владельцу организации — то есть давал полный доступ ко всем репозиториям.
Захват конвейера релизов
Далее злоумышленник через короткоживущие ветки запускал рабочие процессы, крадущие токены ещё двух инженеров-мейнтейнеров, после чего эти запуски удалял. 21 октября он обошёл защиту веток и переключил источник релиза с настоящего репозитория BerriAI/litellm на поддельный Berri-AI/litellm.
Обычно релиз требует запуска уполномоченным инженером и подтверждения со специального аккаунта, привязанного к физическому устройству в офисе. Но ради частых багфиксов это правило временно ослабили, разрешив любым двум инженерам запускать и утверждать релиз. Атакующий воспользовался именно этим. В LiteLLM отмечают: он мог бы и вовсе снять ограничение сам, но, видимо, не стал — чтобы не привлекать внимания.
В результате версия LiteLLM 1.107.0 оказалась опубликована на PyPI, а затем в Docker Hub и GHCR. Через считанные минуты производственные и промежуточные записи о запусках были удалены. Атаку заметил исследователь Upwind Лидор Маклуф; PyPI поместил версию на карантин, а заражённые образы в Docker Hub удалили или переключили на проверенные.
Что делал вредоносный пакет
По данным Socket и Microsoft, файлы версии 1.107.0 запускались автоматически при старте Python — даже если приложение вовсе не импортировало LiteLLM. Вредонос состоял из модуля-похитителя учётных данных (токены разработческих инструментов, облаков, браузеров, ключи npm, PyPI, Cargo и других менеджеров пакетов) и Unix-бэкдора, который раз в час скачивал и исполнял произвольный код. Собранные данные уходили на домен litellm.dev/healthcheck, зарегистрированный 13 октября.
Опасность усугублялась тем, что стартовые файлы лежали вне каталога самого приложения, так что удаление только файлов LiteLLM оставляло вредоносные компоненты на месте. Компания теперь отзывает все токены во всех внутренних системах и у сторонних поставщиков.
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.