The OpenNET Project / Index page

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

Подмена зависимости в Python-библиотеке, насчитывающей 40 млн загрузок в месяц

10.03.2025 19:54

В библиотеке Python JSON Logger выявлена уязвимость (CVE-2025-27607) дающая возможность подменить зависимость при установке через каталог PyPI и добиться выполнения своего кода на системах, использующих данный пакет. Библиотека Python JSON Logger, которая позволяет организовать ведение лога в формате JSON, за последний месяц была загружена 40 млн раз. Проблема устранена в версии Python JSON Logger 3.3.0, опубликованной 7 марта.

Уязвимость вызвана тем, что в числе необязательных зависимостей у Python JSON Logger была указана библиотека "msgspec-python313-pre", авторы которой в декабре 2024 года удалили свой проект из каталога PyPI, не уведомив разработчиков зависимых пакетов. Соответственно, злоумышленники могли загрузить в каталог PyPI свою библиотеку с тем же именем и она была бы подхвачена при сборке Python JSON Logger.

Выявивший проблему исследователь зарегистрировал новый пакет именем msgspec-python313-pre и продемонстрировал на практике возможность выполнения кода при установке Python JSON Logger с зависимостями для разработчиков, используя команду "pip install python-json-logger[dev]" на системах с Python 3.13.

Примечательно, что администраторов PyPI ранее несколько раз просили запретить удаление проектов, чтобы не допустить инциденты в стиле left-pad и защитить пользователей от потенциальных угроз совершения атак через зависимости (supply chain), но предложения не были воплощены в жизнь и повторная регистрация оставалась возможной.

  1. Главная ссылка к новости (https://github.com/nhairs/pyth...)
  2. OpenNews: Уязвимость в Python-пакете Js2Py, загружаемого более миллиона раз в месяц
  3. OpenNews: Уязвимость в Python, позволяющая вызвать системные команды из изолированных скриптов
  4. OpenNews: В каталоге PyPI выявлены вредоносные библиотеки, использующие CDN PyPI для скрытия канала связи
  5. OpenNews: Атакующие получили доступ к 174 учётным записям в каталоге PyPI
  6. OpenNews: Внедрение двухфакторной аутентификации в PyPI привело к инциденту с удалением популярного пакета
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62856-pypi
Ключевые слова: pypi, pythpn
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (28) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 20:01, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > не уведомив разработчиков зависимых пакетов

    а должен был? это же опенсорс, детка, здесь и удалить своё репо могут

     

  • 1.2, Ivan_83 (ok), 20:07, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > выявлена уязвимость (CVE-2025-27607)

    В чём уязвимость то!?
    Причём тут вообще какой то питон логер!?


    Это проблема системы установки зависимостей самого питона допускающая атаку на цепочку поставок.

    В общем репутация CVE скамеров помножается на ноль.

     
     
  • 2.12, Аноним (1), 21:21, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    тебе никогда не стать фрибзд комиттером, как бы ты не старался

    цве нужен для того, чтобы когда человек прочёл заафекченные версии, мог сразу понять - он скорее всего заафекчен, а вот версия Х+1, где зависимость убрали\изменили - она уже безопасна

     
     
  • 3.24, Ivan_83 (ok), 00:00, 11/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Чувак, мне им никогда не стать потому что я уже и не хочу давно. Да и раньше не очень сильно хотел.

    А если ты навешиваешь CVE по зависимости - то тебе надо навешивать её не на одну нещастную либу а на все проекты где эта зависимость есть. Мне чото кажется таких проектов должно быть больше одного.

    Но вообще, я не видел раньше чтобы CVE вешали вот так.
    В том же ffmpeg да и прочих популярных либах ни раз что то находили, но никогда не приходили к проектам которые эти либы юзают.

     

  • 1.3, Аноним (3), 20:18, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Фигасе они насрали в обсуждении: https://discuss.python.org/t/stop-allowing-deleting-things-from-pypi/17227

    Кто читал, какая аргументация против?

    Кстати, май инглиш из вери бэд, бат "Stop Allowing deleting things from PyPI?" переводится Гуглом как "Запретить удаление объектов из PyPI?". Как это соотносится с "просили запретить повторную регистрацию удалённых проектов"???

     
     
  • 2.4, Ivan_83 (ok), 20:32, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да вот так.
    Смотри какой прикол: я беру пачку денег которые охота сжечь ради лулзов, открываю топ этого вашего пипа, дальше пишу авторам: куплюк ваш проект прям сегодня за $10к.
    Кто то с первой сотни по любому согласится.

    Дальше я туда или коммичу фигню ломающую всё, ну типа оставляю только coc.md, или пихаю майнер или грохаю репу.

    А дальше ловлю лулзы с телека про то как всё везде сломалось.
    Притом с случае coc.md мне и предъявить то нечего: я честно купил, дальше делаю что хочу со своим проектом.

     
     
  • 3.9, Аноним (9), 20:54, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Подобная шляпа решается версионированием, а точнее запретом (платформы хостинга репозитария) на изменения\удаление архивных версий. Ну а что вы хотели, ваш проект зависимостями задействован в другом ПО.
    Ну т.е. в кюррент "20250319_6.8.24" ты изменения писать конечно можешь, а вот подменить\удалить архив(20210101_01.1.1.) - ты уже не должен иметь прав вообще.
    Вопрос лишь во времени заморозки - через день-два, или неделю.
    Удивлен, если в Пипи это не реализовано. Хотя что с них взять, вечно думают в шлангах и гейтах, вместо безопасности.
     
     
  • 4.21, пох. (?), 23:36, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > вы хотели, ваш проект зависимостями задействован в другом ПО.

    DMCA takedown, и удалишь как миленький. (авторские права? Неаааа, не слышал?)

    Внезапно, использование зависимостей - ответственность тех кто их использует (вот они, если хотят - могут у себя коллекционировать архивы - но никому их не показывать).
    А автор имеет полное право взять и перестать предоставлять тебе исходники.

    (причем в большинстве правовых систем это право - даже передать нельзя, оно неотъемлемое. Т.е. не получится повесить при входе грозную табличку "ваш код не ваш код с момента его выкладывания в нашу помойку")

     
  • 4.23, Ivan_83 (ok), 23:55, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну т.е. в кюррент "20250319_6.8.24" ты изменения писать конечно можешь, а вот подменить\удалить архив(20210101_01.1.1.) - ты уже не должен иметь прав вообще.

    ШО!?
    Я типа за $10к это купил (или сам написал с нуля), делаю чо хочу.
    Не нравится - идите в лес и пишите там сами.
    А если ты против то приедут ребята в пативэне и применят обеспечительные резиновые меры и к серверам и к их владельцам. Но скорее всего хватит и просто емыла/звонка с обещанием приехать если через 5 минут не будет готово.

     
  • 3.26, Аноним (26), 00:11, 11/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >$10k

    1. Оторван от реальности. Для тех вот авторов топовых проектов твои $10k - копейки. Пошлют далеко и надолго. И в паблик переписку выложат, просто чтобы поржать.
    2. Как только ты это сделаешь ... огребёшь от платформы. Напомнить, какая корпорация взяла там на себя роль хозяина всей опенсорс экосистемы, и что она делает, когда очередной лефтпадчик наглеет?

     
     
  • 4.27, Аноним (9), 04:10, 11/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.5, Аноним (5), 20:35, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Там ниже по тексту обсуждение запрета удаления в контексте защиты от повторного использования: If we remove project deletion, which is just one way to prevent name reuse, we should permit orphanage or something similar.
     
  • 2.6, Аноним (6), 20:48, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Заходил Кэп, передавал что если нельзя будет удалить, то нельзя будет и повторно зарегистрировать.
     
     
  • 3.10, Аноним (10), 20:55, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но всегда можно перепродать
     
     
  • 4.19, Аноним (19), 23:01, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Всегда можно найти выход.
     

  • 1.7, Аноним (7), 20:51, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Уязвимости уровня "придти, вскрыть при всех, перепаять.. профит!" уже не впечатляют, пошли уязвимости "а вот если бы"...
     
  • 1.8, Аноним (8), 20:53, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я не использую PyPI. Ставлю через APT и через GitHub. Уже более 10 лет. Полёт нормальный. Шах и мат, подменщики зависимостей.

    cat /etc/pip.conf
    [global]
    no-index = true
    no-deps = true

     
     
  • 2.11, Аноним (9), 20:56, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Где тот отважный герой-мантейнер, который перепаковывает все проекты из пипи, в апт-репозитарий?
    P.S. Сам я в CPAN тоже давно не заходил - все из портов ставлю.
     
     
  • 3.25, Аноним (26), 00:04, 11/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем все перепаковывать, если можно просто из гита ставить? pip это умеет.
     
     
  • 4.28, Аноним (9), 04:11, 11/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И как это защитит от очередного васяна, который решил пакеты на гите порушить?
     
  • 2.20, Аноним (20), 23:27, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > cat /etc/pip.conf

    cat: /etc/pip.conf: Нет такого файла или каталога

     

  • 1.13, Аноним (13), 21:26, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PyPI, NPM, Cargo доставляют... зонды.
     
  • 1.14, Илья (??), 21:59, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И только в нугете таких проблем не было
     
  • 1.16, Tron is Whistling (?), 22:18, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ахах, ну вот как раз то, о чём я и писал. Каждому лефтпаду - по пакету непонятно где. И все вот эти вот язычки без динамической линковки, и вся эта практика сбора монолита автоматом - вот сюда вот и приводит.
     
  • 1.17, Аноним (17), 22:23, 10/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Плюс в копилку пакетников дистров.
     
     
  • 2.22, пох. (?), 23:37, 10/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как будто их создают не скриптом, чохом подбирающим любой мусор из той же самой пиписки?

     
     
  • 3.29, Аноним (9), 04:14, 11/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.30, Аноним (30), 04:34, 11/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Никогда не любил эти менеджеры пакетов в яп. Нужна библиотека - пиши сам или скачай на сайте руками. На каждую программу на таких языках приходится тянуть в систему целую помойку из зависимостей. Будто чувакам их в линуксе не хватает так они их в свой софт пихают.
     

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



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

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