Коротко: 20 сентября 2026 вышел Gzip 1.15 с 119 коммитами от мейнтейнера Джима Мейеринга. Ключевые исправления: гонка состояния при удалении файлов (риск удаления не того файла), переполнение буфера при LZH-декомпрессии после .Z-файла, чтение неинициализированной памяти на повреждённых входных данных. Также устранён баг PKZIP-подписей в потоке и повреждение вывода при последовательной LZH-распаковке. Обновление доступно на ftp.gnu.org.
Что такое Gzip и зачем его обновлять
Gzip (GNU zip) — утилита командной строки для сжатия и распаковки файлов в формате .gz. Разработана Жан-Лу Гайи и Марком Адлером в 1992 году как свободная альтернатива патентованному compress. Сегодня gzip является базовым инструментом любого Linux- и macOS-сервера: дистрибутивы распространяются в виде .tar.gz-архивов, веб-серверы используют gzip для сжатия HTTP-ответов, логи ротируются в .gz. По оценке авторов, утилита установлена на большинстве Unix-подобных систем в мире.
Несмотря на повсеместное распространение, новые версии Gzip выходят редко: предыдущий релиз 1.14 датирован апрелем 2025 года. Gzip 1.15 — результат 17 месяцев работы и 119 коммитов, сосредоточенных прежде всего на исправлении дефектов, часть которых восходит к самым ранним выпускам.
Критическая гонка состояния: удаление не того файла
Наиболее серьёзное исправление в Gzip 1.15 касается гонки состояния (race condition) при работе с временными файлами. В предыдущих версиях, если другой процесс переименовывал родительский каталог пути назначения в момент, когда gzip завершал сжатие и переходил к удалению исходного файла, утилита могла удалить не тот файл — не исходник, а уже существующий файл в переименованной директории.
Ошибка проявляется при одновременном запуске gzip и другого процесса, меняющего структуру директорий (файловые менеджеры, скрипты резервного копирования, системы автоматической обработки файлов). В большинстве бытовых сценариев риск невысок, но на серверах с конкурентной обработкой файлов он реален.
По данным релизных заметок, Gzip 1.15 устраняет эту уязвимость: «Gzip no longer can mistakenly remove the wrong file if some other process simultaneously renames a gzip destination's ancestor». Дефект присутствовал во всех предыдущих версиях утилиты.
Переполнение буфера при LZH и ошибки неинициализированной памяти
Второй значимый класс исправлений касается обработки устаревшего формата .lzh (LHarc) — популярного в 1990-е годы архива, до сих пор встречающегося в японских дистрибутивах программ и легаси-репозиториях. Gzip поддерживает декомпрессию .lzh для обратной совместимости.
- Переполнение буфера (.lzh после .Z): если пользователь последовательно распаковывал файл .Z (compress-формат), а затем файл .lzh, внутренние буферы gzip могли переполниться. В Gzip 1.15 порядок сброса буферов между форматами исправлен.
- Повреждение вывода при последовательных .lzh: когда gzip распаковывал второй .lzh-файл подряд, внутренняя таблица декодирования от предыдущего файла не очищалась должным образом, что приводило к некорректному выводу. Дефект устранён.
- Чтение неинициализированной памяти: при обработке определённых повреждённых входных данных gzip обращался к неинициализированным областям памяти. Такое поведение потенциально могло быть использовано для утечки информации; в Gzip 1.15 входные данные проверяются до обращения к буферу.
Ни один из описанных дефектов не получил отдельного CVE-идентификатора в публичных базах на момент релиза, однако все они относятся к категории стабильности и потенциальной безопасности при работе с файлами из ненадёжных источников.
Прочие изменения: PKZIP, локаль и устаревшие платформы
Помимо исправлений безопасности и стабильности, Gzip 1.15 вносит ряд функциональных изменений:
- Поддержка PKZIP-заголовков. Команда
gzip -dбольше не отклоняет файлы с PKZIP-подписями, локальными заголовками и дескрипторами данных. Это расширяет совместимость с потоковыми ZIP-файлами, которые некоторые системы генерируют в формате, допускающем gzip-декодирование. - Учёт системной локали. Ранее gzip принудительно использовал локаль «C» вне зависимости от настроек среды. Теперь он следует переменным окружения, что влияет на формат вывода чисел с плавающей точкой в режимах
-l(вывод списка) и-v(подробный режим). - Отказ от опции znew -P. Опция
-Pутилитыznewтеперь игнорируется с предупреждением. Она существовала для ускорения работы, но её реализация содержала слишком много ошибок. - Удалена поддержка устаревших платформ. Из кодовой базы убраны специальные ветки для FreeBSD 4.11 (2005), HP-UX 11.00 (1997), Minix 3.1.8 (2010) и MS-Windows 8.1 без UCRT. Актуальные версии Windows, Linux и macOS по-прежнему поддерживаются в полном объёме.
Если вы сравниваете форматы архивов по возможностям и совместимости, смотрите обзор ZIP, RAR, 7z: какой архив выбрать — там разобраны современные альтернативы .gz для пользователей Windows.
Как обновить Gzip
Большинство пользователей получат Gzip 1.15 через стандартный менеджер пакетов своего дистрибутива — обновление уже включено в основные ветки Debian testing, Fedora Rawhide и Arch Linux по состоянию на конец сентября 2026 года.
- Debian/Ubuntu:
sudo apt update && sudo apt upgrade gzip - Fedora/RHEL:
sudo dnf upgrade gzip - Arch Linux:
sudo pacman -Syu gzip - macOS (Homebrew):
brew upgrade gzip - Из исходников: архив доступен на ftp.gnu.org/gnu/gzip/.
Проверить текущую версию: gzip --version. Если вывод показывает 1.14 или ниже — рекомендуется обновиться, особенно на серверах с параллельной обработкой файлов. Об аналогичном улучшении алгоритмов сжатия в ядре Linux читайте в нашей новости про Btrfs: быстрее zstd-декомпрессия в Linux 7.4.
