Skip to content

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):

  1. 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.
  2. Artık bayat olan pointer'ı yeniden kullanan bir takip FIFO operasyonu (EVTCHNOP_expand_array veya başka bir EVTCHNOP_init_control) çalıştır.
  3. 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