Skip to content

Xen #DB movss-shadow syscall privesc (CVE-2018-8897)

Bir PV syscall'ın privilege geçişinden sonra gelen gecikmeli bir #DB debug exception'ı, bir PV guest'in hypervisor stack/state ile code çalıştırmasına ve host privilege'ına yükselmesine izin verir.

Mechanism

Bug sınıfı / invariant

x86'da, MOV SS veya POP SS çalıştırmak, takip eden instruction retire olana kadar interrupt'ları bastıran ve pending bir #DB'yi geciktiren tek-instruction'lık bir "MOV SS shadow" set eder. Eğer o sonraki instruction supervisor context'ine bir control transfer ise, hardware seviyesindeki debug exception (örn. bir data breakpoint ile arm edilmiş) CPL/stack geçişinden önce değil sonra iletilir. Xen'in PV syscall path'i bu x86 mimari tuzağını devraldı: #DB, CPU zaten hypervisor state üzerinde çalışırken ama Xen kendi context'ini güvenle yeniden kurmadan önce alınabiliyordu ve bu guest/hypervisor sınırını kırıyordu. İhlal edilen güvenlik invariant'ı şudur: guest-kontrollü bir debug exception asla hypervisor stack veya privilege ile çalışmamalıdır.

Bu, 2018'de birçok OS kernel'ini etkileyen aynı mimari belirsizliktir; Xen'de x86 üzerindeki PV syscall/exception entry path'ine karşı tezahür eder.

Walkthrough

Yalnızca kavramsal

Aşağıdaki, public XSA-260 advisory'sinden üst düzey bir yeniden kurulumdur. Offset, gadget veya çalışan exploit verilmemiştir.

  1. 64-bit bir PV guest, seçilen bir entry point'te bir #DB ateşlenecek şekilde bir hardware debug breakpoint (DR register'ları) arm eder.
  2. Guest, debug exception'ının shadow'lanıp privilege geçişi boyunca ertelenmesi için bir syscall'dan hemen önce bir MOV SS/POP SS çalıştırır.
  3. Ertelenen #DB, processor'ın geçişi supervisor mode'da işlemeye başladığı ama Xen'in henüz tamamen kendi güvenli context'ine geçmediği bir noktada alınır.
  4. O exception'ın beklenmedik state'te yanlış işlenmesi, hypervisor'a privilege escalation'a yönlendirilebilir.

Detection

  • Hardware debug register'larını olağandışı kullanan PV guest'leri izle (sık DR7/DR0-3 yeniden programlaması) — meşru guest iş yükleri bunu nadiren yüksek oranda yapar.
  • Hypervisor crash'i/#DB ile ilgili panic logları veya PV entry path'lerinden gelen beklenmedik #DB.
  • EDR/host telemetrisi: anormal syscall entry fault'ları, tek bir tenant ile korele beklenmedik domain crash'leri.

Mitigation

  • XSA-260 patch'ini uygula (Xen 4.6–4.10 ve unstable düzeltmeler aldı); entry path, shadow'lanmış/ertelenmiş #DB'yi güvenle işleyecek şekilde düzeltildi.
  • PV guest yerine yalnızca HVM veya PVH guest çalıştır (PV tek attack surface'tir).
  • Genel defense in depth: CPU microcode ve hypervisor'ı güncel tut; untrusted tenant'ları PV mode'dan kısıtla.

References