In the Linux kernel, the following vulnerability has been resolved:
x86/fpu: Ensure shadow stack is active before "getting" registers
The x86 shadow stack support has its own set of registers. Those registers are XSAVE-managed, but they are "supervisor state components" which means that userspace can not touch them with XSAVE/XRSTOR. It also means that they are not accessible from the existing ptrace ABI for XSAVE state. Thus, there is a new ptrace get/set interface for it.
The regset code that ptrace uses provides an ->active() handler in addition to the get/set ones. For shadow stack this ->active() handler verifies that shadow stack is enabled via the ARCH_SHSTK_SHSTK bit in the thread struct. The ->active() handler is checked from some call sites of the regset get/set handlers, but not the ptrace ones. This was not understood when shadow stack support was put in place.
As a result, both the set/get handlers can be called with XFEATURE_CET_USER in its init state, which would cause get_xsave_addr() to return NULL and trigger a WARN_ON(). The ssp_set() handler luckily has an ssp_active() check to avoid surprising the kernel with shadow stack behavior when the kernel is not ready for it (ARCH_SHSTK_SHSTK==0). That check just happened to avoid the warning.
But the ->get() side wasn't so lucky. It can be called with shadow stacks disabled, triggering the warning in practice, as reported by Christina Schimpe:
WARNING: CPU: 5 PID: 1773 at arch/x86/kernel/fpu/regset.c:198 ssp_get+0x89/0xa0 [...] Call Trace: <TASK> ? show_regs+0x6e/0x80 ? ssp_get+0x89/0xa0 ? __warn+0x91/0x150 ? ssp_get+0x89/0xa0 ? report_bug+0x19d/0x1b0 ? handle_bug+0x46/0x80 ? exc_invalid_op+0x1d/0x80 ? asm_exc_invalid_op+0x1f/0x30 ? __pfx_ssp_get+0x10/0x10 ? ssp_get+0x89/0xa0 ? ssp_get+0x52/0xa0 __regset_get+0xad/0xf0 copy_regset_to_user+0x52/0xc0 ptrace_regset+0x119/0x140 ptrace_request+0x13c/0x850 ? wait_task_inactive+0x142/0x1d0 ? do_syscall_64+0x6d/0x90 arch_ptrace+0x102/0x300 [...]
Ensure that shadow stacks are active in a thread before looking them up in the XSAVE buffer. Since ARCH_SHSTK_SHSTK and user_ssp[SHSTK_EN] are set at the same time, the active check ensures that there will be something to find in the XSAVE buffer.
[ dhansen: changelog/subject tweaks ]
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jan 19, 2025 |
| Suse | — | Upgrade kernel-rtUpgrade reiserfs-kmp-azureUpgrade dtb-nvidiaUpgrade gfs2-kmp-azureUpgrade kernel-defaultUpgrade kernel-rt-optionalUpgrade dtb-broadcomUpgrade kernel-docs-htmlUpgrade kernel-docsUpgrade kernel-azureUpgrade dtb-qcomUpgrade dtb-rockchipUpgrade kernel-rt-livepatch-develUpgrade kernel-obs-buildUpgrade kernel-64kb-extraUpgrade reiserfs-kmp-64kbUpgrade kernel-source-rtUpgrade dtb-alteraUpgrade gfs2-kmp-defaultUpgrade kselftests-kmp-azureUpgrade kernel-debug-vdsoUpgrade kernel-source-vanillaUpgrade kernel-rt_debugUpgrade kernel-rt_debug-develUpgrade kernel-syms-azureUpgrade kernel-syms-rtUpgrade kernel-rt-extraUpgrade kselftests-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade dlm-kmp-rtUpgrade kernel-azure-vdsoUpgrade kernel-default-base-rebuildUpgrade dtb-sprdUpgrade kernel-rt_debug-vdsoUpgrade kernel-azure-optionalUpgrade kernel-default-livepatchUpgrade kernel-kvmsmall-vdsoUpgrade dtb-marvellUpgrade kernel-rt-vdsoUpgrade kernel-azure-develUpgrade cluster-md-kmp-64kbUpgrade dtb-caviumUpgrade dtb-lgUpgrade dlm-kmp-azureUpgrade cluster-md-kmp-rtUpgrade ocfs2-kmp-azureUpgrade dtb-mediatekUpgrade kselftests-kmp-defaultUpgrade kernel-debug-develUpgrade kernel-64kb-develUpgrade dtb-amlogicUpgrade kernel-zfcpdumpUpgrade kernel-kvmsmall-develUpgrade kernel-develUpgrade kernel-default-extraUpgrade kernel-devel-azureUpgrade kernel-default-livepatch-develUpgrade kernel-source-azureUpgrade kernel-sourceUpgrade kernel-rt-develUpgrade kernel-64kbUpgrade dtb-amdUpgrade cluster-md-kmp-defaultUpgrade kernel-kvmsmallUpgrade ocfs2-kmp-rtUpgrade kernel-devel-rtUpgrade kernel-default-vdsoUpgrade gfs2-kmp-64kbUpgrade dtb-freescaleUpgrade dtb-appleUpgrade kernel-azure-extraUpgrade gfs2-kmp-rtUpgrade dtb-allwinnerUpgrade dtb-armUpgrade kernel-default-optionalUpgrade dtb-amazonUpgrade kernel-macrosUpgrade dlm-kmp-64kbUpgrade reiserfs-kmp-rtUpgrade ocfs2-kmp-defaultUpgrade kernel-default-develUpgrade dtb-xilinxUpgrade dtb-socionextUpgrade dlm-kmp-defaultUpgrade kernel-obs-qaUpgrade kselftests-kmp-64kbUpgrade kernel-default-baseUpgrade kernel-debugUpgrade kernel-64kb-optionalUpgrade dtb-renesasUpgrade dtb-hisiliconUpgrade dtb-exynosUpgrade dtb-apmUpgrade cluster-md-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade kernel-syms | Feb 12, 2025 | Jan 19, 2025 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1029-awsUpgrade linux-image-6.8.0-1030-gcp-64kUpgrade linux-image-6.11.0-1012-azure-fdeUpgrade linux-image-6.11.0-1011-lowlatency-64kUpgrade linux-image-6.11.0-21-genericUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.11.0-1011-gcp-64kUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-oem-22.04aUpgrade linux-image-6.8.0-1029-azure-fdeUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1026-oracle-64kUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-nvidiaUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-6.8.0-2023-raspi-realtimeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1026-ibmUpgrade linux-image-6.8.0-1028-oemUpgrade linux-image-6.8.0-1028-nvidia-lowlatency-64kUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.11.0-1011-lowlatencyUpgrade linux-image-gkeopUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-gcp-64kUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-6.8.0-1025-gkeUpgrade linux-image-6.8.0-1028-raspiUpgrade linux-image-oem-22.04dUpgrade linux-image-6.8.0-1028-nvidiaUpgrade linux-image-6.11.0-1011-awsUpgrade linux-image-oracleUpgrade linux-image-6.11.0-1011-gcpUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.11.0-1017-oemUpgrade linux-image-gkeop-6.8Upgrade linux-image-raspiUpgrade linux-image-generic-lpaeUpgrade linux-image-lowlatencyUpgrade linux-image-awsUpgrade linux-image-oem-24.04bUpgrade linux-image-genericUpgrade linux-image-6.11.0-1007-realtimeUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-azure-lts-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.11.0-1010-raspiUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-ibmUpgrade linux-image-azure-nvidiaUpgrade linux-image-oem-24.04aUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-realtimeUpgrade linux-image-6.8.0-60-generic-64kUpgrade linux-image-6.8.0-60-lowlatencyUpgrade linux-image-6.11.0-1013-oracle-64kUpgrade linux-image-virtualUpgrade linux-image-gkeUpgrade linux-image-6.11.0-21-generic-64kUpgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-1029-azureUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-1016-azure-nvidiaUpgrade linux-image-oem-22.04bUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-kvmUpgrade linux-image-6.11.0-1012-azureUpgrade linux-image-oem-24.04Upgrade linux-image-generic-64kUpgrade linux-image-6.8.0-60-genericUpgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-60-lowlatency-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gcpUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1026-oracleUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-6.8.1-1022-realtimeUpgrade linux-image-6.8.0-1028-nvidia-64kUpgrade linux-image-6.8.0-1030-gcpUpgrade linux-image-6.11.0-1013-oracleUpgrade linux-image-6.8.0-1028-nvidia-lowlatencyUpgrade linux-image-azureUpgrade linux-image-6.8.0-1012-gkeopUpgrade linux-image-ibm-classic | Mar 28, 2025 | Jan 19, 2025 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub