data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-89489 in the interactive tracker

CVE-2026-89489

openrisc: fix arbitrary kernel memory access via or1k_atomic syscall

7.8 EPSS 0.1% AV:L

Published 2026-09-11 (37 days ago) by the Linux kernel CNA. Subsystem arch/openrisc. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-89489 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4841-1 · 2026-10-17 · text6.1.190-1Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

sys_or1k_atomic() (syscall 244 in the "or1k" ABI) takes two user pointers, v1 and v2, and swaps the words they point to in hand-written assembly. l.lwz r29,0(r4) l.lwz r27,0(r5) l.sw 0(r4),r27 l.sw 0(r5),r29 The pointers are not checked with access_ok(). The four memory accesses also have no exception table entries. A caller passes a kernel address as either pointer, and the syscall reads from and writes to it directly. This gives an unprivileged process a kernel read/write primitive. It overwrites kernel data such as the sys_call_table, gaining code execution in kernel context. Check both pointers before entering the critical section. Add fixups for the four memory accesses so faults on valid but unmapped user addresses return -EFAULT. [shorne@gmail.com: fix comment style]

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

arch/openrisc/kernel/entry.S

What this is
OPENRISC ARCHITECTUREMAINTAINERS section matched on arch/openrisc/ · linux-openrisc@vger.kernel.org · Maintained
Show whether Debian builds this, per release

Debian builds this code. Every release below compiles the affected file into the kernels it ships.

  • bookworm, trixie, forky, sid, bookworm · linux-6.12y
y
built into the kernel image on every flavour - only a patch removes it

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS Debian linux-config packages

Signals

Published
2026-09-11 (37 days ago)source
CVSS
7.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.14%, higher than 2.7% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
arch/openrisc

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
3.15.10.270bf310718c6fa
3.15.15.221497cba0b02e5
3.16.1.1881f2e92e499d8
3.16.6.157574ae2ac2b31
3.16.12.109a520e8cac54f
3.16.18.50d64a75369cd0
3.17.2.4b53435c079c7
3.17.378004e9a87f2

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:LAttack vector, local
sys_or1k_atomic (syscall 244) is reached only via a local OpenRISC syscall into _sys_call_handler and sys_call_table; there is no network, adjacent-wireless, or physical-device path to the unchecked loads/stores in arch/openrisc/kernel/entry.S.
AC:LAttack complexity, low
The attacker fully controls both pointer arguments and the swap is deterministic with no race or KASLR (OpenRISC has none); a published unprivileged PoC on qemu-system-or1k overwrote sys_call_table[174] and obtained uid=0 on every run.
PR:LPrivileges required, low
Any unprivileged local process can invoke syscall 244; the handler performs no capable()/ns_capable() check, authentication, or init-namespace root gate before dereferencing the caller-supplied pointers.
UI:NUser interaction, none
The attacking process issues or1k_atomic itself with crafted kernel addresses; no other user must mount a filesystem, open a device, or otherwise interact.
S:UScope, unchanged
This is a standard host-kernel privilege escalation (arbitrary kernel R/W and commit_creds via a hijacked syscall); it does not cross a VM guest/host, IOMMU, or other security-authority boundary.
C:HConfidentiality impact, high
The syscall atomically swaps two 32-bit words at attacker-chosen addresses with no access_ok(), so pairing a kernel pointer with a userspace buffer yields an arbitrary kernel-memory read primitive of any mapped word.
I:HIntegrity impact, high
The same swap is an arbitrary kernel write; the fix commit documents overwriting sys_call_table to run commit_creds(init_cred) and gain root, i.e. control-flow hijacking and full integrity compromise.
A:HAvailability impact, high
Writes to unmapped or critical kernel addresses oops or panic because the original accesses had no exception-table fixups, and corrupting kernel text, data, or the syscall table can hang or crash the machine even without a full root exploit.