
CVE-2021-3625 - Sample exploits for Zephyr
Этот репозиторий содержит несколько примеров эксплойтов для CVE-2021-3625.
Все USB-устройства на базе Zephyr до версии 2.5.0 (включительно) страдают от переполнения буфера, позволяющего считывать до 65 кБ. В зависимости от конкретного устройства это может привести к утечке конфиденциальных данных, таких как ключи шифрования или учетные данные.
Проблема может быть вызвана отправкой специально сформированных запросов управления USB с направлением IN (чтение на хост) и запросом на запись — например, установка адреса (0x05). В таких случаях запись на хост не ожидается, поэтому длина ответа не обновляется, и остаётся изначально установленное значение request->wLength. Поскольку wLength контролируется пользователем, его можно установить в произвольное двухбайтовое значение, например 0xffff, что приводит к чтению 65 килобайт памяти микроконтроллера. Так как размер буфера значительно меньше, происходит переполнение, позволяющее злоумышленнику извлечь содержимое памяти за пределами буфера.
Помимо прикладного уровня, атаке подвержены также сборки MCUBoot с включённым стеком USB-устройств Zephyr. Кроме того, наряду с чтением памяти за границами буфера, класс DFU также может быть использован для достижения записи с переполнением буфера.
Для наилучших результатов рекомендуется использовать libusb, собранную с увеличенным размером MAX_CTRL_BUFFER_LENGTH с 4096 байт по умолчанию до 0xFFFF (libusb/os/linux_usbfs.h).
Security Advisory: https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c3gr-hgvr-f363