Skip to content

Xen grant table misaligned L1 pagetable update (CVE-2017-12137)

Bir guest L1 pagetable entry'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.

  1. Bir PV guest, hedefi kasıtlı olarak misaligned bir offset'e sahip bir L1 PTE referansıyla belirten bir grant-map operasyonu yayınlar.
  2. Xen update'i yeniden align etmeden uygular ve hedef PTE ile bir sonraki entry'yi attacker-controlled değerlerle bozar.
  3. 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).

References