Новости
ClamAV закрыл семь уязвимостей в парсерах файлов
Вышли ClamAV 1.5.3 и 1.4.5 — закрыто семь уязвимостей в разборщиках форматов файлов. Все ведут к отказу в обслуживании сканера.
Библиотека node-tar — стандартный инструмент распаковки tar-архивов в экосистеме Node.js, через который проходят миллионы установок npm-пакетов каждый день. 8 июля 2026 в ней закрыли критическую уязвимость: специально собранный маленький gzip-архив при распаковке разворачивается в гигантский объём данных и полностью исчерпывает диск и процессор сервера.
Коротко: CVE-2026-59873 (CVSS 9.2) в node-tar до версии 7.5.19 — классическая «декомпрессионная бомба». Библиотека не ограничивала объём распакованных данных, число файлов и коэффициент сжатия, поэтому архив в пару килобайт мог занять весь диск. Исправлено в 7.5.19: нужно обновиться.

8 июля 2026 в популярной библиотеке node-tar (пакет tar в npm, сопровождает разработчик Айзек Шлютер) раскрыли и закрыли критическую уязвимость CVE-2026-59873. По оценке базы CVE, ей присвоен рейтинг CVSS 9.2 — «критический», класс — CWE-770 «выделение ресурсов без ограничений».
Суть проблемы: во всех версиях до 7.5.19 библиотека не устанавливала жёстких верхних пределов на общий объём распакованных данных, количество записей в архиве и коэффициент сжатия. Из-за этого небольшой gzip-архив, собранный злоумышленником, при распаковке в модуле src/extract.ts мог занять весь диск и загрузить процессор, вызвав отказ в обслуживании.
Уязвимость не даёт злоумышленнику выполнить код или прочитать чужие файлы — она приводит к отказу в обслуживании (denial of service): сервис, который принимает и распаковывает архивы, просто перестаёт отвечать.
Декомпрессионная бомба (её же называют zip-бомбой или, применительно к gzip, gzip-бомбой) — это архив, который занимает считанные килобайты на диске, но при распаковке разворачивается в гигабайты или терабайты данных. Приём известен десятилетиями: он использует свойство алгоритмов сжатия сильно ужимать однообразные данные — например, длинную цепочку одинаковых байтов.
Если программа при распаковке слепо доверяет содержимому и не проверяет, сколько данных она уже записала, такой архив исчерпывает свободное место или память. Защита от бомбы — это лимиты: программа должна прерывать распаковку, когда объём или коэффициент сжатия выходит за разумные рамки. Именно этих лимитов в node-tar и не хватало.
В версии 7.5.19 разработчик добавил ограничители. Появился параметр maxDecompressionRatio (по умолчанию 1000) — максимальное отношение распакованных байтов к сжатым; при превышении распаковка прекращается. Также действует ограничение глубины вложенных папок maxDepth (по умолчанию 1024): всё, что глубже, пропускается с предупреждением. Это стандартный набор мер против архивов-бомб.
Вместе с «бомбой» в node-tar закрыли и смежную проблему — CVE-2026-59874 (исправлена в версии 7.5.18). Функция tar.replace принимала tar-заголовок с корректной контрольной суммой, но с отрицательным размером записи, закодированным в формате base-256. Из-за этого сканер архива «зацикливался»: он не продвигался вперёд и снова и снова разбирал одну и ту же запись.
Механизм другой, но итог тот же — отказ в обслуживании: процесс, работающий с архивом, зависает. Обе уязвимости показывают общий принцип: разбор файлов из недоверенного источника нужно вести с оглядкой на аномалии — отрицательные размеры, невозможные коэффициенты сжатия, неправдоподобную вложенность.
node-tar — не пользовательский архиватор вроде WinRAR или 7-Zip, а библиотека для разработчиков. Но зона её влияния огромна: пакет tar входит в зависимости самого npm и множества инструментов сборки, поэтому он установлен практически в любом проекте на Node.js.
Реальный риск возникает там, где сервер распаковывает архивы, полученные извне: загрузка пользователями, приём артефактов в CI/CD, обработка пакетов из недоверенных реестров. Для таких сценариев маленький вредоносный .tar.gz — это готовый инструмент для «положить» сервис. Если приложение распаковывает только собственные, заведомо доверенные архивы, риск ниже, но обновиться всё равно стоит.
Формат tar.gz — это связка: архив .tar объединяет файлы, а gzip сжимает результат. Как устроен и чем открыть такой архив, разбираем в гайде чем открыть TAR.GZ.
tar до версии 7.5.19 или новее — это закрывает обе уязвимости. Проверить установленную версию можно командой npm ls tar.npm audit — он покажет, где в дереве зависимостей остаётся старая версия node-tar.Тема разбора недоверенных архивов на сервере шире одной библиотеки. О том, как безопасно принимать и проверять файлы, — в разделе безопасность файлов. Близкие сюжеты последних недель: ClamAV закрыл семь уязвимостей в парсерах файлов и WinRAR 7.23 исправил уязвимость архивов — все они об одном: разбор чужих файлов остаётся частым источником проблем.
Данные приведены на 11 июля 2026 по материалам GitHub Security Advisory и базы CVE. Рейтинг CVSS и номера версий указаны по первоисточникам.