Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
qemu-xhci-complete-uaf — QEMU 11.1.2 - Alta - Locale - UAF - xhci_complete residuo di CVE-2026-17588 doorbell DMA | Kitploit
Strumenti/GitHubGitHub/abraxas/qemu-xhci-complete-uaf
Memory ForensicsAnalisi delle VulnerabilitàExploitPaper e RicercaBinary ExploitationLab e Pratica
GitHubabraxas/qemu-xhci-complete-uaf

qemu-xhci-complete-uaf

QEMU 11.1.2 - Alta - Locale - UAF - xhci_complete residuo di CVE-2026-17588 doorbell DMA

Vedi Repository
83 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Classe: UAF (use-after-free dell'heap). Raggiungibilità: Locale (guest).

xhci_complete è ciò che resta di CVE-2026-17588. La patch della 11.1.2 protegge i due timer xHCI. Non protegge il percorso di completamento asincrono USB. Un guest che punta l'event ring al doorbell BAR ottiene comunque un TRB di 16 byte scritto via DMA nel doorbell 0 da xhci_complete, con il mem_reentrancy_guard di TYPE_XHCI già rilasciato. Quella scrittura esegue xhci_process_commands. Un CR_DISABLE_SLOT preparato libera l'XHCITransfer attivo mentre xhci_complete lo tiene ancora.

q35 include qemu-xhci. Il partner bulk in questo laboratorio è usb-uas. La stessa callback di completamento è raggiungibile da usb-storage, usb-redir e usb-host.

Un kernel guest su qemu-xhci più un dispositivo bulk asincrono può causare un UAF dell'heap del processo QEMU.

IDnessun CVE al momento
CWECWE-416
CVSSAlto: 8.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
ProdottoQEMU
Affettov11.1.2 (4fc49f46)
Authkernel guest su qemu-xhci (default q35) più bulk USB_RET_ASYNC
LicenzaGNU Affero GPL v3.0
Lab127.0.0.1:18700 solo qtest

Cosa può fare un attaccante

Chi: kernel guest non attendibile (o peer di USB passthrough). Da guest a host. Heap dello userspace QEMU.

Integrità (dimostrata in laboratorio)

MetodoSinkPrivilegio
ERST / ERDP del guest al doorbell BAR, poi completamento UAS asincronoxhci_complete hw/usb/hcd-xhci.c:3282-3295 -> DMA di xhci_write_eventASan heap-use-after-free di XHCITransfer mentre il completamento esterno lo tiene ancora. CR_DISABLE_SLOT recuperato dalla rientranza del doorbell.
Stesso percorso, xhci_ep_nuke_xfers / xhci_ep_free_xferg_free(xfer)Liberazione del transfer attivo e del contesto dell'endpoint. Double-free se il completamento libera di nuovo.

Disponibilità (dimostrata in laboratorio)

Abort del processo QEMU sotto ASan. Senza ASan si tratta di un UAF dell'heap attivo nel processo dell'hypervisor: crash da guest a host, e riuso dedotto dell'XHCITransfer liberato.

Ricognizione

Nessuna necessaria oltre all'enumerazione di qemu-xhci. Il default q35 lo include.

Superficie adiacente che resta chiusa

  • Percorso dei timer di CVE-2026-17588: xhci_mfwrap_timer e xhci_ep_kick_timer impostano xhci->parent.mem_reentrancy_guard. Chiuso su questo pin.
  • Completamento asincrono EHCI: marca FINISHED e pianifica un BH protetto. Non scrive l'event ring dalla callback di completamento USB.
  • UAF dell'oggetto UAS (classe CVE-2021-3713): il BH di stato è protetto sul DeviceState UAS. Ciò che resta è l'oggetto xHCI tramite DMA dell'event ring, non un n-day del 2021 dell'oggetto UAS.
  • Retry NAK HID: quello è il kick timer, ora protetto.
  • Assert da guest-root e allocazione RNDIS illimitata: hardening, non questa classe.

Il laboratorio non dimostra il controllo di RIP né una shell da guest a host. La classe è l'UAF dell'heap del processo QEMU.

Come l'ho trovato

Ho fissato la v11.1.2 perché è la GA corrente e il tag che ha chiuso CVE-2026-17588. Mi sono concentrato su hw/usb/hcd-xhci.c e mi sono chiesto quali scrittori dell'event ring la patch avesse mancato.

I timer acquisiscono la guardia TYPE_XHCI. xhci_complete no. EHCI aveva già rimandato questa classe a un BH nel 2021. xHCI scrive ancora via DMA dalla callback di completamento USB.

Giri sbagliati: considerare sufficiente lo stato BH dell'UAS (protegge l'UAS, non xHCI); attendere l'HID NAK (timer, già corretto); volere un vero kernel guest invece del doorbell qtest + usb-uas.

Lab

cd lab
./run.sh

Prendi di mira solo 127.0.0.1:18700 (qtest) e 127.0.0.1:18701 (QMP). Pin è clonato da github.com/qemu/QEMU tag v11.1.2 / 4fc49f46. Build ASan. Loopback. Solo 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.

La correzione

Attivare xhci->parent.mem_reentrancy_guard per l'intera durata di xhci_complete, allo stesso modo in cui già fanno i due timer. Oppure rimandare xhci_try_complete_packet / xhci_kick_epctx su un BH protetto da TYPE_XHCI, come in EHCI. In entrambi i casi, la scrittura DMA sull'event ring non deve essere eseguita con la guardia disattivata.

Riferimenti

  • github.com/qemu/QEMU tag v11.1.2 commit 4fc49f46dc95d4a27de2509e7fceb2931e91faeb
  • xhci_complete
  • Correlato e già corretto (non questo percorso): CVE-2026-17588 reentrancy del timer xHCI
  • Stesso pin: qemu-nvme-sgl-bar · qemu-colo-l4-oob
  • Serie: QEMU 11.1.2 leftovers
  • CWE-416

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo laboratorio loopback. Nessuna garanzia.

Scarica lo strumento