Read the docs
TI-2026-18442 Aliases CVE-2026-23005GHSA-326g-5c6q-7782

x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1

Priority LOW 24CWE-20Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
—
Confidentiality · integrity · availability
None · None · High
Fix status
Partial Red Hat: 4 without a fix

Attack profile from CVSS 3.1 · NVD. Fix status from CNA and Red Hat.

Summary

In the Linux kernel, the following vulnerability has been resolved: x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1 When loading guest XSAVE state via KVM_SET_XSAVE, and when updating XFD in response to a guest WRMSR, clear XFD-disabled features in the saved (or to be restored) XSTATE_BV to ensure KVM doesn't attempt to load state for features that are disabled via the guest's XFD. Because the kernel executes XRSTOR with the guest's XFD, saving XSTATE_BV[i]=1 with XFD[i]=1 will cause XRSTOR to #NM and panic the kernel. E.g. if fpu_update_guest_xfd() sets XFD without clearing XSTATE_BV: ------------[ 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 ]--- This can happen if the guest executes WRMSR(MSR_IA32_XFD) to set XFD[18] = 1, and a host IRQ triggers kernel_fpu_begin() prior to the vmexit handler's call to fpu_update_guest_xfd(). and if userspace stuffs XSTATE_BV[i]=1 via KVM_SET_XSAVE: ------------[ 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 ]--- The new behavior is consistent with the AMX architecture. Per Intel's SDM, XSAVE saves XSTATE_BV as '0' for components that are disabled via XFD (and non-compacted XSAVE saves the initial configuration of the state component): If XSAVE, XSAVEC, XSAVEOPT, or XSAVES is saving the state component i, the instruction does not generate #NM when XCR0[i] = IA32_XFD[i] = 1; instead, it operates as if XINUSE[i] = 0 (and the state component was in its initial state): it saves bit i of XSTATE_BV field of the XSAVE header as 0; in addition, XSAVE saves the initial configuration of the state component (the other instructions do not save state component i). Alternatively, KVM could always do XRSTOR with XFD=0, e.g. by using a constant XFD based on the set of enabled features when XSAVEing for a struct fpu_guest. However, having XSTATE_BV[i]=1 for XFD-disabled features can only happen in the above interrupt case, or in similar scenarios involving preemption on preemptible kernels, because fpu_swap_kvm_fpstate()'s call to save_fpregs_to_fpstate() saves the outgoing FPU state with the current XFD; and that is (on all but the first WRMSR to XFD) the guest XFD. Therefore, XFD can only go out of sync with XSTATE_BV in the above interrupt case, or in similar scenarios involving preemption on preemptible kernels, and it we can consider it (de facto) part of KVM ABI that KVM_GET_XSAVE returns XSTATE_BV[i]=0 for XFD-disabled features. [Move clea ---truncated---

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00218 12th percentileScored 2026-11-07
Fix Partial Linux (Linux): 6.1.162, 6.6.122, 6.12.67 +2Red Hat: 4 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux5.17 and later6.1.162, 6.6.122, 6.12.67, 6.18.7, 6.19Patch availableCNA
  • Linux VendorLinux Affected 5.17 and later Fixed in 6.1.162, 6.6.122, 6.12.67, 6.18.7, 6.19 Patch available CNA

CPE configurations NVD · 10

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*5.17.1 to before 6.1.162; 6.2 to before 6.6.122; 6.7 to before 6.12.67; 6.13 to before 6.18.7VulnerableLinux
cpe:2.3:o:linux:linux_kernel:5.17:-:*:*:*:*:*:*5.17VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:*6.19 rc1VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:*6.19 rc2VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:*6.19 rc3VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:*6.19 rc4VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc5:*:*:*:*:*:*6.19 rc5VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc6:*:*:*:*:*:*6.19 rc6VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc7:*:*:*:*:*:*6.19 rc7VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.19:rc8:*:*:*:*:*:*6.19 rc8VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 5.17.1 to before 6.1.162; 6.2 to before 6.6.122; 6.7 to before 6.12.67; 6.13 to before 6.18.7 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:5.17:-:*:*:*:*:*:* Versions 5.17 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:* Versions 6.19 rc1 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:* Versions 6.19 rc2 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:* Versions 6.19 rc3 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:* Versions 6.19 rc4 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc5:*:*:*:*:*:* Versions 6.19 rc5 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc6:*:*:*:*:*:* Versions 6.19 rc6 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc7:*:*:*:*:*:* Versions 6.19 rc7 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.19:rc8:*:*:*:*:*:* Versions 6.19 rc8 Vulnerable ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 6.1.162, 6.6.122, 6.12.67, 6.18.7, 6.19

Vendor assessments

Red Hat

Red Hat rating: Low. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 10AffectedNo fix yet
Red Hat Enterprise Linux 6AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 8AffectedNo fix yet
Red Hat Enterprise Linux 9AffectedNo fix yet
Not affected: 1 product
  • Red Hat Enterprise Linux 7

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-23005
  2. 2026-10-03 Alias added: GHSA-326g-5c6q-7782
  3. 2026-10-19 Weakness changed · CISA ADP

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
  • TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
See all 15278 →

Sources