Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
qemu-xhci-complete-uaf — QEMU 11.1.2 – Hoch – Lokal – UAF – xhci_complete Überbleibsel von CVE-2026-17588 Doorbell-DMA | Kitploit
Tools/GitHubGitHub/abraxas/qemu-xhci-complete-uaf
SpeicherforensikSchwachstellenanalyseExploitationPapers & ForschungBinary-ExploitationLabs & Praxis
GitHubabraxas/qemu-xhci-complete-uaf

qemu-xhci-complete-uaf

QEMU 11.1.2 – Hoch – Lokal – UAF – xhci_complete Überbleibsel von CVE-2026-17588 Doorbell-DMA

Repository anzeigen
8vor 3 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

Klasse: UAF (Heap-Use-after-free). Reichweite: Lokal (Gast).

xhci_complete ist der Überrest von CVE-2026-17588. Der Patch für 11.1.2 schützt die beiden xHCI-Timer. Er schützt nicht den asynchronen USB-Complete-Pfad. Ein Gast, der den Event-Ring auf die Doorbell-BAR richtet, erhält weiterhin einen 16-Byte-TRB, der per DMA aus xhci_complete in Doorbell 0 geschrieben wird, wobei der mem_reentrancy_guard vom TYPE_XHCI bereits aufgehoben ist. Dieser Schreibvorgang führt xhci_process_commands aus. Ein vorbereitetes CR_DISABLE_SLOT gibt den aktiven XHCITransfer frei, während xhci_complete ihn noch hält.

q35 liefert qemu-xhci mit. Der Bulk-Partner in diesem Lab ist usb-uas. Derselbe Complete-Callback ist auch von usb-storage, usb-redir und usb-host aus erreichbar.

Ein Gast-Kernel auf qemu-xhci plus einem asynchronen Bulk-Gerät kann einen UAF im Heap des QEMU-Prozesses auslösen.

IDnoch keine CVE
CWECWE-416
CVSSHoch: 8.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
ProduktQEMU
Betroffenv11.1.2 (4fc49f46)
AuthGast-Kernel auf qemu-xhci (q35-Standard) plus USB_RET_ASYNC Bulk
LizenzGNU Affero GPL v3.0
Lab127.0.0.1:18700 nur qtest

Was ein Angreifer tun kann

Wer: nicht vertrauenswürdiger Gast-Kernel (oder USB-Passthrough-Peer). Gast-zu-Host. QEMU-Userspace-Heap.

Integrität (im Lab nachgewiesen)

MethodeSinkPrivileg
Gast-ERST / ERDP an der Doorbell-BAR, dann asynchrones UAS-Completexhci_complete hw/usb/hcd-xhci.c:3282-3295 -> xhci_write_event DMAASan heap-use-after-free von XHCITransfer, während das äußere Complete ihn noch hält. CR_DISABLE_SLOT wird aus der Doorbell-Reentry abgerufen.
Derselbe Pfad, xhci_ep_nuke_xfers / xhci_ep_free_xferg_free(xfer)Freigabe des aktiven Transfers und des Endpoint-Kontexts. Double-Free, wenn Complete anschließend erneut freigibt.

Verfügbarkeit (im Lab nachgewiesen)

QEMU-Prozessabbruch unter ASan. Ohne ASan ist dies ein Live-Heap-UAF im Hypervisor-Prozess: Gast-zu-Host-Absturz und, abgeleitet, Wiederverwendung des freigegebenen XHCITransfer.

Recon

Nichts erforderlich außer der Enumeration von qemu-xhci. Der q35-Standard enthält es.

Angrenzende Angriffsfläche, die geschlossen bleibt

  • CVE-2026-17588-Timer-Pfad: xhci_mfwrap_timer und xhci_ep_kick_timer setzen xhci->parent.mem_reentrancy_guard. Auf diesem Pin geschlossen.
  • EHCI-Async-Complete: markiert FINISHED und plant einen geschützten BH ein. Schreibt den Event-Ring nicht aus dem USB-Complete-Callback.
  • UAS-Objekt-UAF (Klasse CVE-2021-3713): Status-BH ist am UAS-DeviceState geschützt. Der Überrest ist das xHCI-Objekt via Event-Ring-DMA, kein 2021er-n-day des UAS-Objekts.
  • HID-NAK-Retry: das ist der Kick-Timer, jetzt geschützt.
  • Gast-Root-Asserts und unbegrenzte RNDIS-Allokation: Härtung, nicht diese Klasse.

Das Lab demonstriert keine RIP-Kontrolle und keine Gast-zu-Host-Shell. Die Klasse ist Heap-UAF des QEMU-Prozesses.

Wie ich es gefunden habe

Ich habe v11.1.2 gepinnt, weil das die aktuelle GA-Version und der Tag ist, der CVE-2026-17588 geschlossen hat. Ich habe mich mit hw/usb/hcd-xhci.c befasst und gefragt, welche Schreiber des Event-Rings der Patch übersehen hat.

Die Timer nehmen den TYPE_XHCI-Guard. xhci_complete nicht. EHCI hat diese Klasse bereits 2021 auf einen BH verlagert. xHCI schreibt weiterhin DMA aus dem USB-Complete-Callback.

Falsche Ansätze: den UAS-Status BH als ausreichend zu betrachten (er schützt UAS, nicht xHCI); auf HID NAK zu warten (Timer, bereits gepatcht); einen echten Gast-Kernel statt qtest doorbell + usb-uas zu wollen.

Lab

cd lab
./run.sh

Nur 127.0.0.1:18700 (qtest) und 127.0.0.1:18701 (QMP) anvisieren. Pin ist von github.com/qemu/QEMU Tag v11.1.2 / 4fc49f46 geklont. ASan-Build. Loopback. Nur 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

Replay: python3 qemu-xhci-complete-uaf-Abraxas-Labs.py.

Die Korrektur

Aktiviere xhci->parent.mem_reentrancy_guard für den gesamten Ablauf von xhci_complete, so wie es die beiden Timer bereits tun. Oder verschiebe xhci_try_complete_packet / xhci_kick_epctx auf einen TYPE_XHCI-geschützten BH, analog zu EHCI. In beiden Fällen darf das DMA-Schreiben in den Event-Ring nicht ausgeführt werden, solange der Guard nicht gesetzt ist.

Referenzen

  • github.com/qemu/QEMU Tag v11.1.2 Commit 4fc49f46dc95d4a27de2509e7fceb2931e91faeb
  • xhci_complete
  • In der Nähe gepatcht (nicht dieser Pfad): CVE-2026-17588 xHCI-Timer-Reentrancy
  • Gleicher Pin: qemu-nvme-sgl-bar · qemu-colo-l4-oob
  • Serie: QEMU 11.1.2 leftovers
  • CWE-416

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen