Xen #DB movss-shadow syscall privesc (CVE-2018-8897)¶
Bir PV
syscall'ın privilege geçişinden sonra gelen gecikmeli bir#DBdebug 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.
- 64-bit bir PV guest, seçilen bir entry point'te bir
#DBateşlenecek şekilde bir hardware debug breakpoint (DR register'ları) arm eder. - Guest, debug exception'ının shadow'lanıp privilege geçişi boyunca ertelenmesi
için bir
syscall'dan hemen önce birMOV SS/POP SSçalıştırır. - 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. - 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/
#DBile ilgili panic logları veya PV entry path'lerinden gelen beklenmedik#DB. - EDR/host telemetrisi: anormal
syscallentry 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.