Обновление GNU gzip закрывает две уязвимости: предсказуемые временные файлы и переполнение буфера

vulnerability

Вышло обновление GNU gzip, исправляющее две уязвимости, одна из которых позволяет локальному атакующему перезаписывать произвольные файлы через symlink, а другая - вызывает чтение за пределами выделенной памяти при обработке специально сформированных архивов. Обе проблемы затрагивают версии вплоть до 1.14 включительно.

Детали уязвимостей

Первая уязвимость, зарегистрированная как CVE-2026-41991, связана с утилитой gzexe, которая создаёт сжатые исполняемые файлы. В случае отсутствия утилиты mktemp в переменной PATH gzexe формирует путь к временному файлу на основе только идентификатора процесса (PID). Поскольку имя файла предсказуемо и не проводится проверка на его существование или эксклюзивность доступа, злоумышленник с локальным доступом может заранее создать по этому пути символическую ссылку (symlink), указывающую на любой файл, доступный для записи жертве. При запуске gzexe программа следует по ссылке и перезаписывает целевой файл, реализуя состояние гонки "проверка - использование" (TOCTOU). В результате атакующий может изменить содержимое произвольного файла, принадлежащего пользователю, запускающему gzexe.

Вторая проблема, CVE-2026-41992, представляет собой глобальное переполнение буфера в логике распаковки формата LZH. GNU gzip использует общий глобальный массив для всех форматов декомпрессии - LZ77, LZW и LZH. Этот массив не очищается между файлами при обработке нескольких архивов в одном вызове gzip -d. Если атакующий предоставит два файла: первый с форматом LZW, а второй - LZH, то содержимое первого может "отравить" общее состояние. Второй файл будет декодирован с использованием устаревших значений в массиве, что приведёт к чтению за границей выделенного буфера. Уязвимость позволяет злоумышленнику вызвать утечку данных (доступ к конфиденциальной информации в памяти) или, при определённых условиях, привести к нештатному завершению программы.

Оценка CVSS для CVE-2026-41991 - 2,0 (низкая), для CVE-2026-41992 - 6,9 (средняя). Обе требуют локального доступа к системе. Векторы атак для первой - повышенная сложность (AC:H) и взаимодействие с пользователем (UI:P), для второй - низкая сложность и отсутствие необходимости взаимодействия.

GNU gzip входит в состав практически всех дистрибутивов Linux и Unix-подобных систем. Утилита gzexe используется для создания сжатых исполняемых файлов и может запускаться администраторами или автоматизированными скриптами. Проблема с временными файлами особенно актуальна в многопользовательских средах, где злоумышленник может эксплуатировать её для эскалации привилегий или подмены критических системных файлов. Уязвимость переполнения буфера затрагивает любого пользователя, распаковывающего архивы LZH через gzip -d - эту операцию выполняют многие программы, включая менеджеры пакетов и скрипты резервного копирования.

Обе проблемы исправлены в коммитах исходного кода. Разработчики рекомендуют обновить gzip до версии 1.15 или новее, которая включает соответствующие патчи. В качестве временной меры для защиты от CVE-2026-41991 можно убедиться, что утилита mktemp присутствует в PATH, либо не использовать gzexe с непроверенными аргументами. Для предотвращения CVE-2026-41992 достаточно избегать распаковки нескольких файлов разных форматов в одной команде gzip -d, пока не будет установлено обновление.

Пакетные менеджеры основных дистрибутивов уже начали распространять исправленные версии. Администраторам рекомендуется проверить наличие обновлений и установить их в приоритетном порядке на системах, где gzip используется в сценариях с доверенными данными от разных пользователей. Несмотря на то, что обе уязвимости локальные, в комбинации с другими атаками они могут повысить уровень угрозы. Разработчики GNU gzip продолжают анализировать код на предмет аналогичных проблем, вызванных повторным использованием глобального состояния.

Ссылки

Комментарии: 0