Xen SYSENTER double #GP injection (CVE-2020-25596)¶
Xen XSA-339 / CVE-2020-25596: Xen'in yazılımsal SYSENTER state-sanitization path'i bir #GP fault inject eder ama bunu PV guest'e iki kez teslim eder, böylece user-mode bir fault'u kernel-privilege bir fault'a dönüştürür — malicious/buggy userspace guest kernel'ini crash eder (VM DoS).
Mechanism¶
Note
x86 PV guest'lerde SYSENTER instruction'ı, yeterli state kaydetmediği için Xen tarafından yazılımsal state sanitization gerektirir. Sanitization bir sorun tespit ettiğinde guest'e bir general-protection (#GP) fault inject eder. Invariant şu: fault, guest kernel'in onu bir user signal'a çevirebilmesi için bir kez ve doğru ayrıcalıkta (user) teslim edilir. XSA-339 bir double-delivery bug: Xen #GP'yi yanlışlıkla iki kez inject eder ve ikinci teslimat user yerine kernel ayrıcalığında gelir. Kernel-privilege bir #GP tipik olarak fatal'dır (bir signal'a çevrilemez), dolayısıyla guest kernel panic eder.
Aşılan sınır, guest içinde doğru fault delivery/ayrıcalığıdır ve VM düzeyinde bir denial of service üretir.
Walkthrough¶
Public reference: Xen Security Advisory 339 ve NVD CVE-2020-25596. Kavramsal yol (advisory sınıfı belirtir):
- SYSENTER destekli hardware üzerinde bir x86 PV guest'te unprivileged userspace'ten, Xen'in sanitization #GP injection'ını tetikleyecek şekilde SYSENTER çalıştır.
- Xen #GP'yi iki kez teslim eder; ikincisi kernel ayrıcalığında gelir.
- Guest kernel, kernel-mode #GP'yi fatal olarak ele alır ve panic eder — VM DoS.
Warning
Bug sınıfı için belgelenmiş, tarihsel ve patch'lenmiş bir issue. Yalnızca kavramsal. Etki, kaynak VM ile sınırlıdır (host compromise yok).
Detection¶
- Userspace'ten SYSENTER kaynaklı #GP fault'lara izlenebilen guest-kernel panic'leri / crash'leri; PV guest'lerde tekrarlayan tek-VM crash'leri.
- Yalnızca Intel/Centaur/Shanghai CPU'lardaki x86 PV guest'leri etkiler (AMD/Hygon değil).
Mitigation¶
- Fault'u bir kez ve doğru ayrıcalıkta teslim eden
xsa339.patch'i (Xen 4.10'dan güncele kadar) uygula. - Workaround: PV yerine x86 PVH/HVM guest'ler çalıştır.
- Etkilenen: tüm Xen 3.2+, yalnızca x86 PV guest'ler; SYSENTER'ı 64-bit mode'da destekleyen CPU'lar.
References¶
- Xen Security Advisory 339, "x86 pv guest kernel DoS via SYSENTER", https://xenbits.xen.org/xsa/advisory-339.html
- NVD, CVE-2020-25596, https://nvd.nist.gov/vuln/detail/CVE-2020-25596