Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-99016

Опубликовано: 23 окт. 2026
Источник: redhat
CVSS3: 7.8
EPSS Низкий

Описание

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.

A flaw was found in the Linux kernel's RISC-V architecture implementation. When the tagged address Application Binary Interface (ABI) is enabled, the kernel's fast user-space locking mechanism (futex) verifies an address after stripping its tag, but executes atomic memory operations using the original, tagged address. A local unprivileged attacker could exploit this flaw to perform unauthorized read and write operations on arbitrary kernel memory. This vulnerability can lead to local privilege escalation or complete system compromise.

Отчет

Red Hat has assessed this issue as having an Important security impact because a local unprivileged user could obtain arbitrary kernel read and write primitives, leading to complete privilege escalation. However, this flaw is restricted to the RISC-V architecture when the tagged address ABI feature is configured. Supported Red Hat Enterprise Linux versions and enterprise product kernels do not incorporate this affected RISC-V implementation, and are therefore not vulnerable.

Меры по смягчению последствий

--- CME Mitigation Guidance (2026-11-02) --- Disclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure. The highest-value action is to ensure user pointers are untagged with untagged_addr() before passing them to inline atomic assembly instructions in RISC-V futex helpers: upgrade to Linux kernel 6.18.57, 7.2.11, 7.3, which untag the user pointer with untagged_addr() in arch_futex_atomic_op_inuser() and futex_atomic_cmpxchg_inatomic() before executing inline atomic instructions, closing all 2 injection vectors (crafted tagged pointer in FUTEX_WAKE_OP system call, crafted tagged pointer in futex atomic compare-and-exchange operation). Until patched, this is only a concern on Linux running on RISC-V architecture with Sv57 paging and CONFIG_RISCV_ISA_SUPM — Non-RISC-V architectures and deployments without tagged address ABI enabled are unaffected — so Restrict unprivileged user execution and prevent untrusted processes from enabling tagged address ABI via prctl PR_SET_TAGGED_ADDR_CTRL on affected RISC-V systems. As a compensating measure, Enable SELinux in enforcing mode to bound process actions even if kernel privilege escalation is attempted, Map local users to confined SELinux domains to restrict unauthorized operations if privilege escalation succeeds, and Enable runtime memory error detection such as KASAN or HWASan to detect unauthorized and out-of-bounds kernel memory accesses. These controls limit blast radius and contain exploitation, but they do not fix the underlying improper pointer untagging defect — apply the upstream patch to fully remediate. Highest-impact CME: CME-301 SELinux (Enforcing Mode) (medium)

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat Enterprise Linux 10kernelNot affected
Red Hat Enterprise Linux 6kernelNot affected
Red Hat Enterprise Linux 7kernelNot affected
Red Hat Enterprise Linux 7kernel-rtNot affected
Red Hat Enterprise Linux 8kernelNot affected
Red Hat Enterprise Linux 8kernel-rtNot affected
Red Hat Enterprise Linux 9kernelNot affected
Red Hat Enterprise Linux 9kernel-rtNot affected
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-8Not affected
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-9Not affected

Показывать по

Дополнительная информация

Статус:

Important
Дефект:
CWE-822
https://bugzilla.redhat.com/show_bug.cgi?id=2559753kernel: riscv: futex: untag the user pointer before the atomic access

EPSS

Процентиль: 7%
0.00173
Низкий

7.8 High

CVSS3

Связанные уязвимости

CVSS3: 7.8
ubuntu
17 дней назад

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...

CVSS3: 7.8
nvd
17 дней назад

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

CVSS3: 7.8
debian
17 дней назад

In the Linux kernel, the following vulnerability has been resolved: r ...

CVSS3: 7.8
github
17 дней назад

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 ...

EPSS

Процентиль: 7%
0.00173
Низкий

7.8 High

CVSS3