Xen XSA-105 x86 instruction-emulation guest privilege escalation¶
Xen XSA-105 / CVE-2014-7155: HLT, LGDT, LIDT ve LMSW'nin x86 emulation'ında eksik supervisor-mode permission check'leri, unprivileged HVM guest user kodunun privileged instruction'lar çalıştırmasına olanak verir — bir guest user → guest kernel escalation'ı.
Mechanism¶
Warning
Slug alias'ı "nobody to root" bir host escape'i ima eder; ancak birincil kaynaklar (XSA-105, CVE-2014-7155) escalation'ın guest içinde (guest user → guest kernel) ve yalnızca HVM x86 guest'lerde olduğunu gösterir. İçerik bunu yansıtır.
Note
Xen'in x86 instruction emulator'ı (x86_emulate), CPU bazı instruction'ları
doğrudan çalıştıramadığında onları emulate eder (örn. MMIO'daki operand'lar,
pagetable update'lerine yakın 32-bit PAE context'leri ya da bir guest'in bir
instruction'ı invalid-opcode trap'inden sonra değiştirmesi). Bir guest içindeki
izolasyon invariant'ı, privileged instruction'ların yalnızca supervisor mode'dan
(CPL 0) çalışmasıdır. XSA-105 bir missing privilege-level check: HLT,
LGDT, LIDT ve LMSW'nin emulation'ı, vCPU'nun supervisor mode'da olup
olmadığını doğrulamadı. Dolayısıyla unprivileged (CPL > 0) HVM guest user kodu,
bu instruction'lardan birini emulate ettirebilir ve böylece privileged bir
operasyon çalıştırabilir — örn. LIDT aracılığıyla kendi IDT'sini yükleyerek —
guest user'dan guest kernel'e escalate olur.
Bu, "emulation'da permission check'i unuttu" sınıfıdır; daha geniş emulator yüzeyini VM-exit handler interception ile karşılaştır.
Walkthrough¶
Public reference: Xen Security Advisory 105 ve NVD CVE-2014-7155. Kavramsal yol (açıklayıcı; advisory sınıfı belirtir):
- HVM guest user-mode (CPL > 0) kodu olarak,
HLT/LGDT/LIDT/LMSW'den birinin emulate edilmesini sağla — örn. bir MMIO operand'ı, PAE-mode pagetable'a-bitişik path ya da belgelenen invalid-opcode-sonra-rewrite hilesi aracılığıyla. - Emulator supervisor-mode check'ini atladığı için, caller user ayrıcalığında
çalışmasına rağmen privileged operasyon yürütülür (örn.
LIDTsaldırganın seçtiği bir IDT'yi yükler). - Oradan, descriptor table'ları kontrol etmek guest-kernel ayrıcalığı sağlar.
Beklenen gözlemlenebilir: bir HVM guest içinde user-mode CPL'den kaynaklanan
HLT/LGDT/LIDT/LMSW emulation'ı ya da descriptor-table yüklemelerine bağlı
guest crash'leri.
Warning
Bug sınıfı için belgelenmiş, patch'lenmiş bir issue. Yalnızca kavramsal.
Detection¶
- Non-kernel context'ten gelen IDT/GDT base değişikliklerinin guest-içi integrity monitoring'i.
- Hypervisor tarafı: HVM guest'lerde CPL > 0'dan ulaşılan
HLT/LGDT/LIDT/LMSWemulation'ı.
Mitigation¶
- Supervisor-mode permission check'lerini ekleyen
xsa105.patch'i uygula. Etkilenen: Xen 3.2.x ve sonrası (NVD: 4.4.x ve öncesi); yalnızca HVM guest'ler, PV etkilenmez, yalnızca x86. Etki guest ile sınırlıdır (user→kernel escalation ya da guest crash), bir host escape değil.
References¶
- Xen Security Advisory 105, "Missing privilege level checks in x86 HLT, LGDT, LIDT and LMSW emulation", https://xenbits.xen.org/xsa/advisory-105.html
- NVD, CVE-2014-7155, https://nvd.nist.gov/vuln/detail/CVE-2014-7155