27 мая 2026 года в публичном репозитории LiteLLM-Labs/lite-harness оказался конфигурационный файл с мастер-ключом развертывания LiteLLM Agent Platform — открытого инструмента для оркестрации ИИ-агентов. Сотрудники LiteLLM Оливер Дженсен и Матео Ванг сообщили, что утечку быстро обнаружили, а коммит удалили принудительным обновлением истории Git. Открытые ключи признали подлежащими отзыву, но мастер-ключ не отозвали.

10 октября неизвестный злоумышленник с адреса 69.48.229[.]143 воспользовался этим ключом и проник в Agent Platform. Там он извлек OAuth-токен GitHub CLI, настроенный для облачных агентов на собственных серверах компании. Токен не имел ограничений по доступу и принадлежал владельцу организации GitHub, поэтому открывал все репозитории организации и позволял добывать новые учетные данные.
В тот же день злоумышленник создавал коммиты в короткоживущих ветках внутренних репозиториев BerriAI/litellm и BerriAI/litellm-auto. Расследование Socket восстановило два вредоносных коммита с файлом .github/workflows/cache.yml. Первый появился 10 октября 2026 года в 22:11:45 UTC; ветки назывались ci-tmp-a351cc и ci-tmp-4d8517. Их основывали на недавних легитимных коммитах, а сами изменения обозначили одинаково: «ci: bump cache config». Workflow запускался при каждом push коммита или тега — on: [push], — после чего ветки удалили через несколько минут.
По словам исследователя Socket Карло Занки, workflows собирали GitHub-токены и идентификатор с ключом подписи GitHub App, API-ключи рабочего пространства Linear, развертывания LiteLLM и Together AI, состояние браузера Playwright, а также строку подключения, имя учетной записи и пароль PostgreSQL, адрес, порт и пароль Redis. Данные отправлялись на два адреса webhook[.]site: 65a42464-3cfa-4b02-a18c-17a6d7b86f37 и 4da03473-a3e7-4dc2-a087-9c564b4208e1. Занки отдельно пояснил: токены GitHub и приватные ключи GitHub App дают доступ к самой платформе размещения кода. Переменная E2E_LINEAR_STORAGE_STATE_B64 содержала сериализованное состояние сессии Playwright; действующая сессия могла открыть связанный аккаунт Linear без пароля и многофакторной проверки.
21 октября, с 10:08 до 11:08 UTC, злоумышленник обошел защиту веток и перенаправил источник релизного процесса на поддельный репозиторий Berri-AI/litellm, отличающийся от настоящего BerriAI/litellm. В 11:39–11:40 на PyPI загрузили LiteLLM версии 1.107.0, а в 11:46 появились образы в Docker Hub и GHCR. Записи о запусках production и staging удалили в 11:53–11:54. В 12:06 исследователь Upwind Лидор Махлуф сообщил об атаке на цепочку поставок; в 13:23 PyPI поместил версию 1.107.0 в карантин. В хронике также указано, что 21 октября 2025 года в 14:20 теги Docker Hub v1.107.0, latest, main-latest и main-stable удалили или перенаправили на проверенные чистые образы. Дата 2025 года приведена именно так, хотя остальные события в этой последовательности датированы 2026-м.
Обычный порядок выпуска требовал, чтобы релиз запускал уполномоченный инженер, а подтверждал специальный аккаунт, привязанный к физическому устройству в офисе компании. Ранее на той неделе ограничение ослабили ради более частых релизов и обратного переноса исправлений: запускать и подтверждать выпуск могли любые два инженера. LiteLLM сообщила, что злоумышленник одним похищенным токеном инициировал релиз после подмены репозитория, другим — утвердил его. У владельца организации был доступ, позволявший ослабить или убрать это ограничение; по оценке команды, атакующий, вероятно, не стал этого делать, чтобы не привлечь внимания.
Версия 1.107.0 содержала код, который мог запускаться при старте Python, даже если приложение не импортировало LiteLLM. Вредоносная нагрузка состояла из похитителя учетных данных и бэкдора для Unix-систем. Первый собирал сведения о компьютере, SSH-файлы, данные Git и GitLab, переменные окружения и токены npm, PyPI, pip, Yarn, Maven, Gradle, Composer, RubyGems и Cargo. Второй работал в фоне и раз в час загружал с сервера и запускал код, предоставленный атакующим.
Собранные данные сжимались и отправлялись HTTP POST-запросом на litellm[.]dev/healthcheck. Домен зарегистрировали 13 октября 2026 года. Microsoft Security Research предупредила, что достаточно запустить Python в зараженной среде: импорт LiteLLM для активации не требовался. Поскольку файлы запуска находились вне каталога приложения, удаление только файлов LiteLLM могло оставить вредоносные компоненты на месте.
В ходе расследования первоначальная версия LiteLLM состояла в том, что OAuth-токены GitHub CLI похитили из внутренних журналов развертывания. Данные Socket показали более широкий сбор секретов; Оливер Дженсен признал, что по мере появления свидетельств расследование менялось и некоторые ранние предположения оказались неточными или неполными. Компания заявила, что отзывает все токены, связанные с внутренними системами и платформами поставщиков.

Изображение носит иллюстративный характер
10 октября неизвестный злоумышленник с адреса 69.48.229[.]143 воспользовался этим ключом и проник в Agent Platform. Там он извлек OAuth-токен GitHub CLI, настроенный для облачных агентов на собственных серверах компании. Токен не имел ограничений по доступу и принадлежал владельцу организации GitHub, поэтому открывал все репозитории организации и позволял добывать новые учетные данные.
В тот же день злоумышленник создавал коммиты в короткоживущих ветках внутренних репозиториев BerriAI/litellm и BerriAI/litellm-auto. Расследование Socket восстановило два вредоносных коммита с файлом .github/workflows/cache.yml. Первый появился 10 октября 2026 года в 22:11:45 UTC; ветки назывались ci-tmp-a351cc и ci-tmp-4d8517. Их основывали на недавних легитимных коммитах, а сами изменения обозначили одинаково: «ci: bump cache config». Workflow запускался при каждом push коммита или тега — on: [push], — после чего ветки удалили через несколько минут.
По словам исследователя Socket Карло Занки, workflows собирали GitHub-токены и идентификатор с ключом подписи GitHub App, API-ключи рабочего пространства Linear, развертывания LiteLLM и Together AI, состояние браузера Playwright, а также строку подключения, имя учетной записи и пароль PostgreSQL, адрес, порт и пароль Redis. Данные отправлялись на два адреса webhook[.]site: 65a42464-3cfa-4b02-a18c-17a6d7b86f37 и 4da03473-a3e7-4dc2-a087-9c564b4208e1. Занки отдельно пояснил: токены GitHub и приватные ключи GitHub App дают доступ к самой платформе размещения кода. Переменная E2E_LINEAR_STORAGE_STATE_B64 содержала сериализованное состояние сессии Playwright; действующая сессия могла открыть связанный аккаунт Linear без пароля и многофакторной проверки.
21 октября, с 10:08 до 11:08 UTC, злоумышленник обошел защиту веток и перенаправил источник релизного процесса на поддельный репозиторий Berri-AI/litellm, отличающийся от настоящего BerriAI/litellm. В 11:39–11:40 на PyPI загрузили LiteLLM версии 1.107.0, а в 11:46 появились образы в Docker Hub и GHCR. Записи о запусках production и staging удалили в 11:53–11:54. В 12:06 исследователь Upwind Лидор Махлуф сообщил об атаке на цепочку поставок; в 13:23 PyPI поместил версию 1.107.0 в карантин. В хронике также указано, что 21 октября 2025 года в 14:20 теги Docker Hub v1.107.0, latest, main-latest и main-stable удалили или перенаправили на проверенные чистые образы. Дата 2025 года приведена именно так, хотя остальные события в этой последовательности датированы 2026-м.
Обычный порядок выпуска требовал, чтобы релиз запускал уполномоченный инженер, а подтверждал специальный аккаунт, привязанный к физическому устройству в офисе компании. Ранее на той неделе ограничение ослабили ради более частых релизов и обратного переноса исправлений: запускать и подтверждать выпуск могли любые два инженера. LiteLLM сообщила, что злоумышленник одним похищенным токеном инициировал релиз после подмены репозитория, другим — утвердил его. У владельца организации был доступ, позволявший ослабить или убрать это ограничение; по оценке команды, атакующий, вероятно, не стал этого делать, чтобы не привлечь внимания.
Версия 1.107.0 содержала код, который мог запускаться при старте Python, даже если приложение не импортировало LiteLLM. Вредоносная нагрузка состояла из похитителя учетных данных и бэкдора для Unix-систем. Первый собирал сведения о компьютере, SSH-файлы, данные Git и GitLab, переменные окружения и токены npm, PyPI, pip, Yarn, Maven, Gradle, Composer, RubyGems и Cargo. Второй работал в фоне и раз в час загружал с сервера и запускал код, предоставленный атакующим.
Собранные данные сжимались и отправлялись HTTP POST-запросом на litellm[.]dev/healthcheck. Домен зарегистрировали 13 октября 2026 года. Microsoft Security Research предупредила, что достаточно запустить Python в зараженной среде: импорт LiteLLM для активации не требовался. Поскольку файлы запуска находились вне каталога приложения, удаление только файлов LiteLLM могло оставить вредоносные компоненты на месте.
В ходе расследования первоначальная версия LiteLLM состояла в том, что OAuth-токены GitHub CLI похитили из внутренних журналов развертывания. Данные Socket показали более широкий сбор секретов; Оливер Дженсен признал, что по мере появления свидетельств расследование менялось и некоторые ранние предположения оказались неточными или неполными. Компания заявила, что отзывает все токены, связанные с внутренними системами и платформами поставщиков.