В WinRAR и UnRAR закрыта уязвимость, позволявшая выполнить код при обработке .rev-файлов

WinRAR

RARLAB выпустила обновление архиватора WinRAR и сопутствующих утилит (RAR, UnRAR, UnRAR.dll), в котором исправлена уязвимость CVE-2026-14191, оценённая в 7,8 балла по шкале CVSS. Проблема затрагивает все версии до 7.23 и связана с некорректной валидацией индекса при работе с файлами восстановления (recovery-volume) формата RAR5.

Уязвимость CVE-2026-14191

Уязвимость обнаружена в функции RecVolumes5::ReadHeader из файла recvol5.cpp. В процессе восстановления архива из набора .rev-файлов программа создаёт вектор RecItems для хранения записей о восстановленных данных. Это выделение производится только при обработке первого .rev-файла в наборе. Если злоумышленник подготавливает несколько вредоносных .rev-файлов, каждый из них содержит собственное значение RecNum - индекс записи в векторе. При проверке этот индекс сопоставляется только с полем TotalCount конкретного файла, а не с фактическим количеством элементов уже выделенного массива. В результате RecNum может выходить за границы вектора, что приводит к записи 32-битного значения (поля RevCRC из заголовка .rev-файла) по смещению, контролируемому атакующим. Величина смещения может достигать 65534 * sizeof(RecVolItem) байт за пределами исходной области кучи, что способно повредить соседние объекты в динамической памяти.

Для эксплуатации достаточно, чтобы жертва выполнила операцию восстановления или тестирования с подложным набором .rev-файлов. Сценарии включают запуск команды "unrar t x.part1.rev", использование функции "Восстановление архива" в WinRAR или автоматическое восстановление при распаковке томов с отсутствующей частью .rar. В случае успешной атаки злоумышленник может записать управляемое значение в произвольное место кучи, что при определённых условиях ведёт к нарушению целостности памяти и возможности выполнения произвольного кода в контексте процесса архиватора.

Важно отметить, что CVE-2026-14191 является прямым аналогом уязвимости CVE-2023-40477, исправленной в WinRAR 6.23. Однако исправление от 2023 года касалось только пути обработки файлов RAR3, тогда как уязвимость в RAR5 оставалась незакрытой более двух лет. В новой версии 7.23 RARLAB добавил проверку индекса RecNum против реального размера вектора RecItems, что устраняет проблему.

Уязвимость затрагивает широкий спектр продуктов: WinRAR, RAR, UnRAR и UnRAR.dll для операционных систем Windows, Linux и macOS. Версии 7.23 и выше считаются защищёнными. Пользователям настоятельно рекомендуется обновиться до актуальной версии, поскольку эксплуатация не требует специальных привилегий, кроме локального доступа и действий пользователя (UI:R). Потенциальный ущерб от возможного выполнения кода включает полную компрометацию системы, кражу данных или внедрение вредоносных программ.

В бюллетене RARLAB указано, что проблема обнаружена и описана в рамках процедуры регистрации CVE. Дополнительные технические подробности, такие как конкретные условия эксплуатации, не раскрываются, что является стандартной практикой для предотвращения злоупотреблений до установки исправлений.

Тенденция к обнаружению подобных ошибок в архиваторах сохраняется: в 2023 и 2024 годах уже фиксировались уязвимости в WinRAR, связанные с записью за границы буфера при обработке RAR и ZIP-файлов. Наличие двух похожих проблем в разных ветках одного формата указывает на необходимость усиления контроля за корректностью индексации в алгоритмах восстановления данных. Обновление до версии 7.23 является единственной надёжной мерой защиты на данный момент.

Ссылки

Комментарии: 0