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
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
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | fixedDLA-4841-1 · 2026-10-17 · text | 6.1.190-1 | Update 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 13trixie | fixedDSA-6528-1 · 2026-09-29 · text | 6.12.111-1 | Update 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 14forky | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.2.6-1 | Update 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.12 | fixedDLA-4817-1 · 2026-10-04 · text | 6.12.111-1~deb12u1 | Update 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
| Introduced | Fixed in | Commit |
|---|---|---|
| 3.1 | 5.10.270 | bf310718c6fa |
| 3.1 | 5.15.221 | 497cba0b02e5 |
| 3.1 | 6.1.188 | 1f2e92e499d8 |
| 3.1 | 6.6.157 | 574ae2ac2b31 |
| 3.1 | 6.12.109 | a520e8cac54f |
| 3.1 | 6.18.50 | d64a75369cd0 |
| 3.1 | 7.2.4 | b53435c079c7 |
| 3.1 | 7.3 | 78004e9a87f2 |
Debian advisories
| Advisory | Date | Shipped to | Debian |
|---|---|---|---|
| DLA-4841-1 | 2026-10-17 | bookworm 6.1.190-1 | tracker |
| DLA-4817-1 | 2026-10-04 | bookworm 6.12.111-1~deb12u1 | tracker |
| DSA-6528-1 | 2026-09-29 | trixie 6.12.111-1 | tracker |
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.