Skip to content

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.

  1. (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.
  2. (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.

References