
CVE-2023-38831 — это Zero-day уязвимость в WinRAR, которая позволяет злоумышленникам маскировать вредоносные файлы в архивах, обманывая пользователей и заставляя их выполнять опасный контент.
CVE-2023-38831 — это уязвимость нулевого дня, затрагивающая все версии WinRAR до 6.23.
Проблема заключается в обработке формата ZIP, что может позволить злоумышленникам использовать уязвимые архивы для распространения вредоносного ПО. Злоумышленники могут маскировать вредоносные файлы внутри ZIP-архивов, давая им имена, похожие на легитимные, обманывая пользователей и заставляя их выполнять вредоносное содержимое, полагая, что они открывают безопасный файл. Эта ошибка активно эксплуатируется с апреля 2023 года, особенно в финансовом секторе, создавая значительные риски для пользователей, открывающих ненадежные сжатые файлы. Обновление до WinRAR 6.23 или новее устраняет эту уязвимость за счет улучшения санитизации имен файлов при извлечении.
В следующем примере я скачал все предоставленные файлы в одну папку, запустил скрипт через CMD, указал соответствующие имена файлов (включая эксплойт), и наконец добавил несколько случайных файлов в .rar-архив, чтобы сделать его более аутентичным и лучше скрыть новый .txt-эксплойт. Когда пользователь нажимает на якобы ".txt" файл, он выполнит скрытый .cmd файл, находящийся в той же папке с совпадающим именем:
https://github.com/user-attachments/assets/91eed756-bb38-42dd-a127-cabaccb4c386
Используя эту идею, мы можем попытаться максимально эффективно замаскировать файл и сделать эксплойт срочным или важным для пользователя. В следующем примере я добавил несколько случайных файлов, чтобы .rar-архив выглядел более легитимно. Я использовал простой .txt файл в качестве приманки и назвал его "INSTRUCTIONS - Open Before Extraction", чтобы заставить пользователя нажать на него:

Используя предоставленный скрипт на Python, вы можете создать свой собственный RAR-файл, который мы будем использовать, чтобы увидеть логику этого эксплойта.
Шаг 1 — Скачайте файлы exploit.py и DoS.cmd.
Шаг 2 — Поместите их все в папку и выберите случайный файл-приманку. Для целей этой POC я использую простой .jpg файл.
Шаг 3 — Запустите скрипт и введите требуемые имена
Скрипт работает следующим образом:
Захватывает предоставленные имена файлов и расширения.
Создает временную папку со скриптом, помещенным в подпапку, и файлом-приманкой снаружи — оба названы аналогично, при этом к имени папки добавляется "X", а к имени файла-приманки — "Y":

Затем создает ZIP-файл из временной папки, открывает его в двоичном режиме и изменяет символы "X" и "Y", заменяя их пробелами, чтобы создать видимость, что это один и тот же файл.
Записывает измененные данные в .rar-файл.

Используя такую программу, как ProcessMonitor, мы можем увидеть точные шаги, которые WinRAR предпринимает при выполнении файла:

Проблема возникает из-за неоднозначности, вызванной архивом, содержащим два файла с почти идентичными именами: "image.jpg " (приманка) и
"image.jpg .cmd" (вредоносный скрипт). Дополнительный пробел создает похожее базовое имя, что сбивает с толку то, как WinRAR и Windows разрешают пути к файлам. При нажатии на "image.jpg " WinRAR считывает и создает все связанные файлы во временной папке из-за их похожих базовых имен:

Чтобы устранить неоднозначность, WinRAR выполняет поиск по шаблону (QueryDirectory) для image.jpg .*, стремясь найти исполняемый тип файла, при этом убеждаясь, что другие связанные файлы отсутствуют. WinRAR (и Windows) всегда будет отдавать приоритет исполняемым типам файлов (например, .cmd, .exe, .bat) при разрешении неоднозначных путей. В результате он выполнил "image.jpg .cmd" с помощью cmd.exe (Create Process), что позволило запустить вредоносный скрипт вместо открытия файла-приманки в средстве просмотра изображений по умолчанию.
WinRAR устранил эту проблему в версии 6.23, и пользователям настоятельно рекомендуется обновиться до последней версии.
https://www.win-rar.com/singlenewsview.html?&L=0&tx_ttnews%5Btt_news%5D=232