Xen FIFO event-channel use-after-free¶
Xen XSA-188 / CVE-2016-7154: FIFO event-channel kodundaki bir use-after-free; bir error path bir control structure'ı pointer'ı null'lamadan free eder ve daha sonraki bir event-channel operasyonunun free edilmiş hypervisor memory'si üzerinde işlem yapmasına olanak tanır.
Mechanism¶
Note
Xen'in FIFO event-channel ABI'si, bir guest'in EVTCHNOP_init_control ile
VCPU-başına control structure kaydetmesine ve EVTCHNOP_expand_array ile event
array'lerini büyütmesine izin verir. İzolasyon invariant'ı, bu yapılar için
hypervisor bookkeeping'inin guest-yönlendirmeli operasyonlar boyunca tutarlı
kalmasıdır. XSA-188'de, EVTCHNOP_init_control'ün — guest geçersiz bir guest
frame number geçtiğinde alınan — error path'i bir control structure'ı free
eder ama ilişkili pointer'ı null'lamaz. Sonraki bir FIFO event-channel
operasyonu ardından bu dangling pointer'ı hâlâ geçerliymiş gibi
dereference eder/üzerinde işlem yapar: tamamen guest input'uyla yönlendirilen,
hypervisor içinde, guest→host sınırını geçen bir use-after-free.
Bu, klasik "error path'te free-et-ama-null'lama" UAF'ıdır; ilgili FIFO event-channel ordering/init bug'larını XSA-107 control-block mishandling DoS ve XSA-359 reordered-read NULL deref'te, daha geniş interface'i ise Xen PV hypercalls'ta karşılaştır.
Walkthrough¶
Public referans: Xen Security Advisory 188 ve NVD CVE-2016-7154. Kavramsal reprodüksiyon path'i (örnekleyici — advisory silah haline getirilmiş bir zinciri değil, sınıfı belirtir):
- Guest'ten, pointer'ı set bırakırken control structure'ı free eden error path'i
zorlamak için bilinçli olarak geçersiz bir guest frame number ile
EVTCHNOP_init_controlçağır. - Artık bayat olan pointer'ı yeniden kullanan bir takip FIFO operasyonu
(
EVTCHNOP_expand_arrayveya başka birEVTCHNOP_init_control) çalıştır. - Hypervisor free edilmiş memory üzerinde işlem yapar; o allocation'ı kontrollü içerikle geri almak (reclaim) corruption'a giden yoldur.
Beklenen gözlemlenebilir: bir guest'ten gelen FIFO event-channel operasyonlarıyla korele hypervisor instabilitesi / crash'i.
Warning
Bug sınıfı için belgelenmiş patch'lenmiş bir sorun. Yalnızca kavramsal — reclaim object'i veya layout detayı yok.
Detection¶
- Geçersiz frame number'larla
EVTCHNOP_init_controlçağırıp hemen ardından diğer FIFO event-channel operasyonları gelen guest'leri izle. - FIFO event-channel code path'lerine izlenen hypervisor oops/crash'leri; evtchn allocation'ına bağlı beklenmedik dom0/host instabilitesi.
Mitigation¶
- Free edilen pointer'ı null'layan
xsa188.patch'i uygula. Advisory'ye göre yalnızca Xen 4.4 etkilenir (4.5+ ve 4.3-ve-öncesi etkilenmez; NVD 4.4.0–4.4.4'ü listeler). - Etki: kötü niyetli bir guest administrator host'u crash edebilir (DoS); advisory code execution / info leak'in "dışlanamayacağını" not eder. Guest-admin güvenini buna göre kısıtla.
References¶
- Xen Security Advisory 188, "Use after free in FIFO event channel code", https://xenbits.xen.org/xsa/advisory-188.html
- NVD, CVE-2016-7154, https://nvd.nist.gov/vuln/detail/CVE-2016-7154