CVE-2026-23005
x86/fpu: XSTATE_BV[i] im Gast-XSAVE-Zustand löschen, wenn XFD[i]=1
- Veröffentlicht
- 25.01.2026
- Aktualisiert
- 08.09.2026
- CNA zuweisen
- Linux
- Beweise beobachtet
- 06.08.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:HNiedrig · nächste 30 Tage
- Perzentil
- 11,1 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Im Linux-Kernel wurde die folgende Schwachstelle behoben: x86/fpu: XSTATE_BV[i] im Gast-XSAVE-Zustand löschen, wenn XFD[i]=1 Beim Laden des Gast-XSAVE-Zustands über KVM_SET_XSAVE und beim Aktualisieren von XFD als Reaktion auf ein Gast-WRMSR die über XFD deaktivierten Features im gespeicherten (oder wiederherzustellenden) XSTATE_BV löschen, um sicherzustellen, dass KVM nicht versucht, Zustand für Features zu laden, die über das Gast-XFD deaktiviert sind. Da der Kernel XRSTOR mit dem Gast-XFD ausführt, führt das Speichern von XSTATE_BV[i]=1 mit XFD[i]=1 dazu, dass XRSTOR ein #NM auslöst und den Kernel zum Absturz bringt. Z. B. wenn fpu_update_guest_xfd() XFD setzt, ohne XSTATE_BV zu löschen: ------------[ cut here ]------------ WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#29: amx_test/848 Modules linked in: kvm_intel kvm irqbypass CPU: 29 UID: 1000 PID: 848 Comm: amx_test Not tainted 6.19.0-rc2-ffa07f7fd437-x86_amx_nm_xfd_non_init-vm #171 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:exc_device_not_available+0x101/0x110 Call Trace: <TASK> asm_exc_device_not_available+0x1a/0x20 RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90 switch_fpu_return+0x4a/0xb0 kvm_arch_vcpu_ioctl_run+0x1245/0x1e40 [kvm] kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm] __x64_sys_ioctl+0x8f/0xd0 do_syscall_64+0x62/0x940 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ---[ end trace 0000000000000000 ]--- Dies kann passieren, wenn der Gast WRMSR(MSR_IA32_XFD) ausführt, um XFD[18] = 1 zu setzen, und ein Host-IRQ kernel_fpu_begin() auslöst, bevor der vmexit-Handler fpu_update_guest_xfd() aufruft. und wenn Userspace XSTATE_BV[i]=1 über KVM_SET_XSAVE einfügt: ------------[ cut here ]------------ WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#14: amx_test/867 Modules linked in: kvm_intel kvm irqbypass CPU: 14 UID: 1000 PID: 867 Comm: amx_test Not tainted 6.19.0-rc2-2dace9faccd6-x86_amx_nm_xfd_non_init-vm #168 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:exc_device_not_available+0x101/0x110 Call Trace: <TASK> asm_exc_device_not_available+0x1a/0x20 RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90 fpu_swap_kvm_fpstate+0x6b/0x120 kvm_load_guest_fpu+0x30/0x80 [kvm] kvm_arch_vcpu_ioctl_run+0x85/0x1e40 [kvm] kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm] __x64_sys_ioctl+0x8f/0xd0 do_syscall_64+0x62/0x940 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ---[ end trace 0000000000000000 ]--- Das neue Verhalten ist konsistent mit der AMX-Architektur. Laut Intels SDM speichert XSAVE XSTATE_BV als '0' für Komponenten, die über XFD deaktiviert sind (und nicht-kompaktiertes XSAVE speichert die anfängliche Konfiguration der Zustandskomponente): Wenn XSAVE, XSAVEC, XSAVEOPT oder XSAVES die Zustandskomponente i speichert, erzeugt die Anweisung kein #NM, wenn XCR0[i] = IA32_XFD[i] = 1; stattdessen operiert sie, als ob XINUSE[i] = 0 (und die Zustandskomponente in ihrem anfänglichen Zustand wäre): sie speichert Bit i des XSTATE_BV-Felds des XSAVE-Headers als 0; zusätzlich speichert XSAVE die anfängliche Konfiguration der Zustandskomponente (die anderen Anweisungen speichern Zustandskomponente i nicht). Alternativ könnte KVM immer XRSTOR mit XFD=0 ausführen, z. B. durch Verwendung eines konstanten XFD basierend auf der Menge der aktivierten Features beim XSAVEing für ein struct fpu_guest. Allerdings kann XSTATE_BV[i]=1 für XFD-deaktivierte Features nur im obigen Interrupt-Fall auftreten oder in ähnlichen Szenarien mit Präemption auf präemptiblen Kerneln, da der Aufruf von save_fpregs_to_fpstate() in fpu_swap_kvm_fpstate() den ausgehenden FPU-Zustand mit dem aktuellen XFD speichert; und das ist (bei allen außer dem ersten WRMSR zu XFD) das Gast-XFD. Daher kann XFD nur im obigen Interrupt-Fall oder in ähnlichen Szenarien mit Präemption auf präemptiblen Kerneln aus dem Gleichgewicht mit XSTATE_BV geraten, und wir können es (de facto) als Teil des KVM-ABI betrachten, dass KVM_GET_XSAVE XSTATE_BV[i]=0 für XFD-deaktivierte Features zurückgibt. [Move clea ---abgeschnitten---
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.