В 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).

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

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


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

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

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

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

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