Ad

CVE-2026-76845

MEDIUM CVSS 4.0: 6,8 EPSS 0.13%
Обновлено 24 августа 2026
adm-zip
Параметр Значение
CVSS 6,8 (MEDIUM)
Тип уязвимости CWE-59 (Некорректная обработка ссылок)
Поставщик adm-zip
Публичный эксплойт Нет

adm-zip версий с 0.5.9 по 0.6.0 следует по символическим ссылкам в месте назначения распаковки. Utils.sanitize в util/utils.js обеспечивает сдерживание, сравнивая только строковую форму имени записи архива с разрешенным корнем извлечения, а Utils.writeFileTo открывает вычисленное место назначения с помощью fs.openSync(path, "w", 0o666), который разрешает символические ссылки и не выполняет ни O_NOFOLLOW, ни проверку fs.lstatSync перед записью. Когда компонент пути в месте назначения уже существует в виде символической ссылки, указывающей за пределы корня извлечения, ExtractAllTo, ExtractAllToAsync и ExtractEntryTo записывают содержимое записи через эту ссылку, а затем изменяют ее цель, помещая контролируемое злоумышленником содержимое в файл за пределами корня без появления какой-либо последовательности обхода в архиве.

Для достижения записи необходимо включить перезапись, поскольку предыдущая проверка fs.existsSync также разрешает ссылку и в противном случае отклоняется. Злоумышленник, способный создать символическую ссылку внутри общего, повторно используемого или предсказуемого каталога извлечения, например временного каталога или рабочей области непрерывной интеграции, может перезаписать любой файл, который разрешено записать процессу извлечения.

Показать оригинальное описание (EN)

adm-zip 0.5.9 through 0.6.0 follows symbolic links at the extraction destination. Utils.sanitize in util/utils.js enforces containment by comparing only the string form of an archive entry name against the resolved extraction root, and Utils.writeFileTo opens the computed destination with fs.openSync(path, "w", 0o666), which resolves symbolic links and carries neither O_NOFOLLOW nor a pre-write fs.lstatSync check. When a path component at the destination already exists as a symbolic link pointing outside the extraction root, extractAllTo, extractAllToAsync and extractEntryTo write the entry contents through that link and then chmod its target, placing attacker-controlled content in a file outside the root without any traversal sequence appearing in the archive. Reaching the write requires overwrite to be enabled, because the preceding fs.existsSync check also resolves the link and otherwise declines. An attacker able to create a symbolic link inside a shared, reused or predictable extraction directory, such as a temporary directory or a continuous integration workspace, can overwrite any file the extracting process is permitted to write.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Условия для атаки
Не требуются
Нет дополнительных условий
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Высокое
Полная модификация данных
Доступность
Нет
Нет нарушения работы

Строка CVSS v4.0