Xen linear pagetable refcount reset on resume (CVE-2019-19578)¶
Xen XSA-309 / CVE-2019-19578: Xen, kısmen valide edilmiş bir PV page table'ının validation'ını resume ettiğinde
linear_pt_entrycount'larını yanlış şekilde düşürür; bu da bir PV guest'in yasaklanmış linear-pagetable zincirleri kurmasına olanak tanır — host crash (DoS), privesc/info-leak dışlanmamıştır.
Mechanism¶
Note
Linear-pagetable tehlikesini sınırlamak için Xen, page başına bir
linear_pt_entry count'u izler; böylece bir pagetable aynı anda hem başka
pagetable'lara işaret edip hem de onlar tarafından işaret edilemez. Invariant
şudur: bu count'lar her validation path'inde doğru kalır. XSA-309, resume
path'inde bir bookkeeping bug'ıdır: pagetable validation preempt edilebilir
ve Xen kısmen valide edilmiş bir table'ı validate etmeyi resume ettiğinde
bazı linear_pt_entry count'larını yanlış şekilde düşürür. Count'lar yanlış
olduğunda guest, count'ların yasaklaması gereken tam o linear-pagetable
zincirlerini yeniden oluşturabilir ve XSA-240 sınıfı tehlikeyi yeniden açar.
Aşılan sınır, PV pagetable güvenliğini zorlayan reference-count accounting'inin bütünlüğüdür.
Walkthrough¶
Public reference: Xen Security Advisory 309 ve NVD CVE-2019-19578. Conceptual path (advisory sınıfı belirtir):
- Bir PV guest olarak, büyük bir page table'ın validation'ını başlat; böylece Xen preempt eder ve onu kısmen valide edilmiş olarak işaretler.
- Resumption'ı,
linear_pt_entrycount'larının yanlış düşürüleceği şekilde ayarla. - Artık tutarsız olan count'ları yasaklanmış bir linear-pagetable zinciri kurmak için exploit et.
- Ortaya çıkan state, guest'in host'u crash etmesine olanak tanır; privilege escalation / information leak dışlanmamıştır.
Warning
Bug sınıfı için belgelenmiş tarihsel, patch'lenmiş bir sorun. Yalnızca conceptual.
Detection¶
- Büyük/preemptible pagetable validation'ları ardından linear-pagetable oluşturma yapan PV guest'lerle ilişkili hypervisor crash'leri.
- Instrument edilen yerlerde pagetable type/refcount accounting'inin integrity izlemesi.
Mitigation¶
xsa309.patch'i uygula (Xen 4.8'den unstable'a kadar).- Linear pagetable'ları
CONFIG_PV_LINEAR_PT=nya dapv-linear-pt=falseile devre dışı bırak. - Etkilenen: tüm Xen, yalnızca x86 PV guest'ler (HVM/PVH ve ARM etkilenmez); yalnızca linear pagetable'ların etkin olduğu yerlerde geçerli. NetBSD bunları kullanır; Linux/MiniOS kullanmaz. Untrusted guest'ler için HVM/PVH'yi tercih et.
References¶
- Xen Security Advisory 309, "Linear pagetable use / entry miscounts on resumed validation", https://xenbits.xen.org/xsa/advisory-309.html
- NVD, CVE-2019-19578, https://nvd.nist.gov/vuln/detail/CVE-2019-19578