Xen grant table misaligned L1 pagetable update (CVE-2017-12137)¶
Bir guest L1
pagetableentry'sini kabul eden grant-map path'i alignment'ı zorlamıyordu; bu yüzden misaligned bir update, hedef PTE'yi ve onu izleyen entry'leri guest-controlled değerlerle bozar — yani bir PV-guest-to-host escalation.
Mechanism¶
Bug class / invariant
Bir PV guest bir grant'i map'lerken Xen, mapping'in nereye kurulacağını
belirten ya bir linear address ya da doğrudan bir L1 pagetable entry (PTE)
referansı kabul eder. Linear-address path'i değeri truncate/align ederken,
L1-entry path'i alignment validation'ı atlıyordu. 8-byte aligned olmayan
bir PTE write, guest-controlled bit'leri hedeflenen entry'nin ve ona komşu
olanın üzerine taşırır; eğer bir page sınırını aşarsa keyfi heap page'lerini
bozabilir. İhlal edilen invariant şudur: pagetable write'ları doğal olarak
aligned olmalı ve tek bir hedef entry'yle sınırlı kalmalıdır. PTE içeriği
üzerinde kontrol elde eden bir PV guest, tam host privilege'ına giden bir path
kazanır.
Walkthrough¶
Conceptual only
XSA-227'den high-level yeniden kurgu.
- Bir PV guest, hedefi kasıtlı olarak misaligned bir offset'e sahip bir L1 PTE referansıyla belirten bir grant-map operasyonu yayınlar.
- Xen update'i yeniden align etmeden uygular ve hedef PTE ile bir sonraki entry'yi attacker-controlled değerlerle bozar.
- Ortaya çıkan mapping/pagetable bozulması, keyfi host-memory erişimine ve privilege escalation'a çevrilir.
Detection¶
- Misaligned L1-entry referanslarıyla grant-map istekleri gönderen PV guest'ler.
- Tek bir PV domain'e bağlı hypervisor pagetable-validation hataları ya da memory corruption. Ayrıca bkz. page-table manipulation.
Mitigation¶
- XSA-227 patch'ini uygula (tüm x86 Xen sürümleri); bu, L1-entry grant-map path'inde alignment'ı zorlar.
- Mitigation: yalnızca dom0-hosted bir qemu ile HVM guest'ler çalıştır (PV grant path'inden ve untrusted stub device model'lerinden kaçınır).