Xen AMD DBEXT debug-mask GDT breakpoint (CVE-2023-34327)¶
Debug Extensions (DBEXT) bulunan AMD/Hygon CPU'larda, yanlış işlenen debug-mask state'i bir HVM guest'in bayat debug context devralmasına (guest crash) yol açar; ilgili bir açık ise bir PV guest'in CPU'yu kilitlemek üzere canlı GDT üzerine bir breakpoint koymasına olanak tanır.
Mechanism¶
Bug sınıfı / invariant
AMD DBEXT, debug-control MSR'larını address-masking bit'leri ile genişletir. Xen, bu genişletilmiş debug state'ini vCPU context switch'leri arasında tam olarak save/restore etmiyordu, dolayısıyla bir HVM vCPU önceden zamanlanmış bir vCPU'dan yanlış debug-mask state'i devralabiliyordu (CVE-2023-34327) ve bu da guest crash'ine neden oluyordu. Eşlik eden bir sorun (CVE-2023-34328), bir PV guest'in canlı GDT üzerine bir hardware breakpoint yerleştirmesine izin verir ve daha eski XSA-156 GDT/LDT breakpoint problemiyle birleşerek CPU'yu kilitler. İhlal edilen invariant şudur: vCPU-başına debug state'i tam olarak context-switch edilmeli ve guest'ler hypervisor-kritik descriptor table'ları üzerinde breakpoint arm edememelidir.
Walkthrough¶
Yalnızca kavramsal
XSA-444'ten üst düzey yeniden kurulum.
- (34327) Bir HVM guest DBEXT-genişletilmiş debug MSR'larını programlar; bir sonraki vCPU switch'inde genişletilmiş bit'ler düzgün restore edilmez, geride guest'i fault'a uğratan bayat debug context bırakılır.
- (34328) Bir PV guest kernel'i canlı GDT'yi hedefleyen bir debug breakpoint arm eder; tekrarlayan descriptor-table erişimleri breakpoint'i CPU'yu asacak şekilde tetikler.
Detection¶
- AMD debug MSR'larını / DR register'larını olağandışı oranlarda yeniden programlayan guest'ler.
- AMD/Hygon host'larda tek bir tenant ile korele domain-başına crash'ler veya CPU lockup'ları.
- DBEXT yeteneğine sahip donanımda host watchdog/NMI lockup olayları.
Mitigation¶
- Genişletilmiş debug state'ini doğru şekilde context-switch eden ve GDT breakpoint'lerini reddeden XSA-444 patch'lerini uygula (Xen 4.16.x–4.17.x ve unstable).
- Migration uyumluluğu için DBEXT özelliğini VM'lerden gizle.
- 34328 Xen 4.14+ üzerinde iyi huyludur; 34327 ise DBEXT yeteneğine sahip (Steamroller ve sonrası) AMD/Hygon donanımda Xen 4.5+'ı etkiler.