The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В PyPI размещены вредоносные выпуски библиотеки LiteLLM, насчитывающей 95 млн загрузок в месяц

24.03.2026 23:39 (MSK)

Разработчики Python-библиотеки LiteLLM, насчитывающей 95 млн загрузок в месяц и 3.5 млн за последние сутки, сообщили о компрометации проекта. Атакующие смогли перехватить учётные данные сопровождающего и опубликовать в PyPI два вредоносных выпуска - 1.82.7 и 1.82.8, содержащих код для кражи ключей и паролей с систем пользователей. В настоящее время вредоносные версии удалены из PyPI, а проект временно заморожен до окончания разбирательства.

Токен доступа к учётной записи LiteLLM в PyPI попал в руки атакующих из-за использования в системе непрерывной интеграции сканера безопасности зависимостей trivvy. До этого в конце февраля атакующие смогли получить доступ к инфраструктуре проекта Trivy, воспользовавшись уязвимостью в обработчике pull_request_target, запускаемом в системе непрерывной интеграции Trivy. После компрометации атакующие опубликовали вредоносные выпуски Trivy 0.69-0.69, подменили GitHub Action обработчик trivy-action и разместили модифицированный Docker-образ с Trivy.

24 марта в 11:30 (MSK) перехваченные учётные данные сопровождающего LiteLLM (krrishdholakia) были использованы для прямой публикации вредоносных релизов LiteLLM 1.82.7 и 1.82.8 в PyPI в обход официального GitHub CI/CD. Репозиторий проекта на GitHub не пострадал - вредоносная активность наблюдалась только в PyPI. В выпуске LiteLLM 1.82.7 вредоносный код был встроен в файл litellm/proxy/proxy_server.py и активировался при импорте litellm.proxy. В выпуске 1.82.8 в состав был включён файл site-packages/litellm_init.pth, а в файл proxy_server.py был добавлен обработчик, упакованный в формате base64 и активируемый при любом запуске.

Добавленный вредоносный код осуществлял сканирование и отправку конфиденциальных данных. Отправлялись найденные в системе ключи SSH и SSL/TLS, содержимое переменных окружения, учётные данные к AWS, GCP, Azure и K8s, ключи от криптокошельков, пароли к СУБД, история операций в командном интерпретаторе, файлы конфигурации от Git, CI/CD, пакетных менеджеров и Docker. Обнаруженные данные шифровались с использованием алгоритмов AES-256-CBC + RSA-4096 и отправлялись HTTP POST-запросом на сайт "https://models.litellm.cloud/" (домен litellm.cloud был зарегистрирован за несколько часов до публикации вредоносных релизов).

Пользователям LiteLLM рекомендовано убедиться в отсутствии в каталоге site-packages файла litellm_init.pth, обновить все ключи и учётные данные в случае установки версии 1.82.7 или 1.82.8, закрепить конкретные версии LiteLLM в параметрах загрузки зависимостей и сверить используемые выпуски LiteLLM с кодом релизов на GitHub.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Перехвачены 4 учётные записи в PyPI и выпущены вредоносные релизы num2words
  3. OpenNews: Фишинг-атака на сопровождающих Python-пакеты в репозитории PyPI
  4. OpenNews: Инциденты с безопасностью в репозиториях PyPI и crates.io
  5. OpenNews: Атакующие получили доступ к 174 учётным записям в каталоге PyPI
  6. OpenNews: Злоумышленник захватил управление над 4 проектами в репозитории PyPI
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65065-pypi
Ключевые слова: pypi, litellm, hack
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (23) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 00:05, 25/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +20 +/
    Самым слабым звеном оказался сканер безопасности
     
     
  • 2.2, Сладкая булочка (?), 00:17, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Проблема в настройках СI. Почему вообще какой-то сканер может перехатывать учетку? У него поди еще и автообновление зависимостей было.
     
     
  • 3.14, Tron is Whistling (?), 07:27, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Девляпсинг же. Классический подход, причём при полном незнании как основ, так и того, что делают.
     
     
  • 4.20, Аноним (20), 08:24, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Девляпс. Теперь банановый^W ллмновый!
     
     
  • 5.32, Аноним (32), 13:13, 25/03/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.31, Аноним (32), 13:11, 25/03/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.4, Аноним (4), 00:35, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Как отличить сканер безопасности от вируса? За сканер платят добровольно.
     
     
  • 3.23, Аноним (23), 09:21, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Сканер не самораспространяется.
     
     
  • 4.33, Аноним (32), 13:14, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Трояны тоже.
     
  • 2.17, Аноним (17), 07:56, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слабость в архитектуре проекта. И такое будет продолжаться.
     
  • 2.29, Аноним83 (?), 12:05, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Так причём тут это?
    В С/С++ проектах такое за всю историю может 1-2 раза случалось и то не публично, потому что разработчик сам зависимости прописывает, сам добавляет в сборку а не фигачит всё подряд.
     

  • 1.5, Аноним (5), 01:09, 25/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Новый npm-leftpad теперь питон?
     
     
  • 2.6, Аноним (6), 01:26, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Новый nlohmann-json теперь сиплюсплюс?
     
     
  • 3.18, Аноним (17), 08:00, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мне неизвестны публичные репозитории C++, в которые кто угодно может писать что угодно. И еще, C++ - язык программирования, а не инфраструктура, которой является сабж (а также еще несколько модных проектов), а все системы программирования на С++ контролируются серьезными компаниями/сообществами. Поэтому писать вредоносные обновления некуда.
     
  • 2.30, пох. (?), 12:25, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    лефтпад хотя бы без "сканеров безопастносте" обходился.

     

  • 1.7, Грустный (?), 06:06, 25/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Пострадали только те, кто пользуется LLM? Ну
     
     
  • 2.9, Sm0ke85 (ok), 07:08, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Пострадали только те, кто пользуется LLM? Ну

    Поддержу двумя руками)))

     
     
  • 3.34, Аноним (32), 13:18, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    "перехваченные учётные данные сопровождающего LiteLLM (krrishdholakia)"

    krrishdholakia - hot финнcкиe разработчики.

     

  • 1.22, Аноним (22), 08:41, 25/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хм, как по мне эта та проблема, которая вообще должна решаться на уровне системы и языка программирования, используя так называемые возможности, разрешения, ключа доступа, токена, - да называйте это как хотите!

    Идея не новая, но практика показывает, что это необходимость, чтобы у кода чисто технически не было возможности например получить доступ в сеть или к файловой системе на прямую "из воздуха". Нужны языки, которые будут это гарантировать!

    Например, есть исследовательский проект какого-то чувака, называется Austral programming language, - где данная проблема решается с помощью линейных типов (мне импонирует философия лежащая в основе); есть какой-то проект от Майкрософт -  Koka. Но как мне кажется среди всего этого есть очень хороший шанс выстрелить у Hylo, во-первых пилит один из авторов LLVM и Swift, синтаксис основан на Swift, а значит в дальнейшем есть вероятность, что это как-то заюзают Apple, либо в самом Swift, либо напрямую; во-вторых, язык решает туже проблему что и Rust, но делает это по-другому, по сути избавляя программиста от такого понятия как ссылка; в-третьих, там также можно будет решить проблему о которой говорилось вначале! Итог: безопасность на уровне памяти как в Rust + безопасность на уровне возможностей самого кода; в общем тоже весьма интересный проект! В общем, через лет 15 начнут переписывать все с Rust на Hylo;)))

     
     
  • 2.24, Аноним (5), 10:25, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    есть миллион способов решить проблему, вот только все решения такие себе, даже если каждую функцию сделать отдельным исполняемым файлом и данные гонять через сериализацию, то задолбаешься права назначать, а даже если назначишь, то работать будет медлено.

    это в целом не решаемо, даже если код изолировать на отдельных физических чипах со своей отдельной памятью, даже если вообще это будет не код, а устройство механическое, или биологический исполнитель

    ну представь что у тебя мануфактура, и 100 сотрудников, и ты к каждому приписываешь контролера, будет +100 контролеров, жуткий оверхед, вот только вместо 100 точек отказа у тебя уже 200, любого могут подкупить.

    за столько лет, ниодна компания не гарантировала 100% рабочего продутка, у любой уважаемой есть возврат и ремонт, чем код лучше/хуже тостеров и пылисосов, хоть обмажся сертификатами и точками контроля, от космических лучей и скачков напряжения не спасет, не конечно можно, каждому транзистору свинцовый саркофаг, но чет такое себе, современный девайс изготовленный по военным нормам будет с комнату размером и цена как у квартиры будет.

     
  • 2.26, Аноним (17), 10:30, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > на уровне системы и языка программирования

    Опять на уровне языка?! Не нужно добавлять в язык программирования библиотеки (кроме стандартных), фреймворки, модули и прочее, и нагружаться проверкой безопасности неизвестно откуда взятых кусков [скомпилированного, в том числе на C/C++] кода. Возьмите, что-ли, пример с C/C++, Фортрана, Паскаля, Бэйсика.

     
  • 2.28, Аноним (28), 11:38, 25/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > это необходимость, чтобы у кода чисто технически не было возможности например получить доступ в сеть или к файловой системе

    Уже дохрена лет как умные люди из АНБ США придумали для этих целей SELinux. Но это не для окончивших курсы кодинга на питоне.
    > Нужны языки, которые будут это гарантировать!

    То есть, языки, которые не будут делать то, что прописано в коде. Ты гений!

     

  • 1.36, Аноним (36), 13:59, 25/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >убедиться в отсутствии в каталоге site-packages файла litellm_init.pth

    pth - это бэкдор в питоне, как и pickle, но хуже.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру