CVE-2026-87041
Inverted memory-permission check in the RTIO syscall verifier allows a user-mode thread to read and write arbitrary kernel memory
No exploitation reported by the sources we read.
- Published2026-11-04
- WeaknessCWE-125 · CWE-787 · CWE-822
Am I affected?
Debian, Ubuntu or Red Hat sometimes backport a fix without changing the upstream version number: such a version reads « to verify », never « affected ».With a domain, we read the version its public headers and pages expose. A distribution build can carry the fix under an older number.
Description
The RTIO submission-queue verifier rtio_vrfy_sqe() in subsys/rtio/rtio_syscalls.c (subsys/rtio/rtio_handlers.c before v4.3.0) accumulated the results of K_SYSCALL_MEMORY() into its valid_sqe flag with &=. That macro returns nonzero on failure (it is built on K_SYSCALL_VERIFY_MSG(), which yields !(expr)), so every buffer permission check contributed the opposite of its result. A submission whose tx.buf, rx.buf or txrx.tx_buf/txrx.rx_buf pointer was not accessible to the calling thread was accepted, while a legitimate, thread-owned buffer caused the calling thread to be killed with a kernel oops. The verifier runs on behalf of the rtio_sqe_copy_in_get_handles() system call (also reached through the inline rtio_sqe_copy_in() wrapper), so it is driven directly by untrusted user-mode input on any image built with CONFIG_USERSPACE. A user thread that has been granted an RTIO context and an rtio_iodev object — the intended usage of RTIO userspace support, established via rtio_access_grant() — can submit an SQE whose buffer pointer and length name arbitrary kernel memory; the object check on sqe->iodev is unaffected and still passes, and the crafted SQE is forwarded to the bus driver unchanged. Downstream consumers dereference the pointer with supervisor privilege. The generic I2C and I3C RTIO fallback handlers (drivers/i2c/i2c_rtio_default.c, drivers/i3c/i3c_rtio_default.c) copy sqe.rx.buf/sqe.tx.buf into struct i2c_msg and call i2c_transfer(), and the vendor SPI/I2C RTIO drivers behave equivalently. An RTIO_OP_RX submission therefore has peripheral data written into kernel memory of the attacker's choosing (arbitrary kernel write), an RTIO_OP_TX submission clocks kernel memory out over the bus (kernel memory disclosure), and a pointer to unmapped memory faults the kernel. This is a full escape from the user-mode isolation boundary that CONFIG_USERSPACE exists to enforce. The defect was masked for years because the in-tree user-mode RTIO tests only exercise RTIO_OP_NOP and mempool-backed reads, neither of which reaches the affected checks. The fix negates each K_SYSCALL_MEMORY() result and additionally validates the TXRX transmit buffer read-only, matching the SPI, I2C and I3C handlers.
Timeline
dates in UTC- 2026-11-0406:09CVE publishedCNA
Observed activity
isMalicious corpus · updated 2026-11-04 03:37 UTCBlock these indicators
- Firewall list (EDL, text): https://api.ismalicious.com/edl/cve/CVE-2026-87041?format=txt
- CSV export: https://api.ismalicious.com/edl/cve/CVE-2026-87041?format=csv
- TAXII collection of exploited CVEs
- The EDL and CSV take an API key on the Pro plan.
Versions per branch
Products declared by the CNA
As zephyr, the CNA that assigned this CVE, declared them in the CVE record; versions as written. NVD lists no product for this CVE yet: this is the only product data so far.
- zephyrproject zephyrother versions: not affected
package zephyrhttps://github.com/zephyrproject-rtos/zephyr
Affected- ≥ 3.3.0, < 4.3.2fixed in 4.3.2semver
- ≥ 4.4.0, < 4.5.0fixed in 4.5.0semver
Source: the CNA record (CVE Program), © The MITRE Corporation,CVE Terms of UseCVE recordupdated 2026-11-04
Neither OSV.dev nor the vendor advisories we read list affected versions for CVE-2026-87041 yet.
Fix
No fix published by the sources we read yet. NVD record
Detection
- Nuclei template
- none so far ProjectDiscovery
- Exploit-DB
- no entry Exploit-DB
- Proof-of-concept repositories
- none listed PoC-in-GitHub
- Metasploit modules
- none listed Metasploit Framework
Sources
Technical details
- CVSS v3 Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Published
- 2026-11-04
Frequently asked questions
What is CVE-2026-87041?
Is CVE-2026-87041 actively exploited?
What is the CVSS score for CVE-2026-87041?
Hear about the next vulnerability in your software
Surveillance reads the versions in your stack — a domain, a lockfile or a list — checks each CVE against the ranges its sources publish, and alerts you when one you run is exploited or enters CISA KEV. A version it cannot read stays « version not verified ».
No credit card required · No monthly cap on website lookups · 250 API requests/month
Go further
- Following what attackers exploit right now? The CISA KEV additions of the month, with their patch deadlines.
- Running this software? Vulnerability monitoring alerts you to new vulnerabilities in your products.
Related vulnerabilities
Same product first, then the same vendor advisory and the same publication week.
- CVE-2026-118527KEVsame week
- CVE-2026-120276same weekWAVLINK WN536AX6-A Web Management ioos sub_416760 os command injection
- CVE-2026-18199same weekRemote Code Execution Vulnerability
- CVE-2026-120277same weekWAVLINK WN536AX6-A WireGuard CLI Group ioos sub_41a1d8 os command injection
- CVE-2026-77691same weekCommand injection vulnerability
- CVE-2026-8923same weekRemote Code Execution
- CVE-2026-94349same weekOS Command Injection in Dell OpenManage Enterprise Enables Remote Command Execution
- CVE-2026-77876same weekControl Web Panel (CWP) < 1.16 OS Command Injection via protected_directory