Новости · Архиваторы и сжатие

Gzip 1.15: исправлены ошибки, существовавшие с первых версий 1992 года

Gzip — стандартная утилита сжатия файлов в формате .gz, включённая в GNU и используемая в Linux, macOS и любых Unix-системах. 20 сентября 2026 вышел Gzip 1.15 — первый значимый релиз за 17 месяцев, содержащий 119 коммитов. Среди исправлений — критическая гонка состояния, способная удалить не тот файл при параллельном переименовании каталогов, переполнение буфера при LZH-декомпрессии и ошибки чтения неинициализированной памяти, присутствовавшие с первых версий утилиты.

21 сентября 2026 Редакция Loadfile Чтение 5 мин
Светящиеся волны данных на тёмном фоне — Gzip 1.15

Коротко: 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.

Источники