Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
qemu-xhci-complete-uaf — QEMU 11.1.2 — высокий уровень — локальная — UAF — xhci_complete, остаток от CVE-2026-17588, DMA дверного звонка | Kitploit
Инструменты/GitHubGitHub/abraxas/qemu-xhci-complete-uaf
Криминалистика памятиАнализ уязвимостейЭксплуатацияСтатьи и ИсследованияЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubabraxas/qemu-xhci-complete-uaf

qemu-xhci-complete-uaf

QEMU 11.1.2 — высокий уровень — локальная — UAF — xhci_complete, остаток от CVE-2026-17588, DMA дверного звонка

Репозиторий
82 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - qemu-xhci-complete-uaf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  qemu-xhci-complete-uaf

qemu-xhci-complete-uaf

QEMU v11.1.2 (4fc49f46dc95d4a27de2509e7fceb2931e91faeb) - qemu-xhci

Класс: UAF (heap use-after-free). Доступ: локальный (гость).

xhci_complete — это остаток от CVE-2026-17588. Патч 11.1.2 защищает два таймера xHCI. Он не защищает асинхронный путь завершения USB. Гость, направивший event ring на BAR дверного звонка, всё ещё получает 16-байтовый TRB, DMA-записанный в doorbell 0 из xhci_complete, при уже снятом mem_reentrancy_guard для TYPE_XHCI. Эта запись запускает xhci_process_commands. Подготовленный CR_DISABLE_SLOT освобождает живой XHCITransfer, пока xhci_complete всё ещё удерживает его.

q35 поставляется с qemu-xhci. Партнёр по bulk в этой лаборатории — usb-uas. Тот же callback завершения достижим из usb-storage, usb-redir и usb-host.

Гостевое ядро на qemu-xhci плюс асинхронное bulk-устройство может вызвать UAF кучи процесса QEMU.

IDCVE пока нет
CWECWE-416
CVSSHigh: 8.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
ПродуктQEMU
Затронутоv11.1.2 (4fc49f46)
Аутентификациягостевое ядро на qemu-xhci (по умолчанию в q35) плюс USB_RET_ASYNC bulk
ЛицензияGNU Affero GPL v3.0
Лаборатория127.0.0.1:18700 только qtest

Что может сделать атакующий

Кто: недоверенное гостевое ядро (или пир USB passthrough). Из гостя в хост. Куча пользовательского пространства QEMU.

Целостность (доказано в лаборатории)

МетодТочка сбросаПривилегия
Гостевые ERST / ERDP на BAR дверного звонка, затем асинхронное завершение UASxhci_complete hw/usb/hcd-xhci.c:3282-3295 -> DMA xhci_write_eventASan heap-use-after-free для XHCITransfer, пока внешний complete всё ещё удерживает его. CR_DISABLE_SLOT извлекается при повторном входе через дверной звонок.
Тот же путь, xhci_ep_nuke_xfers / xhci_ep_free_xferg_free(xfer)Освобождение живого transfer и контекста endpoint. Double-free, если complete затем освобождает снова.

Доступность (доказано в лаборатории)

Аварийное завершение процесса QEMU под ASan. Без ASan это живой heap UAF в процессе гипервизора: падение из гостя в хост и предполагаемое повторное использование освобождённого XHCITransfer.

Разведка

Ничего не требуется сверх перечисления qemu-xhci. По умолчанию в q35 он присутствует.

Смежная поверхность, которая остаётся закрытой

  • Путь таймеров CVE-2026-17588: xhci_mfwrap_timer и xhci_ep_kick_timer устанавливают xhci->parent.mem_reentrancy_guard. Закрыто на этой фиксации.
  • Асинхронное завершение EHCI: помечает FINISHED и планирует защищённый BH. Не пишет в event ring из callback завершения USB.
  • UAF объекта UAS (класс CVE-2021-3713): BH статуса защищён на DeviceState UAS. Остаток — это объект xHCI через DMA event ring, а не n-day 2021 года для объекта UAS.
  • Повтор HID NAK: это kick-таймер, теперь защищён.
  • Guest-root asserts и неограниченный RNDIS alloc: усиление защиты, не этот класс.

Лаборатория не демонстрирует контроль RIP или шелл из гостя в хост. Класс — heap UAF процесса QEMU.

Как я это нашёл

Я зафиксировал v11.1.2, потому что это текущий GA и тег, закрывший CVE-2026-17588. Я сосредоточился на hw/usb/hcd-xhci.c и спросил, каких писателей event ring пропустил патч.

Таймеры берут guard TYPE_XHCI. xhci_complete — нет. EHCI уже отложил этот класс на BH в 2021 году. xHCI всё ещё пишет DMA из callback завершения USB.

Ошибочные решения: считать статус UAS BH достаточным (он защищает UAS, а не xHCI); ожидание HID NAK (таймер, уже исправлен); желание использовать настоящее гостевое ядро вместо qtest doorbell + usb-uas.

Лаборатория

cd lab
./run.sh

Цель — только 127.0.0.1:18700 (qtest) и 127.0.0.1:18701 (QMP). Pin клонируется из github.com/qemu/QEMU тега v11.1.2 / 4fc49f46. Сборка с ASan. Loopback. Только witness.

SUCCESS qemu-xhci-complete-uaf how=ERROR: AddressSanitizer: heap-use-after-free erst=doorbell async=1 success=1 disable-slot-fetch=1 QEMU-XHCI-COMPLETE-UAF-WITNESS

Воспроизведение: python3 qemu-xhci-complete-uaf-Abraxas-Labs.py.

Исправление

Задействуйте xhci->parent.mem_reentrancy_guard на всём протяжении xhci_complete — так же, как это уже делают два таймера. Либо отложите xhci_try_complete_packet / xhci_kick_epctx на BH, защищённый TYPE_XHCI, по аналогии с EHCI. В любом случае запись в event ring посредством DMA не должна выполняться при снятом guard.

Ссылки

  • github.com/qemu/QEMU тег v11.1.2 коммит 4fc49f46dc95d4a27de2509e7fceb2931e91faeb
  • xhci_complete
  • Рядом исправлено (не этот путь): CVE-2026-17588 повторный вход таймера xHCI
  • Тот же пин: qemu-nvme-sgl-bar · qemu-colo-l4-oob
  • Серия: QEMU 11.1.2 leftovers
  • CWE-416

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только для лаборатории с loopback. Без гарантий.

Скачать инструмент