Description
In the Linux kernel, the following vulnerability has been resolved:

riscv: futex: untag the user pointer before the atomic access

access_ok() checks untagged_addr(uaddr), but arch_futex_atomic_op_inuser()
and futex_atomic_cmpxchg_inatomic() hand the raw uaddr to the inline asm
amoswap/amoadd/.../lr.w+sc.w through the "+m" (*uaddr) operand. When the
tagged address ABI is enabled (CONFIG_RISCV_ISA_SUPM, prctl
PR_SET_TAGGED_ADDR_CTRL with PMLEN != 0), those two addresses differ: a
user pointer whose top PMLEN bits hold a tag passes access_ok() after
untagging, but the atomic is then performed on the still-tagged raw
address.

Supervisor-mode data accesses are not subject to the U-mode pointer
masking (that is governed by menvcfg.PMM, which the kernel does not set),
so hardware does not strip the tag for the kernel's own access. With
Sv57 and PMLEN=16 the tag bits overlap the canonical-address bits, so a
tagged pointer can name a canonical kernel virtual address (e.g. in the
linear map) whose untagged form is a valid user address. An unprivileged
process can thus make FUTEX_WAKE_OP perform an atomic read-modify-write on
an arbitrary kernel address, with the matching FUTEX_OP_CMP_* result
serving as a read oracle.

get_user()/put_user()/raw_copy_{to,from}_user() already untag the pointer
after the access_ok() check; do the same in the futex helpers so the
atomic operates on the address that was actually validated.
Published: 2026-10-23
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Privilege Escalation via Kernel Memory Access
Action: Apply Patch
AI Analysis

Impact

In the Linux RISC‑V kernel, this flaw relates to CWE‑822, where the kernel fails to validate the user pointer after untagging before performing atomic operations. The mismatch between the tagged address ABI and the atomic futex operations allows a userland process to perform an untagged pointer check while the kernel subsequently executes an atomic instruction on the original, still‑tagged address, creating a race that can be used to read or write arbitrary kernel memory. This flaw directly enables privilege escalation, because an attacker can manipulate kernel data structures and potentially gain full control of the system.

Affected Systems

Vulnerable systems are those running the Linux kernel on RISC‑V architectures with the tagged address ABI enabled (CONFIG_RISCV_ISA_SUPM set and the PMLEN configuration non‑zero). Any kernel build that has not yet incorporated the patch may be affected.

Risk and Exploitability

The CVSS score is 7.8, and the EPSS score is < 1%. The vulnerability is a classic kernel privilege escalation that provides a read/write oracle over kernel space, yet it is currently not listed in the CISA KEV catalog. Attackers would need to enable the tagged address ABI (CONFIG_RISCV_ISA_SUPM) and use the futex system call with an appropriate operation to exploit the glitch. Because the exploit writes to kernel memory, it is likely easy for an attacker to learn the exact kernel address to target, posing a significant risk.

Generated by OpenCVE AI on October 29, 2026 at 19:10 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the kernel to a version that contains the fix for CVE-2026-99016.
  • If a patch cannot be applied immediately, disable the tagged address ABI in the kernel configuration (CONFIG_RISCV_ISA_SUPM) or clear the PMLEN setting via prctl to prevent the mismatch.
  • Apply a systems‑wide audit to detect any use of futex system calls that might be abused and monitor for anomalous futex activity.

Generated by OpenCVE AI on October 29, 2026 at 19:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Ubuntu USN Ubuntu USN USN-9018-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-9018-2 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-9019-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-9020-1 Linux kernel vulnerabilities
History

Thu, 29 Oct 2026 15:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20
CWE-787

Thu, 29 Oct 2026 12:15:00 +0000


Sat, 24 Oct 2026 18:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20
CWE-787

Sat, 24 Oct 2026 16:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-787
CWE-788

Sat, 24 Oct 2026 14:15:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Fri, 23 Oct 2026 20:30:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Fri, 23 Oct 2026 15:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-787
CWE-788

Fri, 23 Oct 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: riscv: futex: untag the user pointer before the atomic access access_ok() checks untagged_addr(uaddr), but arch_futex_atomic_op_inuser() and futex_atomic_cmpxchg_inatomic() hand the raw uaddr to the inline asm amoswap/amoadd/.../lr.w+sc.w through the "+m" (*uaddr) operand. When the tagged address ABI is enabled (CONFIG_RISCV_ISA_SUPM, prctl PR_SET_TAGGED_ADDR_CTRL with PMLEN != 0), those two addresses differ: a user pointer whose top PMLEN bits hold a tag passes access_ok() after untagging, but the atomic is then performed on the still-tagged raw address. Supervisor-mode data accesses are not subject to the U-mode pointer masking (that is governed by menvcfg.PMM, which the kernel does not set), so hardware does not strip the tag for the kernel's own access. With Sv57 and PMLEN=16 the tag bits overlap the canonical-address bits, so a tagged pointer can name a canonical kernel virtual address (e.g. in the linear map) whose untagged form is a valid user address. An unprivileged process can thus make FUTEX_WAKE_OP perform an atomic read-modify-write on an arbitrary kernel address, with the matching FUTEX_OP_CMP_* result serving as a read oracle. get_user()/put_user()/raw_copy_{to,from}_user() already untag the pointer after the access_ok() check; do the same in the futex helpers so the atomic operates on the address that was actually validated.
Title riscv: futex: untag the user pointer before the atomic access
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-24T14:10:03.722Z

Reserved: 2026-09-25T10:25:14.386Z

Link: CVE-2026-99016

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:24.413

Modified: 2026-10-24T14:16:52.657

Link: CVE-2026-99016

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-23T00:00:00Z

Links: CVE-2026-99016 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T19:15:08Z

Weaknesses
  • CWE-822

    Untrusted Pointer Dereference