Skip to content

Xen linear pagetable recursion (CVE-2017-15595)

Xen XSA-240 / CVE-2017-15595: bir x86 PV guest, aynı seviyedeki "linear" page table'larının çok sayıda katmanını üst üste yığar; böylece hypervisor teardown derinlemesine recurse eder, Xen stack'ini overflow eder ve host'u crash eder (DoS; privesc/info-leak dışlanmamıştır).

Mechanism

Note

PV guest'ler kendi page table'larını yazar, bunları Xen validate eder. "Linear page table'lar", bir pagetable'ın aynı ya da daha yüksek seviyedeki başka bir pagetable'a referans verdiği entry'lerdir — meşru ama nadiren kullanılan bir özellik (NetBSD, Netware kullanır; Linux/MiniOS kullanmaz). İzolasyon invariant'ı şudur: page-type validation ve teardown, sınırlı işte ve sınırlı stack'te sonlanmalıdır. XSA-240 bir missing-restriction recursion bug'ıdır: Xen, üst üste yığılmış aynı seviyeli linear pagetable katmanlarının sayısını sınırlamayı başaramadı. De-validation sırasında (put_page_type / table teardown) her katman recurse eder; yeterince çok katmanla recursion Xen'in hypervisor stack'ini overflow eder ve host'u crash eder.

Aşılan sınır hypervisor stack bütünlüğü / availability'dir: guest tarafından seçilen pagetable topolojisi, hypervisor'da unbounded native recursion'ı sürükler.

Walkthrough

Public reference: Xen Security Advisory 240 ve NVD CVE-2017-15595. Conceptual path (advisory sınıfı belirtir):

  1. Bir PV guest olarak, birbirine aynı seviyede referans veren (linear pagetable'lar) ve çok katman derinliğinde iç içe geçen bir page table zinciri kur.
  2. Zincirin validation / teardown'ını tetikle (örneğin pin/unpin yaparak ya da address space'i tear down ederek).
  3. Xen her linear-pagetable katmanından recurse eder; derin nesting hypervisor stack'ini overflow eder.
  4. Hypervisor crash eder — tüm host için denial of service.

Warning

Bug sınıfı için belgelenmiş tarihsel, patch'lenmiş bir sorun. Yalnızca conceptual.

Detection

  • Tek bir PV guest'in pagetable operasyonlarıyla ilişkili hypervisor crash'leri / stack-overflow panic'leri.
  • Derinlemesine self-referential (linear) pagetable zincirleri kuran PV guest'leri izleme; olağandışı pagetable topolojilerinde integrity/anomaly uyarıları.

Mitigation

  • XSA-240 patch'lerini uygula. Opsiyonel bir takip, linear pagetable'ları varsayılan olarak devre dışı bırakır; pv-linear-pt=true|false (daha sonra CONFIG_PV_LINEAR_PT) ile kontrol et.
  • Etkilenen: 3.2'den itibaren tüm Xen, yalnızca x86 PV guest'ler (HVM/PVH ve ARM etkilenmez).
  • Untrusted tenant'lar için yalnızca HVM/PVH guest'ler çalıştır; PV gerekliyse linear pagetable kullanmayan guest kernel'lerini tercih et ve özelliği devre dışı bırak.

References