Vulnerability Assessment
| Impact | Signals conflict sharply between theoretical severity and real-world exposure. The CVSS 3.1 base score is 7.8 (HIGH) with C:H/I:H/A:H, which is justified: the flaw lets an unprivileged process drive FUTEX_WAKE_OP into an atomic read-modify-write on an arbitrary kernel virtual address, with the FUTEX_OP_CMP_* result acting as a read oracle - a primitive that can support local privilege escalation and kernel memory disclosure. However, the vector is AV:L/PR:L, so this is strictly a local, already-authenticated attack, not remotely reachable. The exploitability signals are all low: EPSS is 0.21% (10th percentile), there is no CISA KEV listing (not confirmed actively exploited), and no public exploit identified at time of analysis (the only references are the upstream kernel.org fix commits, not PoC code). The vuln.today Decision label is 'this_week', consistent with a serious-but-not-emergency local kernel bug. The decisive caveat is that exploitation is gated behind a narrow platform profile - RISC-V only, with CONFIG_RISCV_ISA_SUPM, hardware pointer masking, Sv57 paging and PMLEN=16 so tag bits overlap canonical kernel-address bits. This is a genuine kernel-memory-corruption primitive worth patching on the prescribed timeline, but the low EPSS and the RISC-V-specific, non-default configuration mean this is far from a widespread-exploitation priority; treat it as scheduled hardening for affected RISC-V fleets rather than an emergency. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 24, 2026
The RISC-V futex implementation in the Linux kernel fails to strip address tags from user-supplied pointers before executing atomic operations, allowing a local unprivileged process to make FUTEX_WAKE_OP write to an arbitrary kernel address. Affected systems must run RISC-V with CONFIG_RISCV_ISA_SUPM, have the tagged-address ABI enabled via PR_SET_TAGGED_ADDR_CTRL with a non-zero PMLEN, and use Sv57 paging with PMLEN=16 so that tag bits overlap canonical kernel address bits - on such configurations the flaw yields both kernel memory corruption and, through the FUTEX_OP_CMP_* result, a read oracle that discloses kernel memory. The vendor has published fixes in Linux 6.18.57, 7.2.11 and 7.3 (commits 8e48d8d51ab37b7decfbff3e2844e027a52ad6ea, 405290be962b32eec842776fbe3bdf81f15b1676 and 2e5c80bbc062a8dda33e687ebf7be8f074ee4f7d); no public exploit has been identified at time of analysis and EPSS is low at 0.21% (10th percentile), reflecting the narrow hardware/configuration prerequisites rather than the severity of the outcome.
RemediationAI
Vendor-released patch: Linux 6.18.57, 7.2.11 and 7.3, delivered by upstream commits 8e48d8d51ab37b7decfbff3e2844e027a52ad6ea, 405290be962b32eec842776fbe3bdf81f15b1676 and 2e5c80bbc062a8dda33e687ebf7be8f074ee4f7d; apply the corresponding stable or distribution backport for any kernel derived from the 2e1743085887ba3f553c2bb472a75a3ff744b242 baseline. Patch status should be confirmed with Oracle or Canonical for their RISC-V kernel builds, since the CPE data covers the Linux kernel generically. Where an immediate update is not possible, the exposed configuration itself is the lever: RISC-V systems that do not need the tagged-address ABI can avoid the vulnerable path by not having processes call prctl(PR_SET_TAGGED_ADDR_CTRL) with a non-zero PMLEN, and configurations that do not rely on Sv57 with PMLEN=16 do not exhibit the tag/canonical-address overlap - both reduce exposure but do not repair the missing untag step and depend on no other code path enabling the ABI. The upstream fix is the only complete resolution; the vulnerability requires local code execution as an unprivileged user, so restricting interactive and service-level shell access to trusted workloads limits reachability. Review the kernel.org commit links and the NVD record at https://nvd.nist.gov/vuln/detail/CVE-2026-99016 for the authoritative patch set.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The bug sits in the RISC-V architecture glue for futex operations: arch_futex_atomic_op_inuser() and futex_atomic_cmpxchg_inatomic() feed the raw uaddr into inline assembly amoswap/amoadd/lr.w+sc.w through the "+m" (*uaddr) memory operand. The generic access_ok() check, by contrast, validates untagged_addr(uaddr), so a pointer whose top PMLEN bits carry a tag can pass validation while the atomic still targets the tagged address. Supervisor-mode data accesses are not subject to U-mode pointer masking (that behaviour is controlled by menvcfg.PMM, which the kernel does not set), so the hardware does not strip the tag on the kernel's behalf. Under Sv57 with PMLEN=16 the tag bits overlap the canonical-address bits, meaning a tagged pointer can designate a canonical kernel virtual address in the linear map whose untagged form is still a valid user address - turning a validated user address into an unchecked kernel target. The referenced fix mirrors what get_user()/put_user()/raw_copy_{to,from}_user() already do: untag the pointer after access_ok() so the atomic operates on exactly the address that was validated. The trigger requires the tagged-address ABI to be enabled by the process itself and the specific Sv57/PMLEN=16 geometry; the CWE class is not provided in the source data.
Know when Canonical gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Primary rating from Vendor (Linux) · only source for this CVE.
CVSS VectorVendor: Linux
Lifecycle Timeline
4DescriptionCVE.org
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.
Executive ViewAI
A high-severity kernel vulnerability (CVE-2026-99016) affects Linux systems running on RISC-V hardware with specific optional memory-tagging features enabled (CONFIG_RISCV_ISA_SUPM and non-zero PMLEN). If exploited by a local attacker, it could allow privilege escalation and kernel memory disclosure, compromising system integrity and confidentiality. However, the configuration requirements are narrow, and no public exploit exists, so immediate risk to the organization is limited to those specific deployments.
Apply vendor patch. Additionally, if patching is delayed, disable the tagged-address ABI (PR_SET_TAGGED_ADDR_CTRL) for untrusted processes or restrict local access to vulnerable systems.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
The (1) EPHEMERAL, (2) HTTPS, (3) MVG, (4) MSL, (5) TEXT, (6) SHOW, (7) WIN, and (8) PLT coders in ImageMagick before 6.
When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT
Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8
GNU Bash through 4.3 bash43-025 processes trailing strings after certain malformed function definitions in the values of
The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe
Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by lev
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 17 and earlier, and
Local privilege escalation in the GNU C Library (glibc) dynamic loader ld.so allows unprivileged local users on affected
EUVD-2026-108810
GHSA-5mv4-wx47-m6wh
NVD
CVE.org
EPSS
Exploit-DB