В zlib обнаружена уязвимость

Недавно вышла новость об уязвимости в библиотеке zlib уже внесен в каталог под CVE-2018-25032, который вызывает переполнение буфера при попытке сжатия специально подготовленной последовательности символов во входящих данных.

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

Отмечается, что уязвимость он проявляется начиная с zlib 1.2.2.2 и влияет на текущую версию zlib 1.2.11. Примечательно, что патч, исправляющий уязвимость, был предложен еще в 2018 году, но разработчики не обратили на него внимания и не выпустили исправляющую версию (последнее обновление библиотеки zlib произошло в 2017 году).

Об этой ошибке сообщил Данило Рамос из Eideticom, Inc. он был на охоте в течение 13 лет, прежде чем его нашли! Ошибка была введена в zlib 1.2.2.2 с добавлением опции Z_FIXED. Опция заставляет использовать фиксированные коды Хаффмана. Для редких записей с
много далеких совпадений, ожидающий буфер в котором сжатые данные могут быть перезаписаны. Это приводит к повреждению вывода из-за недопустимые расстояния, что может привести к доступу за границу, сбой приложения.

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

Уязвимость его можно использовать только с помощью стратегии сжатия, основанной на фиксированных кодах Хаффмана. Аналогичная стратегия выбирается, когда опция Z_FIXED явно включена в код (пример последовательности, вызывающей сбой при использовании опции Z_FIXED). Судя по коду, стратегия Z_FIXED также может быть выбрана автоматически, если оптимальное и статическое деревья, рассчитанные для данных, имеют одинаковый размер.

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

Пока неясно, могут ли условия эксплуатации уязвимости соответствовать стратегии сжатия Z_DEFAULT_STRATEGY, которая применяется по умолчанию.

В противном случае уязвимость будет ограничена определенными конкретными системами, где опция Z_FIXED явно применяется. Если это так, то ущерб от уязвимости может быть очень значительным, так как библиотека zlib является стандартом де-факто и используется во многих популярных проектах, включая ядро ​​Linux, OpenSSH, OpenSSL, apache httpd, libpng, FFmpeg, rsync, dpkg. , rpm, Git, PostgreSQL, MySQL и т. д.

Также упоминается, что выбранные параметры, при которых проявляется уязвимость при выборе стратегии сжатия по умолчанию Z_DEFAULT_STRATEGY. В реальных условиях, атака по-прежнему считается маловероятной, так как эксплуатация с использованием обнаруженной последовательности требует установки параметра memLevel в 1, а уровень 8 выбран по умолчанию.

Пример последовательности блокировки при вызове "deflateInit2(&strm, 7, Z_DEFLATED, 15, 1, Z_DEFAULT_STRATEGY)" (level=7, windowBits=15, memLevel=1).

В конце концов следует отметить, что решение также не включено все еще в пакетах, предлагаемых дистрибутивами, поэтому вы можете отслеживать выпуск исправлений дистрибутивами на этих страницах: DebianRHELМягкая фетровая шляпаSUSEUbuntu, Arch LinuxOpenBSD  FreeBSDNetBSD, плюс проблема не затрагивает библиотеку zlib-ng.

Если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.