adm-zip сохраняет SUID/SGID-биты при распаковке ZIP: CVE-2026-102282
В библиотеке adm-zip до версии 0.6.1 обнаружили уязвимость повышения привилегий: при распаковке архива сохраняются SUID/SGID-биты, что позволяет атакующему получить root-доступ. Проблема особенно опасна в Docker-сборках, CI-раннерах и сценариях установки с правами root. Оценка CVSS — 7.1 (HIGH).
Подробности
Продукт: cthackers adm-zip. Уязвимость затрагивает все версии ниже 0.6.1. Механизм проблемы следующий. При вызове методов `extractAllTo()` или `extractEntryTo()` с флагом `keepOriginalPermission=true` библиотека применяет к распакованному файлу Unix-биты прав, хранящиеся в записи ZIP-архива, через вызов `fs.chmodSync()`. При этом adm-zip не фильтрует биты setuid, setgid и sticky. В результате специально сформированный атакующим архив может создать извлечённый бинарный файл с правами `04755` — то есть с установленным SUID-битом. Ключевая опасность заключается в контексте эксплуатации. Распаковка часто выполняется от имени root — это стандартная практика в Docker-сборках, на CI-раннерах и в привилегированных шагах установки, то есть именно там, где флаг `keepOriginalPermission` обычно и используется. В таком случае извлечённый файл становится принадлежащим root с установленным SUID-битом. Позже, когда менее привилегированный пользователь запускает этот файл, код атакующего исполняется с правами root. Такой сценарий превращает обычную операцию распаковки недоверенного ZIP-архива в вектор локального повышения привилегий. Оценка по шкале CVSS составляет 7.1, что соответствует высокому уровню критичности.Что делать
Основная рекомендация — обновить adm-zip до версии 0.6.1 или более поздней, в которой проблема устранена. Если обновление невозможно в ближайшее время, следует рассмотреть следующие меры: - не использовать флаг `keepOriginalPermission=true` при распаковке архивов из недоверенных источников; - избегать распаковки недоверенных ZIP-архивов с правами root; - по возможности выполнять распаковку в изолированном окружении (контейнеры с ограниченными привилегиями, непривилегированные пользователи); - проверять права распакованных файлов перед их запуском, особенно на наличие SUID/SGID-битов. Дополнительной защитой может служить монтирование файловых систем с опцией `nosuid` там, где это применимо, что предотвращает исполнение SUID-файлов. Итог: CVE-2026-102282 — серьёзная уязвимость в adm-zip, позволяющая через специально созданный ZIP-архив получить выполнение кода с правами root при распаковке в привилегированном контексте. Риск особенно актуален для сборочных конвейеров и контейнерных окружений. Обновление до версии 0.6.1 закрывает проблему и является приоритетным действием.Источник: CVE Project (cvelistV5)
