Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
qemu-xhci-complete-uaf — QEMU 11.1.2 - High - Local - UAF - xhci_complete, CVE-2026-17588 doorbell DMA의 잔여 문제 | Kitploit
도구/GitHubGitHub/abraxas/qemu-xhci-complete-uaf
Memory ForensicsVulnerability AnalysisExploitationPapers & ResearchBinary ExploitationLabs & Practice
GitHubabraxas/qemu-xhci-complete-uaf

qemu-xhci-complete-uaf

QEMU 11.1.2 - High - Local - UAF - xhci_complete, CVE-2026-17588 doorbell 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(힙 use-after-free). 도달 범위: 로컬(게스트).

xhci_complete는 CVE-2026-17588의 잔재입니다. 11.1.2 패치는 두 개의 xHCI 타이머를 보호합니다. 하지만 비동기 USB 완료 경로는 보호하지 않습니다. 이벤트 링을 도어벨 BAR로 겨냥한 게스트는 여전히 xhci_complete로부터 도어벨 0에 16바이트 TRB가 DMA로 기록되게 하며, 이때 TYPE_XHCI mem_reentrancy_guard는 이미 해제된 상태입니다. 이 기록은 xhci_process_commands를 실행합니다. 준비된 CR_DISABLE_SLOT은 xhci_complete가 여전히 붙잡고 있는 살아있는 XHCITransfer를 해제합니다.

q35는 qemu-xhci를 탑재합니다. 이 랩의 벌크 파트너는 usb-uas입니다. 동일한 complete 콜백은 usb-storage, usb-redir, usb-host에서도 도달 가능합니다.

qemu-xhci와 비동기 벌크 디바이스 위의 게스트 커널은 QEMU 프로세스 힙을 UAF시킬 수 있습니다.

ID아직 CVE 없음
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 벌크
라이선스GNU Affero GPL v3.0
랩127.0.0.1:18700 qtest 전용

공격자가 할 수 있는 일

누가: 신뢰할 수 없는 게스트 커널(또는 USB 패스스루 피어). 게스트에서 호스트로. QEMU 사용자 공간 힙.

무결성 (랩에서 입증됨)

방법싱크권한
게스트 ERST / ERDP를 도어벨 BAR에 설정한 뒤 비동기 UAS 완료xhci_complete hw/usb/hcd-xhci.c:3282-3295 -> xhci_write_event DMA외부 complete가 여전히 붙잡고 있는 XHCITransfer의 ASan heap-use-after-free. 도어벨 재진입에서 CR_DISABLE_SLOT을 가져옴.
동일 경로, xhci_ep_nuke_xfers / xhci_ep_free_xferg_free(xfer)살아있는 transfer와 엔드포인트 컨텍스트 해제. complete 후 다시 해제하면 double-free.

가용성 (랩에서 입증됨)

ASan 하에서 QEMU 프로세스 중단. ASan이 없으면 이는 하이퍼바이저 프로세스 내의 실제 힙 UAF입니다: 게스트에서 호스트로의 크래시, 그리고 해제된 XHCITransfer의 재사용이 추정됩니다.

정찰

qemu-xhci를 열거하는 것 외에는 필요 없습니다. q35 기본값에 포함되어 있습니다.

닫힌 채로 남는 인접 표면

  • CVE-2026-17588 타이머 경로: xhci_mfwrap_timer와 xhci_ep_kick_timer는 xhci->parent.mem_reentrancy_guard를 설정합니다. 이 핀에서는 닫혀 있습니다.
  • EHCI 비동기 완료: FINISHED로 표시하고 가드된 BH를 스케줄합니다. USB complete 콜백에서 이벤트 링을 기록하지 않습니다.
  • UAS 객체 UAF(CVE-2021-3713 계열): 상태 BH는 UAS DeviceState에서 가드됩니다. 남은 것은 이벤트 링 DMA를 통한 xHCI 객체이며, UAS 객체의 2021년 n-day가 아닙니다.
  • HID NAK 재시도: 이는 kick 타이머이며, 이제 가드됩니다.
  • 게스트 루트 assert와 무제한 RNDIS 할당: 하드닝이며, 이 클래스가 아닙니다.

이 랩은 RIP 제어나 게스트에서 호스트로의 셸을 입증하지 않습니다. 이 클래스는 QEMU 프로세스의 힙 UAF입니다.

발견 방법

현재 GA이자 CVE-2026-17588을 닫은 태그이기 때문에 v11.1.2를 핀했습니다. hw/usb/hcd-xhci.c를 들여다보며 패치가 놓친 이벤트 링 기록자를 찾았습니다.

타이머는 TYPE_XHCI 가드를 획득합니다. xhci_complete는 그렇지 않습니다. EHCI는 이미 2021년에 이 클래스를 BH로 지연시켰습니다. xHCI는 여전히 USB complete 콜백에서 DMA를 기록합니다.

잘못된 접근: 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 빌드. 루프백. 증인 전용.

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_complete 전체에 걸쳐 xhci->parent.mem_reentrancy_guard를 적용하십시오. 또는 EHCI와 일치하도록 xhci_try_complete_packet / xhci_kick_epctx를 TYPE_XHCI로 보호된 BH로 지연시키십시오. 어느 쪽이든, 이벤트 링에 DMA 쓰기를 수행하는 작업은 가드가 해제된 상태에서 실행되어서는 안 됩니다.

참고 자료

  • 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를 참조하십시오. 루프백 랩 전용. 보증 없음.

도구 다운로드