17 июня стала доступна Rufus 4.15 BETA – предварительная сборка утилиты для создания загрузочных USB-накопителей. Ключевое изменение – устранение трёх связанных уязвимостей во встроенном разборщике XML; помимо этого выпуск содержит несколько правок в работе с параметрами установки Windows и в загрузчике UEFI:NTFS.
Что нового в Rufus 4.15 BETA
- Усилены проверки при использовании параметра «тихой» установки.
- Улучшена возможность отмены операции во время повторных попыток записи.
- Устранены неограниченное расширение XML-сущностей и целочисленное переполнение в разборщике ezxml (бюллетень GHSA-55r2-34wg-8mv9, обнаружил esadowski4).
- Исправлен сбой «тихой» установки Windows, которая в большинстве случаев прерывалась на 75 процентах (#2960).
- Исправлен сбой при загрузке с использованием UEFI:NTFS на платформах ARM64 на базе Snapdragon X (#2934).
- Исправлено: первый параметр в диалоге настройки установки Windows (WUE) больше не отмечается по умолчанию (#2965).
- Устранено зацикливание при работе с образами Windows, содержащими несколько WIM-файлов.
- Исправлено: флажок проверки носителя UEFI во время выполнения (Enable runtime UEFI media validation) не всегда активировался корректно.
- Прочие улучшения и исправления параметров установки Windows (WUE), касающиеся удаления OneDrive и проверки имени пользователя (#2984, #2991, при участии christian8641).
Уязвимости в разборщике ezxml (GHSA-55r2-34wg-8mv9)
Главное изменение релиза – устранение трёх связанных уязвимостей во встроенном разборщике XML ezxml (файл src/xml.c). Все они эксплуатируются через специально подготовленные XML-метаданные WIM внутри вредоносного ISO-образа. Уровень опасности – высокий (High). Затронуты все версии до 4.14 включительно, исправление вошло в 4.15.
- Неограниченное расширение XML-сущностей (атака Billion Laughs, отказ в обслуживании). Функция ezxml_decode() рекурсивно раскрывает ссылки на сущности без ограничения итогового объёма. Входной XML размером 612 байт с 20 уровнями вложенных определений сущностей разворачивается в 4 МБ (рост в 6853 раза), а при 30 уровнях достигает 4 ГБ.
- Целочисленное переполнение при расчёте размера буфера в ezxml_decode(). Переменная размера объявлена как long (32 бита во всех сборках Windows, как x86, так и x64). Когда рабочая строка превышает 2 ГБ, значение переполняется, выделяется слишком малый буфер, и происходит запись за его границы – переполнение кучи.
- Усечение значения в функции _realloc() на 64-битных сборках. Параметр объявлен как unsigned int вместо size_t, поэтому передаваемые значения size_t молча усекаются до 32 бит; при превышении UINT_MAX выделяется слишком малый буфер.
Возможные последствия:
- Отказ в обслуживании – зависание и аварийное завершение приложения из-за исчерпания памяти.
- Переполнение кучи – потенциальное выполнение произвольного кода.
- Вектор атаки – открытие пользователем вредоносного ISO-файла в Rufus.
Идентификатор CVE на момент публикации бюллетеня не присвоен.
Загрузка
Rufus 4.15 BETA распространяется как предварительная сборка (pre-release) и предназначена для тестирования; для повседневной работы стоит дождаться стабильного выпуска. Файлы доступны на странице релиза в репозитории pbatard/rufus на GitHub.
