В библиотеке Python JSON Logger выявлена уязвимость (CVE-2025-27607) дающая возможность подменить зависимость при установке через каталог PyPI и добиться выполнения своего кода на системах, использующих данный пакет. Библиотека Python JSON Logger, которая позволяет организовать ведение лога в формате JSON, за последний месяц была загружена 40 млн раз. Проблема устранена в версии Python JSON Logger 3.3.0, опубликованной 7 марта...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62856
> не уведомив разработчиков зависимых пакетова должен был? это же опенсорс, детка, здесь и удалить своё репо могут
Что??!! В 2025 году pypi автоматически не уведомляет ?!!Что за пещерные люди !
Ну вообще-то нет. Что выложено - то выложено. Надоело вечно допиливать - просто перестаёшь новые версии выгружать
Это разработчики python должны были предусмотреть возможность фиксации зависимостей.
А они и предусмотрели. Но васяны с лефтпадом этой возможностью не пользуются, потому что во-первых это совершенно ненужная им затрата времени, во-вторых с новой версией лефтпада может приехать устраненная уязвимость с тем же самым успехом, в-третьих васян вовсе может не предполагал невиданного узбека своего лефтпада, использующего десять других лефтпадов, а просто пилил для себя, и не собирается переживать из-за того что ты встроил его васян-код в свой скрипт управления системой NORAD.Такая возня с ручной фиксацией цифирек возможна только в корпоративной разработке, да и то если только под руку не толкают со сроками и фичами. (Т.е. невозможна даже и там.)
Ну и у васяна под кроватью, но кому он нужен, ломать его...
почему они вам что-то должны ?
> должны были предусмотретьВ рамках суммы, уплаченной за дистрибутив.
> выявлена уязвимость (CVE-2025-27607)В чём уязвимость то!?
Причём тут вообще какой то питон логер!?
Это проблема системы установки зависимостей самого питона допускающая атаку на цепочку поставок.В общем репутация CVE скамеров помножается на ноль.
тебе никогда не стать фрибзд комиттером, как бы ты не старалсяцве нужен для того, чтобы когда человек прочёл заафекченные версии, мог сразу понять - он скорее всего заафекчен, а вот версия Х+1, где зависимость убрали\изменили - она уже безопасна
Чувак, мне им никогда не стать потому что я уже и не хочу давно. Да и раньше не очень сильно хотел.А если ты навешиваешь CVE по зависимости - то тебе надо навешивать её не на одну нещастную либу а на все проекты где эта зависимость есть. Мне чото кажется таких проектов должно быть больше одного.
Но вообще, я не видел раньше чтобы CVE вешали вот так.
В том же ffmpeg да и прочих популярных либах ни раз что то находили, но никогда не приходили к проектам которые эти либы юзают.
Вне зависимости от стараний никогда не стать тем, для кого будет великой честью работать как прОклятому за бесплатно на тех кто гребёт баблоу на пожертвованиях и тратит его хз как и хз куда
О, Боги, за что такое наказание, каков же смысл жЫть дальше :)
Смысл жизни – стать удобрением.
Фигасе они насрали в обсуждении: https://discuss.python.org/t/stop-allowing-deleting-things-f...Кто читал, какая аргументация против?
Кстати, май инглиш из вери бэд, бат "Stop Allowing deleting things from PyPI?" переводится Гуглом как "Запретить удаление объектов из PyPI?". Как это соотносится с "просили запретить повторную регистрацию удалённых проектов"???
Да вот так.
Смотри какой прикол: я беру пачку денег которые охота сжечь ради лулзов, открываю топ этого вашего пипа, дальше пишу авторам: куплюк ваш проект прям сегодня за $10к.
Кто то с первой сотни по любому согласится.Дальше я туда или коммичу фигню ломающую всё, ну типа оставляю только coc.md, или пихаю майнер или грохаю репу.
А дальше ловлю лулзы с телека про то как всё везде сломалось.
Притом с случае coc.md мне и предъявить то нечего: я честно купил, дальше делаю что хочу со своим проектом.
Подобная шляпа решается версионированием, а точнее запретом (платформы хостинга репозитария) на изменения\удаление архивных версий. Ну а что вы хотели, ваш проект зависимостями задействован в другом ПО.
Ну т.е. в кюррент "20250319_6.8.24" ты изменения писать конечно можешь, а вот подменить\удалить архив(20210101_01.1.1.) - ты уже не должен иметь прав вообще.
Вопрос лишь во времени заморозки - через день-два, или неделю.
Удивлен, если в Пипи это не реализовано. Хотя что с них взять, вечно думают в шлангах и гейтах, вместо безопасности.
> вы хотели, ваш проект зависимостями задействован в другом ПО.DMCA takedown, и удалишь как миленький. (авторские права? Неаааа, не слышал?)
Внезапно, использование зависимостей - ответственность тех кто их использует (вот они, если хотят - могут у себя коллекционировать архивы - но никому их не показывать).
А автор имеет полное право взять и перестать предоставлять тебе исходники.(причем в большинстве правовых систем это право - даже передать нельзя, оно неотъемлемое. Т.е. не получится повесить при входе грозную табличку "ваш код не ваш код с момента его выкладывания в нашу помойку")
товарищ ну вы то должны понимать что авторские права и права на распространение - это не муж и жена, а четыре разных человека?право идентифицировать себя, как автора произведения, оно и правда неотчуждаемое, а право на распространение, то самое копи- в копирайте - вполне себе отчуждаемое
Так достаточно кинуть DCMA предъяву, чтобы ввели обеспечительные меры, а то что через месяц или год после судов и разборок это вернут на место - ваще пофик.
птушо что тебе предоставляют мит и жепль лицензии? не право считать себя Рав Моше Столлманом, например, право копировать его произведения в хвост и в гриву.
Право то оно право, только вот название придётся брать другое.
> Ну т.е. в кюррент "20250319_6.8.24" ты изменения писать конечно можешь, а вот подменить\удалить архив(20210101_01.1.1.) - ты уже не должен иметь прав вообще.ШО!?
Я типа за $10к это купил (или сам написал с нуля), делаю чо хочу.
Не нравится - идите в лес и пишите там сами.
А если ты против то приедут ребята в пативэне и применят обеспечительные резиновые меры и к серверам и к их владельцам. Но скорее всего хватит и просто емыла/звонка с обещанием приехать если через 5 минут не будет готово.
>$10k1. Оторван от реальности. Для тех вот авторов топовых проектов твои $10k - копейки. Пошлют далеко и надолго. И в паблик переписку выложат, просто чтобы поржать.
2. Как только ты это сделаешь ... огребёшь от платформы. Напомнить, какая корпорация взяла там на себя роль хозяина всей опенсорс экосистемы, и что она делает, когда очередной лефтпадчик наглеет?
1. Сильное заявление, доказывать его, конечно, никто не будет.
1.1. И? Постоянно такое всплывает, когда китайцы покупают расширения для браузеров.
2. ...только находясь в штатовской юрисдикции или юрисдикции их европейских вассалов. Реально, на территории ~70% всей обитаемой суши, прямо или косвенно не подпадающей под штатовские законы единственное что эта корпорация может - удалить аккаунт и заспамить тебя туповатыми полуавтоматическими письмами про "встретимся в суде", на которые просто ложится болт.
Это ты оторван от реальности и явно даже читать не умеешь.Для автора очередной вот такой msgspec-python313-pre (название конечно само за себя говорит) уже удаленной нахрен из репо - очень даже не копейки. Он, небось, вообще не думал что его васяноподелка кому-то нужна может оказаться. А оно - опачки, используется кое-кем третьим, у кого 40 миллионов загрузок (и кто ему, кстати, ничего не заплатит вообще).
И таких лефтпадов слепленных на скорую руку из дерьма и... дерьма без единой палочки - полный пипи.
Потому что "для того и брали", в том и смысл существования примитивных языков с миллионами лефтпадов, что всю твою работу за тебя выполнил миллион неведомых васянов с незаконченным средним образованием.
1. Я для того и написал взять ТОП, а потом спускатся по нему. Первые 50 наверное пошлют, а дальше остальные начнут думать и соглашатся, как бы до аукциона на понижение в итоге не дошло :)
Цель то не взять вершину топа а любой или любые проекты у которых много потребителей.
Вот указанная фигня явно была очень далеко от топа, но поломала коего кого что был выше.
2. Огребу что? Бан - дапофиг, для меня это как лишится читательского билета в мухосранске - потеря которая никак не ощущается.
Там ниже по тексту обсуждение запрета удаления в контексте защиты от повторного использования: If we remove project deletion, which is just one way to prevent name reuse, we should permit orphanage or something similar.
Заходил Кэп, передавал что если нельзя будет удалить, то нельзя будет и повторно зарегистрировать.
Но всегда можно перепродать
Всегда можно найти выход.
> Кстати, май инглиш из вери бэдАвтоматическим переводчиком в браузере принципиально не пользуетесь?
Уязвимости уровня "придти, вскрыть при всех, перепаять.. профит!" уже не впечатляют, пошли уязвимости "а вот если бы"...
Не, тут классическое "хакер и солонка"
А я не использую PyPI. Ставлю через APT и через GitHub. Уже более 10 лет. Полёт нормальный. Шах и мат, подменщики зависимостей.cat /etc/pip.conf
[global]
no-index = true
no-deps = true
Где тот отважный герой-мантейнер, который перепаковывает все проекты из пипи, в апт-репозитарий?
P.S. Сам я в CPAN тоже давно не заходил - все из портов ставлю.
Зачем все перепаковывать, если можно просто из гита ставить? pip это умеет.
И как это защитит от очередного васяна, который решил пакеты на гите порушить?
неудобный вопрос, игнорируем
Очень просто: ты ручками смотришь репозиторий перед использованием. Полная due digilence: лицензия (вы же не хотите вляпаться в GPL), pyproject.toml, далее исходники.
> ты ручками смотришь репозиторий перед использованиемУгу, и все стопиццот зависимостей тоже. "pip это умеет!" (нет. И с точно тем же успехом ты мог бы смотреть в исходники с pypi. Но у тебя лапки и ты не умеешь кодить.)
> cat /etc/pip.confcat: /etc/pip.conf: Нет такого файла или каталога
Это твоя проблема, что ты его не создал.
PyPI, NPM, Cargo доставляют... зонды.
И только в нугете таких проблем не было
Ахах, ну вот как раз то, о чём я и писал. Каждому лефтпаду - по пакету непонятно где. И все вот эти вот язычки без динамической линковки, и вся эта практика сбора монолита автоматом - вот сюда вот и приводит.
там проблема в возможности удаления пакетов, которые уже могут быть в зависимостях
Либо запретить удаление пакетов( что очевидно. Запарился поддерживать - ну и бросай это дело. Но, что уже сделано - то остаётся )
Либо - помимо версии и названия пакета, запоминать его хеши, чтобы можно было отличить старый пакет от нового с таким же названием но иным содержанием
И кто будет проверять обновления сотен пакетов? Вот увидит разработчик, что после отпуска надо обновить три сотни пакетов - что он сделает?
суть вопроса неочевидна. Если блок уже есть - то он будет просто качаться безо всяких вопросов
В остальном - имеет смысл перечитать исходный коммент, в котором нет упоминаний каких-либо проверяльщиков ибо он совсем о другом
Плюс в копилку пакетников дистров.
Как будто их создают не скриптом, чохом подбирающим любой мусор из той же самой пиписки?
чито бы подбирать гамно из пипи, нужно что бы были задействованы пятонячьи инструменты,
а умственно отсталых для этого в сборщиках дистрибов обычно нет.
Был неправ, признаю.
Никогда не любил эти менеджеры пакетов в яп. Нужна библиотека - пиши сам или скачай на сайте руками. На каждую программу на таких языках приходится тянуть в систему целую помойку из зависимостей. Будто чувакам их в линуксе не хватает так они их в свой софт пихают.
Это если один работаешь. А если хотя бы 5-10 чел ? Каждому будешь пошагово объяснять, как конкретный добавленный пакет подключать на его стороне или в репу десятки-сотни мегабайт мусора закидывать ?
> Это если один работаешь.это если не работаешь вообще. Один или впятером - без разницы.
> Каждому будешь пошагово объяснять
это называется - собеседование. И это они тебе объясняют уровень минимального владения инструментами для работы, или идут искать другого лош.....
Проблема совершенно в другом - питон без батареек превращается в просто еще один чудовищно неудобный примитивный бейсик. (как и жабоскрипт)
А просто перекладывание миллиона зависимостей зависимостей пятого порядка себе в проект - ни от чего толком не защищает, кроме "защиты" от исправлений ошибок и может даже угроз безопасности в каждой следующей версии лефтпада.
Где гарантия что ты себе УЖЕ не троянскую версию скопировал-то?
> Выявивший проблему исследователь зарегистрировал новый пакет именем msgspec-python313-pre и продемонстрировал на практике возможность выполнения кода при установке Python JSON Logger с зависимостямиКаким образом при установке зависимости выполняется код?
Не хожу по ссылке, но по опыту предполагаю следующее.Питоновские пакеты имеют как правило конфигурационный setup.py, в котором основные настройки приведены. Оттуда можно при желании и скрипты запускать, которые выполняются на этапе установки/конфигурации пакета. Поэтому если один пакет устанавливает какую-то зависимость, то отрабатывается и setup.py (этой зависимости). Кто-то умудрился переназначить зависимость на свой пакет со своим содержимым setup.py. Да, это дыра в безопасности, но уязвимостью это называть язык не поворачивается. Так оно и должно работать. Вот чего не должно - тянуть зависимости без оглядки.
Подскажите, я у Rust с их crates ситуация получается аналогичной описываемой?
на Раст такого нет, хакеры не могут выйти за блок unsafe, да и по памяти безопасность огромная, течёт, но не переиспользуется.
зачем куда-то выходить? переписываешь пакет так чтобы он запрашивал явки и пароли пользователя и сливаешь их в облако
> на Раст такого нет, хакеры не могут выйти за блок unsafe, да и по памяти безопасность огромная, течёт, но не переиспользуется.А еще там заблокированны операции по удалению и переименовыванию файлов, доступ к метадатам он ФС, из криптографии только Цезарь, и самое главное, там практически не возможно обфусцировать исходный код, в виду очень наглядной, прозрачной семантики языка, читается практически как натуральная речь, любым, кто освоил азбуку, т.ч. пользутесь крэйтами и не бойтесь.
Непонятно зачем там вообще cargo-audit?
Там чуть сложнее - надо уметь кодить, на хрусте. И при этом еще и что-то накодить чего нет в стандартной библиотеке, а она далеко не пустая. Иначе твой крейт с нулем скачиваний никому не сможет навредить.Т.е. чисто технически ты можешь, но это уже будет не лефтпад и вот так выкрасить и выбросить тебе его будет жалко.
Нет, в расте запрещено удалять пакеты
> Нет, в расте запрещено удалять пакетыА если санкции?
всё делается просто - пакеты на pypi должны подписываться ключом разраба, который выкладывает. В зависимостях должен быть ключ для проверки. У каждого разраба свой ключ.вариант номер два - сложно и мутно, но фиксировать удаление/новые пакеты с тем же именем и не давать для пакетов, которые старше нового репа, подтягивать это в зависимостях. Т.е. заставлять обновить пакет + красным плевать, что пакет пересоздан
Или просто сохранять хеши пакетов вместе с версиями. Разошёлся хеш - останавливай установку, пусть юзверь разбирается.
there is one way to do it во всей красе, ждём ещё прогрева питонистов на биткоины и бдсм для стада любитей единственных и неповторимых глобально-надёжно-питоничных решений.