Xen XSA-107 FIFO event-channel control-block mishandling DoS¶
Xen XSA-107 / CVE-2014-6268: hypervisor, bir event'i bind/move etmeden önce bir FIFO event-channel control block'unun var olduğunu doğrulayamaz, böylece bir guest
evtchn_fifo_set_pending()'i missing-control-block crash'ine sürebilir — bir guest-to-host denial of service.
Mechanism¶
Note
Xen'in FIFO event-channel ABI'si, FIFO event'leri o VCPU'ya teslim edilmeden
önce (EVTCHNOP_init_control aracılığıyla) initialize edilmesi gereken
per-VCPU bir control block tutar. İzolasyon invariant'ı, hypervisor'ın
control block'u kullanmadan önce var olup olmadığını kontrol etmesidir.
XSA-107 bir missing-initialization check: event'ler hâlâ 2-level ABI
mode'undayken bind edilebilir (örn. domain başlamadan önce toolstack
tarafından), dolayısıyla bir control block yok olabilir.
evtchn_fifo_set_pending() içinde bu, (a) event'in control block'u olmayan bir
VCPU'yu hedeflemesi (queue lookup başarısız olur) ya da (b) VCPU 0'ın control
block'u olmaması (default-queue erişimi başarısız olur) durumunda bir crash'e
yol açar. Böyle bir VCPU'ya FIFO event bind/move eden bir guest, hypervisor'ı
crash'e sürükler — guest→host DoS.
Kardeş FIFO event-channel bug'ları: XSA-188 use-after-free (free-but-not-null) ve XSA-359 reordered-read NULL deref (memory ordering).
Walkthrough¶
Public reference: Xen Security Advisory 107 ve NVD CVE-2014-6268. Kavramsal yol (açıklayıcı; advisory sınıfı belirtir):
- Guest'ten, per-VCPU control block'u initialize edilmemiş (o VCPU için
başarılı bir
init_controlyok) bir VCPU'ya FIFO event channel bind ya da move et, ya da VCPU 0'ın bir control block'tan yoksun olmasına dayan. - Event teslimini tetikleyerek
evtchn_fifo_set_pending()'in eksik control block ile çalışmasını sağla; queue/default-queue lookup yok olan state'i dereference eder. - Hypervisor crash eder (yalnızca availability etkisi — info leak / code exec yok).
Beklenen gözlemlenebilir: per-VCPU control-block kurulumu tamamlanmadan FIFO
event-channel kullanımının ardından evtchn_fifo_set_pending'e izlenen host
crash'i.
Warning
Bug sınıfı için belgelenmiş, patch'lenmiş bir issue. Yalnızca kavramsal.
Detection¶
- Initialize edilmiş FIFO control block'larından yoksun VCPU'lara event channel
bind/move eden guest'ler; per-VCPU
init_controltamamlanmadan FIFO event-channel kullanımı. evtchn_fifo_set_pendingpath'ine izlenen host crash'leri.
Mitigation¶
xsa107-*.patch'i uygula. Etkilenen: Xen 4.4 ve sonrası (NVD 4.4.0, 4.4.0-RC1, 4.4.1'i listeler). Etki yalnızca DoS'tur (CVSS v2 4.9, yalnızca availability).
References¶
- Xen Security Advisory 107, "Mishandling of uninitialised FIFO-based event channel control blocks", https://xenbits.xen.org/xsa/advisory-107.html
- NVD, CVE-2014-6268, https://nvd.nist.gov/vuln/detail/CVE-2014-6268