Злоумышленник, атаковавший LiteLLM, «добыл из логов OAuth-токены GitHub CLI»
- LiteLLM считает, что атакующий извлёк OAuth-токены GitHub CLI из логов публично доступного внутреннего развёртывания, куда их мог записывать Claude Code.
- Заражённая версия 1.107.0 находилась на PyPI 21 октября с 11:39 до 13:23 UTC; её скачали около 49 000 раз.
- С помощью учётных данных трёх разработчиков злоумышленник отключил защиту веток, одобрил production-сборку из репозитория-двойника и удалил записи о сборке.
Почему это важно: Вредоносная программа похищала пароли, cookie и ключи; Wiz также заметила проверку украденных AWS-данных для доступа к Bedrock.

LiteLLM заявила, что хакеры похитили необходимые им ключи из собственных логов компании. В среду они использовали их, чтобы опубликовать заражённую версию её программного обеспечения. Компания, разрабатывающая шлюз для ИИ с открытым исходным кодом, рассказала об этом в отчёте об инциденте. Его подписали генеральный директор, технический директор и руководитель службы безопасности компании.
Инженеры компании выяснили, что кодовый агент Anthropic Claude Code иногда включает токен командной строки GitHub для входа пользователя в свой ответ. Если такие ответы где-либо записываются в логи, токены могут попасть в логи LiteLLM, сообщила компания.
«Мы полагаем, что злоумышленник получил доступ к этому развёртыванию, извлёк из его логов токены OAuth GitHub CLI и впоследствии использовал эти учётные данные для компрометации нашего процесса выпуска», — написала LiteLLM.
Речь шла о собственном внутреннем развёртывании LiteLLM, доступном из публичного интернета. В нём была обнаружена «неожиданная учётная запись пользователя с безобидным названием», сообщила компания. LiteLLM пока не подтвердила, как злоумышленник проник в систему, но подозревает недавно исправленную уязвимость.
Три похищенных токена
LiteLLM позволяет разработчикам обращаться ко многим моделям ИИ через один API. Заражённая версия 1.107.0 находилась на PyPI с 11:39 до 13:23 UTC 21 октября. PyPI — основной индекс пакетов Python. Образы Docker были доступны с 11:46 до 14:20 UTC. LiteLLM заявила, что официальный тег исходного кода 1.107.0 на GitHub не содержит вредоносных файлов.
Исследователи из Upwind первыми сообщили о заражённом выпуске на GitHub. LiteLLM написала в X, что узнала о случившемся в 6:32 утра по тихоокеанскому времени. Это произошло почти через два часа после публикации заражённой версии.
Злоумышленник завладел учётными данными GitHub трёх разработчиков. В понедельник LiteLLM расширила права на выпуск версий, чтобы два инженера могли ежедневно публиковать исправления для клиентов. Злоумышленник использовал токен одного из двух владельцев организации GitHub, чтобы отключить защиту веток. Учётные данные второго разработчика позволили одобрить выпуск в production, собранный из репозитория-двойника Berri-AI/litellm. Третий разработчик удалил записи о процессе сборки.
Похищенные ключи пошли в ход
По данным компании по кибербезопасности Wiz, пакет содержал вредоносную программу для кражи учётных данных и бэкдор. Оба запускались при старте Python. Программа похищала пароли и файлы cookie из браузеров, облачные ключи, SSH-ключи и API-ключи для сервисов ИИ. Она также извлекала ключи поставщиков ИИ, хранившиеся в базе данных прокси-сервера LiteLLM.
Бэкдор работал только в Linux и macOS. Каждый час он проверял репозиторий GitHub в поисках сервера, с которого можно было загрузить дополнительный код. В этом репозитории не было ничего, кроме тестовых значений, а затем GitHub его удалил, сообщила Wiz. Компания добавила, что вредоносная программа демонстрировала явные признаки создания с помощью ИИ.
Wiz привела данные ClickPy, согласно которым заражённую версию скачали около 49 000 раз. Примерно через четыре с половиной часа после кражи Wiz заметила, что злоумышленник проверяет похищенные учётные данные Amazon Web Services. Они были получены с серверов сборки и узлов Kubernetes. Среди проверок был запрос списка моделей в Amazon Bedrock. По словам Wiz, это соответствует схеме LLMjacking — использованию похищенного доступа к облаку для запуска моделей ИИ.
«Похоже, это первый задокументированный случай применения в реальных условиях двух методов одновременно — файлов .pth и sitecustomize.py», — написали исследователи Wiz Бенджамин Рид и Рами Маккарти.
Атака произошла в тот же день, что и две критические уязвимости PHP.
Вторая атака за год
В 2026 году LiteLLM подверглась компрометации уже во второй раз. В марте две заражённые версии находились на PyPI около 40 минут. LiteLLM связала ту атаку с Trivy — сканером безопасности в конвейере сборки компании. Хакеры использовали Trivy и для того, чтобы проникнуть в Европейскую комиссию. Пострадала и компания Mercor, работающая с данными для ИИ, а Meta приостановила работу с ней над данными для ИИ.
Компания Socket, специализирующаяся на безопасности цепочек поставок, сообщила The Hacker News, что не обнаружила доказательств связи между двумя атаками. По её словам, различаются ключи шифрования, способ передачи данных и бэкдор.
«Это не исключает, что один и тот же оператор мог использовать разные инструменты, однако у нас нет доказательств в пользу такой версии», — заявила Socket.
LiteLLM посоветовала пользователям закрепить версию 1.106.2 или другой выпуск, опубликованный до атаки, удалить три вредоносных файла и сменить все секреты, к которым могли получить доступ затронутые компьютеры. Компания заявила, что корпоративные клиенты, загружавшие пакеты из её частного реестра, не пострадали.
