В библиотеке zlib выявлена уязвимость (CVE-2018-25032), приводящая к переполнению буфера при попытке сжатия специально подготовленной последовательности символов во входящих данных. В текущем виде исследователями продемонстрирована возможность вызова аварийного завершения процесса. Может ли проблема иметь более серьёзные последствия ещё не изучено. Уязвимость проявляется начиная с версии zlib 1.2.2.2 и затрагивает в том числе актуальный выпуск zlib 1.2.11. Примечательно, что патч с исправлением уязвимости был предложен ещё в 2018 году, но разработчики не обратили на него внимания и не выпустили корректирующий выпуск (библиотека zlib последний раз обновлялась в 2017 году). Исправление также пока не включено в состава пакетов, предлагаемых дистрибутивами. Проследить за публикацией исправлений дистрибутивами можно на данных страницах: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD. Библиотека zlib-ng проблеме не подвержена. Уязвимость проявляется если во входном потоке встречается большое число подлежащих упаковке совпадений, к которым применяется упаковка на основе фиксированных кодов Хаффмана. При определённом стечении обстоятельств содержимое промежуточного буфера, в который помещается сжатый результат, может наложиться на память, в которой хранится таблица частотностей символов. В результате наблюдается формирование некорректных сжатых данных и крах из-за записи за границу буфера. Уязвимость может быть эксплуатирована только при использовании стратегии сжатия на основе фиксированных кодов Хаффмана. Подобная стратегия выбирается при явном включении в коде опции Z_FIXED (пример последовательности, приводящей к краху при использовании опции Z_FIXED). Судя по коду стратегия Z_FIXED также может быть выбрана автоматически, если вычисленные для данных оптимальное и статическое деревья имеют одинаковый размер. Пока не ясно, могут ли быть подобраны условия для эксплуатации уязвимости при использовании стратегии сжатия 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). 27.03.22 https://www.opennet.ru/opennews/art.shtml?num=56918