The OpenNET Project / Index page

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

Уязвимость в Python-библиотеках lzma, bz2 и gzip, потенциально приводящая к выполнению кода

14.04.2026 13:00 (MSK)

В поставляемых в составе CPython классах распаковки сжатых данных в форматах lzma, bz2 и gzip (lzma.LZMADecompressor, bz2.BZ2Decompressor и gzip.GzipFile) выявлена уязвимость (CVE-2026-6100), приводящая к обращению к памяти после её освобождения. Проблема присвоен критический уровень опасности (9.1 из 10) - в случае успешной эксплуатации уязвимость может привести к утечке информации из памяти процесса или выполнению кода атакующего при распаковке специально оформленных данных. Исправление пока доступно в форме патча.

Проблема проявляется после завершении операции выделения памяти ошибкой, возникающей при нехватке памяти (для успешной эксплуатации уязвимости атакующий должен создать условия исчерпания доступной процессу памяти). Обращение к уже освобождённой памяти возникает в приложениях, повторно использующих экземпляр объекта после возвращения ошибки в процессе распаковки. Приложения при каждом вызове создающие новый экземпляр объекта уязвимости не подвержены.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимость в zlib, проявляющаяся при сжатии специально оформленных данных
  3. OpenNews: Уязвимость Zip Slip, затрагивающая библиотеки для распаковки архивов
  4. OpenNews: Уязвимость в Python, проявляющаяся при обработке непроверенных дробных чисел в ctypes
  5. OpenNews: Уязвимость в Python, позволяющая вызвать системные команды из изолированных скриптов
  6. OpenNews: Уязвимость в Python-модуле TarFile, допускающая запись в любые части ФС
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65202-python
Ключевые слова: python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (31) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:13, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну вот добрались и до биндингов к скриптовым языкам, которые всю дорогу писали как попало. Без сишных зависимостей этот питон даже ползать не сможет, так что впереди длинный путь )))
     
  • 1.2, Аноним Мю (?), 13:17, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хорошо, а какие версии Python затронуты?
     
     
  • 2.6, Аноним (6), 13:27, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Функция zlib'а в текушем виде как минимум 4 года существует, дальше по коммитам не прошёлся, потому что гитхаб - неудобное лагающее г~вно
     
     
  • 3.10, openssh_user (ok), 13:33, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В чём проблема склонировать репо?
     
     
  • 4.11, Аноним (11), 13:42, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На айфон не копируется.
     
  • 4.13, Аноним (6), 13:47, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В том что на простой вопрос на опеннетике дать простой ответ проще, чем достать комп чтобы скачать репу и быстро найти там, где функция появилась. Хотите - найдите.
    Я лично считаю что бага никакого и не было, либо его надо фиксить не там, потому что выглядят патчи как рандомный вброс типичных "ааааа нулл забыли", т.е. скорее всего ллмкой по популярному проекту прошлись и она что-то выбрзнула.
     

  • 1.3, Аноним (-), 13:20, 14/04/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     
  • 1.8, Аноним (6), 13:30, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Занулили какой-то рандомный указатель, который потом может нигде и не используется... С этими вашими лллмками только strcpy да рандомное отсутствие '= NULL' сейчас и будут исправлять всякие идиоты, которым нужно коммитов налутать для... чего-то... джиа-танов новых подготавливают наверное.
     
     
  • 2.31, Сладкая булочка (?), 16:21, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Тест добавили, однако какой-то phd чел пришел и сказал, что не нужно

    > Considering we need to hit an error path with a MemoryError, I'm not sure we really need a test. Sometimes we do add tests, sometimes not. I don't think there is a need to add a test. The test also don't assert that we hit the goto so I don't think we need it.

    Видите ли в своих же тестах питонисты не смогли создать способ задать кол-во доступной памяти.

     

  • 1.9, Аноним (9), 13:33, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вот и в managed-языках бывают ошибки работы с памятью. А уж в компилируемом Расте, тем боллее, могут быть.
     
     
  • 2.12, Аноним (11), 13:43, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Все эти ошибки по работе с памятью это пугалки для детей. Чтобы заставить их делать то что тебе выгодно, а не им.  
     
     
  • 3.21, Аноним (21), 15:14, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так и запишем:

    >Полицаи и турма - пугалки для детей, чтобы заставить их делать то, что им не нужно, на взрослых не работает.

     
     
  • 4.24, Аноним (24), 15:43, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Аналогии это вот прям вообще не твое. Тут скорее аналогия с рен тв и рептилоидами. Но ты конечно продолжай  включать защитную реакцию чтобы защитить своё ошибочное мировоззрение.  
     
  • 2.19, Аноним (19), 14:32, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Вот и в managed-языках бывают ошибки работы с памятью.

    Ошибка не в языке, а в конкретной реализации.
    Потому что реализация на dъряхе, а там всегда клали болт на безопасность и на работу с памятью.

     
     
  • 3.29, Аноним (9), 16:13, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ошибка в библиотеке на языке.
     
     
  • 4.32, Аноним (32), 16:28, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Ошибка в библиотеке на языке.

    На каком языке? Ты там код на питоне увидел?
    Дырень в CPython. CPython это реализация (implementation) питона.
    Кроме него есть и другие - IronPython, Jython и тд. В них есть эта дыра?

     
     
  • 5.36, Аноним (36), 16:49, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё раз, ошибка в библиотеке, а не языке.
     

  • 1.14, Аноним (14), 13:51, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    все биндинги сделать на расте, в usafe засунуть код на микропитоне, чтобы усилить безопасность!
     
     
  • 2.17, Аноним (9), 14:13, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И получится огонь-безопасТность.
     
  • 2.25, Аноним (24), 15:43, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Отличить план чтобы отделаться с подливой.
     

  • 1.18, Аноним (19), 14:31, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Уязвимость в Python-библиотеках

    Какая прелесть!
    Дырени в _bz2module.c, _lzmamodule.c и zlibmodule.c

     
     
  • 2.34, мимо проходил (?), 16:44, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, вот что случается если детям дать спички или питонячим погроммистам пописать на Си.
     

  • 1.20, Аноним (20), 15:05, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Читаешь новость "Уязвимость в Python-библиотеках"
    "уязвимость, приводящая к обращению к памяти после её свобождения".
    Думаешь "да ладно? как же так?!"

    А потом открываешь патчик, а там cpython!
    И все сразу становится на свои места))

     
  • 1.22, Аноним (22), 15:15, 14/04/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.23, Аноним (23), 15:31, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Всё это эдж кейсес, которые в реальных сценариях никак не_проявляют себя. Их устранение чаще всего не_обосновано из-за оверинжиниринга. Это как делать проверку словаря на нулевые значения, которые могут вызвать деление на ноль, хотя сам словарь априори заполняется правильно, чисто by design исключая нули.
     
     
  • 2.26, Аноним (22), 15:50, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Всё это эдж кейсес, которые в реальных сценариях

    В реальных сценариях через это и ломают.

    > никак не_проявляют себя.

    Тебя Артемис 2 с Луны только что привёз?

    > Их устранение чаще всего не_обосновано из-за оверинжиниринга.

    Это правда. На си настолько неудобно и сложно писать, что хорошо сделанная работа требует слишком много усилий, поэтому сишники делают работу спустя рукава.

     
     
  • 3.28, Аноним (28), 16:04, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > поэтому сишники делают работу спустя рукава.

    а никто их не учил ка надо делать, Си ведь для них "высокоуровневый" ЯП, который почему-то требует архитектурных знаний, ну вопрос - а зачем мне тогда Си? Усердный Сишник - на асм писать будет, а остальные ничем от питоновых "тяпляпщиков" не отличаются. А почему никто на асм не пишет, я объяснял в прошлых новостях, никто не хочет изучать архитектуру ЦПУ когда она через полгода протухает и никак не стабилизируется - ад одним словом. Бабла ради все? ну ок, тогда платите бабло за качественный код на том же Си. А так все заслуженно, и спецам на руку, им не нужен качественный софт это же угроза нац. безопасТности!

     
  • 2.27, Аноним (28), 15:59, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Их устранение чаще всего не_обосновано из-за оверинжиниринга.

    оверинжиниринг - бред, там должна быть проверка на нулевые значения, точнее на корректные значения.

     
     
  • 3.30, Аноним (30), 16:19, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну так для СИшников дополнительные проверки и есть оверинжениринг.
    Они просто не могут номально проверять краевые случае и инварианты, в силу убогости инструмента и непривычности задачи.

    Как писал Теордор Тцо "check if directory block is within i_size".
    А там уже как повезет.

     
     
  • 4.33, Аноним (28), 16:42, 14/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так для СИшников дополнительные проверки и есть оверинжениринг.

    Как понимать "дополнительные проверки"? - Проверки бывают либо необходимые и достаточные, либо - избыточные. Любой оптимальный корректный алгоритм имеет необходимые и достаточные проверки.

     

  • 1.35, ruroruro (ok), 16:48, 14/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > The vulnerability is only present if the program re-uses decompressor instances across multiple decompression calls even after a 'MemoryError' is raised during decompression. Using the helper functions to one-shot decompress data such as 'lzma.decompress()', 'bz2.decompress()', 'gzip.decompress()', and 'zlib.decompress()' are not affected as a new decompressor instance is used per call. If the decompressor instance is not re-used after an error condition, this usage is similarly not vulnerable.

    То есть для того чтобы попасть на эту уязвимость нужно сделать что-то вроде:
    '''
    d = lzma.LZMADecompressor()
    try:
        d.decompress(malicious_data)
    except MemoryError:
        pass
    d.decompress(more_malicious_data)
    '''

    Ага, это явно CVE 9.1, Critical.

     

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



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

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