bhyve XHCI USB out-of-bounds read RCE (CVE-2024-41721)¶
bhyve'ın XHCI USB emulation'ında yetersiz boundary validation, host
bhyveprocess'inde arbitrary write ve remote code execution'a yönlendirilebilen bir heap out-of-bounds read'e yol açar.
Mechanism¶
Boundary neden kırılıyor
Kardeşi CVE-2024-32668 gibi, bu bug da bhyve'ın host tarafındaki XHCI USB controller emulation'ında. Burada eksik validation bir heap üzerinde out-of-bounds read üretiyor (CWE-125): host model, guest-controlled bounds kullanarak bir heap buffer'ın ötesini okuyor. FreeBSD-SA-24:15, bu OOB read'in "could potentially lead to an arbitrary write and remote code execution" olduğunu not ediyor — yanlış boyutlandırılmış ya da yanlış yönlendirilmiş bir read, komşu heap state'ini leak edebilir ve/veya bir write'ta kullanılan sonraki bir length/pointer'ı besleyebilir; böylece bir information-disclosure read'i controlled write'a yükseltir. İhlal edilen invariant yine host buffer'larını index'lemeden önce guest-supplied bounds validate edilmeli; device model host process'inde çalıştığı için read/write host memory'sine düşer.
Walkthrough¶
Advisory'den kavramsal yol; örnekleyici, silah haline getirilmiş bir chain değil.
- Host, emulated bir XHCI device'a sahip bir guest çalıştırır:
-
Privileged guest software, bounds'ları validate edilmeyen crafted XHCI/USB request'leri gönderir ve host emulation'ın bir heap buffer'ın ötesini okumasına neden olur.
-
Leak edilen/yanlış kullanılan data — ya da ondan türetilen bir length — sonraki bir operation'ı sürükler; advisory'ye göre bu, host RCE'nin temeli olan attacker-influenced bir write'a yönlendirilebilir.
Advisory impact text
"An insufficient boundary validation in the USB code could lead to an out-of-bounds read on the heap, which could potentially lead to an arbitrary write and remote code execution." — FreeBSD-SA-24:15.bhyve
Detection¶
- Host-side: Guest USB aktivitesi sırasında
bhyvecrash'i ya da anormal davranış; ASan, XHCI path'inde heap-buffer-overflow (read) işaretler; guard page'ler over-read'leri yakalar. - Behavioral: Bozuk length/offset field'larına sahip guest XHCI transfer descriptor'ları ya da komşu host memory'sini yoklayan read pattern'leri anormaldir.
Mitigation¶
- Patch: FreeBSD-SA-24:15.bhyve uygula (2024-09-19'da düzeltildi: 14.1-p5, 14.0-p11, 13.4-p1, 13.3-p7); fix, read path'ine boundary validation ekler.
- Configuration workaround: Gerekli değilse emulated XHCI device'ı kaldır.
- Defense in depth: Capsicum sandboxing, corruption sonrası device-model process'inin erişimini sınırlar.