Skip to content

Xen XSA-218 grant-table concurrent unmap false mapping info leak

Xen XSA-218 (CVE-2017-10913 / CVE-2017-10914): grant-table unmap kodundaki race'ler — iki kez map'lenmiş bir grant'ın eşzamanlı unmap'leri "no further mappings"i çok erken raporlar (cross-domain info leak) ve bir maptrack entry'i double-free edebilir (DoS).

Mechanism

Note

Xen grant table'ları bir domain'in başka bir domain ile sayfa paylaşmasını sağlar; grant_ref_t capability'leri GNTTABOP_map_grant_ref / GNTTABOP_unmap_grant_ref üzerinden map/unmap edilir. Isolation invariant'ı şudur: frontend'e sayfasının "no further mappings" olduğu, ancak tüm grantee mapping'leri gerçekten yok olduğunda söylenir ve maptrack bookkeeping'i tam olarak bir kez free edilir. XSA-218, unmap içinde bir çift TOCTOU/concurrency bug'ıdır: - CVE-2017-10913 (false mapping info): bir grant iki kez map'lendiğinde ve iki unmap eşzamanlı çalıştığında, frontend'e "sayfanın no further mappings'e sahip olduğu, ikinci çağrı tamamlandığında değil de birinci çağrı tamamlandığında bildirilebilir." Frontend sayfayı private olarak yeniden kullanırken malicious bir backend "frontend'in tekrar kendisinin sandığı belleği hâlâ read ve write edebilir" — cross-domain bir info-disclosure / privilege kanalı. - CVE-2017-10914 (maptrack double-free): yarışan unmap'ler bir maptrack entry'i iki kez free eder; bu da maptrack entry'lerinin re-use edilmesine yol açar (sızan refcount'lar, DoS); info leak / host privilege escalation "cannot be ruled out".

Grant-table temelleri için bkz. Xen PV hypercalls.

Walkthrough

Public reference: Xen Security Advisory 218 ve NVD (CVE-2017-10913 / CVE-2017-10914). Kavramsal yol (temsili; advisory sınıfı belirtir):

  1. Tek bir grant reference'ı iki kez map'le.
  2. Unmap accounting / maptrack free yolunun iç içe geçmesi için vCPU'lar arasında iki eşzamanlı GNTTABOP_unmap_grant_ref operasyonu yay.
  3. Race penceresi ya erken bir "no further mappings" bildirimi (10913) ya da maptrack slot'unun bir double-free'ini (10914) üretir.

Beklenen gözlem: aynı grant ref üzerindeki eşzamanlı unmap hypercall'ları ile korele olan, hypervisor log'larında grant reference-count tutarsızlıkları ve maptrack free-list anomalileri.

Warning

Bug sınıfı için belgelenmiş, tarihsel ve patch'lenmiş bir issue. Yalnızca kavramsal.

Detection

  • Bir domain'in birden fazla vCPU'sundan aynı grant ref'i hedefleyen eşzamanlı grant-unmap hypercall'larını izle.
  • Maptrack free-list anomalilerine / reuse'una ve grant reference-count tutarsızlıklarına dikkat et.

Mitigation

  • XSA-218 patch set'ini uygula (xen-unstable ve 4.5.x–4.8.x için sürüm bazında). Advisory: "all Xen versions"; hem x86'yı (PV ve HVM) hem de ARM'ı etkiler. Qubes bunu QSB-031 ile ele aldı. Patch olmadan mitigation yok.

References