CVE-2026-46063
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
May 27, 2026
CISA due date
—
Cloudanix analysis
A local user on some Linux systems may be able to freeze the machine, causing downtime until it is recovered or rebooted.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This is a local Linux kernel availability flaw in the x86 user shadow stack signal-return path. During sigreturn, the kernel reads a shadow-stack signal frame while holding the mmap read lock and validating the associated VMA. If that user-space read faults, the page-fault handler can attempt to take the same mmap read lock recursively while another CPU is waiting for the mmap write lock, creating a deadlock. A local authenticated user can trigger the vulnerable code path and cause affected systems to hang or become unavailable. The issue does not directly provide confidentiality or integrity impact and is not a remote code execution vulnerability.
Why it matters to the business
Successful exploitation can cause service interruption or host instability on affected Linux systems, especially multi-user systems, shared compute platforms, developer workstations, container hosts, and servers running workloads that allow untrusted local code execution. Because the impact is denial of service rather than data theft, the business risk is primarily downtime, failed jobs, disrupted service delivery, and operational recovery effort. The vulnerability is not currently in CISA KEV, is not known to be used in ransomware campaigns, has very low EPSS, and has no known public exploit maturity, so urgency is moderate unless affected systems run untrusted local workloads or are high-availability Linux platforms.
How an attack unfolds
An attacker must already be able to execute code locally as an unprivileged user on an affected x86 Linux system with user shadow stack support enabled. The attacker crafts a program that exercises signal delivery and sigreturn while manipulating memory mappings or page-fault conditions around the shadow stack signal frame. When the kernel attempts to read the shadow-stack signal frame while holding the mmap read lock, the access can fault. Under the right timing, with another thread or CPU waiting on the mmap write lock, the recursive read-lock acquisition path can deadlock. Once triggered, kernel progress for affected tasks or the host can stall, resulting in a denial of service that may require administrative intervention or reboot. There are no public indicators that named threat actors are exploiting this issue at this time.
How to fix it
Upgrade to a Linux kernel version that includes the upstream fix for the x86 shadow stack sigreturn mmap locking issue. If vendor kernels are used, apply the relevant distribution security update rather than relying only on upstream version numbers, because enterprise distributions frequently backport fixes. No exact fixed package versions were provided in the input, so consult the Linux distribution or appliance vendor advisory for the corrected kernel build. As a temporary risk reduction measure, restrict local shell access, prevent execution of untrusted code, limit multi-tenant workload exposure, and consider disabling x86 user shadow stack support only if vendor guidance confirms it is safe and operationally acceptable. General mitigations such as network filtering do not address the core issue because exploitation is local.
How to confirm the fix worked
Confirm exposure by checking whether systems run an affected Linux kernel build with x86 user shadow stack support enabled or compiled in. Validate remediation by verifying that the installed kernel package includes the vendor fix and that the host has been rebooted into the updated kernel, not merely had the package installed. On Linux, compare `uname -a` and package-manager kernel inventory against the vendor advisory. Review kernel configuration for `CONFIG_X86_USER_SHADOW_STACK` and related `CONFIG_PER_VMA_LOCK` settings where available. After patching, run regression or stability testing for signal-heavy local workloads and confirm no recurring hung-task, mmap-lock, or shadow-stack related kernel warnings appear in logs.
Typical attack path
- Gain local code execution on an affected x86 Linux host as a low-privileged user.
- Run a purpose-built program that uses signals, sigreturn, shadow stack behavior, and memory mapping changes to reach the vulnerable kernel path.
- Induce a page fault while the kernel is validating or reading the shadow-stack signal frame.
- Create or race concurrent mmap write-lock contention from another thread or CPU.
- Trigger the mmap lock deadlock condition.
- Cause affected processes or the host to hang, leading to denial of service.
How to detect it
Detection is focused on signs of prior denial-of-service attempts or kernel deadlock rather than definitive compromise, because the flaw does not leave a reliable file, network, or credential artifact. Review kernel logs from `journalctl -k`, `/var/log/kern.log`, `/var/log/messages`, `/var/log/syslog`, crash dumps, pstore records, and monitoring alerts for hung tasks, soft lockups, RCU stalls, mmap lock contention, page-fault traces, and stack traces involving x86 shadow stack or signal-return functions. Correlate these events with local user activity, recent execution of unusual binaries, CI jobs, container workloads, or repeated signal/memory-mapping stress patterns. If a host became unresponsive and required reboot, preserve logs from before the reboot and inspect crash dumps where kdump, pstore, or vendor support tooling is enabled. Absence of these artifacts does not prove non-exploitation, because a hard deadlock can prevent logs from being flushed.
- BUG: soft lockup
- INFO: task
- blocked for more than
- hung_task_timeout_secs
- rcu_sched detected stalls
- rcu_preempt detected stalls
- mmap_read_lock
- mmap_write_lock
- mmap_lock
- X86_USER_SHADOW_STACK
- shadow stack
- shstk
- sigreturn
- restore_sigcontext
- __x64_sys_rt_sigreturn
- do_user_addr_fault
- handle_mm_fault
- /var/log/kern.log
- /var/log/messages
- /var/log/syslog
- journalctl -k
What your security team should do
- Prioritize patching Linux systems that allow local users, CI/CD jobs, build workloads, research workloads, containers with weak isolation, or other untrusted code execution.
- Apply vendor-provided kernel updates and reboot into the fixed kernel; track systems that have installed but not booted the patched kernel.
- Inventory x86 Linux systems for user shadow stack support and affected kernel builds.
- Reduce local attack surface by limiting interactive accounts, untrusted workload execution, and unnecessary local code execution paths until patched.
- Monitor kernel logs for hung tasks, soft lockups, mmap lock contention, and shadow-stack or sigreturn related traces that could indicate attempted exploitation or instability.
- Because this is not known to be exploited in the wild and has low EPSS, prioritize based on local-code-execution exposure and availability requirements rather than internet exposure alone.
The record
In the Linux kernel, the following vulnerability has been resolved: x86/shstk: Prevent deadlock during shstk sigreturn During sigreturn the shadow stack signal frame is popped. The kernel does this by reading the shadow stack using normal read accesses. When it can't assume the memory is shadow stack, it takes extra steps to makes sure it is reading actual shadow stack memory and not other normal readable memory. It does this by holding the mmap read lock while doing the access and checking the flags of the VMA. Unfortunately that is not safe. If the read of the shadow stack sigframe hits a page fault, the fault handler will try to recursively grab another mmap read lock. This normally works ok, but if a writer on another CPU is also waiting, the second read lock could fail and cause a deadlock. Fix this by not holding mmap lock during the read access to userspace. Instead use mmap_lock_speculate_...() to watch for changes between dropping mmap lock and the userspace access. Retry if anything grabbed an mmap write lock in between and could have changed the VMA. These mmap_lock_speculate_...() helpers use mm::mm_lock_seq, which is only available when PER_VMA_LOCK is configured. So make X86_USER_SHADOW_STACK depend on it. On x86, PER_VMA_LOCK is a default configuration for SMP kernels. So drop support for the other configs under the assumption that the !SMP shadow stack user base does not exist. Currently there is a check that skips the lookup work when the SSP can be assumed to be on a shadow stack. While reorganizing the function, remove the optimization to make the tricky code flows more common, such that issues like this cannot escape detection for so long.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Tumbleweed | kernel-source | 0 | 7.0.11-1.1 |
Related vulnerabilities
- CVE-2026-53354 In the Linux kernel, the following vulnerability has been resolved: arm64: errata… Also affects kernel-source
- CVE-2026-53325 In the Linux kernel, the following vulnerability has been resolved: agp/amd64: Fix broken… Also affects kernel-source
- CVE-2026-52946 In the Linux kernel, the following vulnerability has been resolved: fs/fcntl: fix… Also affects kernel-source
- CVE-2026-52907 In the Linux kernel, the following vulnerability has been resolved: media: rockchip… Also affects kernel-source
- CVE-2026-52906 In the Linux kernel, the following vulnerability has been resolved: 9p: fix access mode… Also affects kernel-source
- CVE-2026-52905 In the Linux kernel, the following vulnerability has been resolved: mm/damon/core… Also affects kernel-source
- CVE-2026-52904 In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: fix… Also affects kernel-source
- CVE-2026-46332 In the Linux kernel, the following vulnerability has been resolved: greybus… Also affects kernel-source