Read the docs
TI-2026-84933 Aliases CVE-2026-16511

Zephyr RTIO syscalls let user threads write kernel memory

Priority LOW 37CWE-787Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Code execution, Security bypass
Confidentiality · integrity · availability
High · High · High
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-787, CWE-862 and the CVSS impact.

Summary

Zephyr from 3.4.0 before 4.3.2 and from 4.4.0 before 4.5.0 does not validate user-supplied pointers in two RTIO syscall verifiers before the kernel writes through them. A user-mode thread on a CONFIG_USERSPACE build can make the kernel write to memory of its choosing (CWE-787), and the flaw can be used to escalate privilege from user mode. Exploiting the handle out-parameter path requires a granted RTIO context, and systems built without CONFIG_USERSPACE or without CONFIG_RTIO are unaffected.

Written with Claude Haiku 5.5 from the sources below · 2026-11-04

Description from the CNA

Two RTIO syscall verifiers, in subsys/rtio/rtio_syscalls.c (subsys/rtio/rtio_handlers.c before v4.3.0), did not validate user-supplied pointers before the kernel wrote through them. z_vrfy_rtio_sqe_cancel() performed no validation at all. It passed the caller's struct rtio_sqe pointer straight to z_impl_rtio_sqe_cancel(), which converts it with CONTAINER_OF to a struct rtio_iodev_sqe, ORs RTIO_SQE_CANCELED (BIT(3)) into its 16-bit flags field in supervisor mode, then loads its next pointer and repeats until that pointer is NULL. The syscall takes no RTIO context argument, so it needs no object grant: any user-mode thread on a CONFIG_USERSPACE build can set that bit in a 16-bit word at an address of its choosing in kernel memory, and the kernel continues the write along whatever pointer chain it finds at the corresponding offset. Setting chosen bits in kernel data structures, such as object permission or thread state fields, can be used to escalate privilege from user mode. z_vrfy_rtio_sqe_copy_in_get_handles() validated its RTIO context and the input SQE array, but only NULL-checked the handle out-parameter before writing a kernel SQE pointer through it, with no K_SYSCALL_MEMORY_WRITE check. A user thread that holds a granted RTIO context can therefore make the kernel store a pointer value at an arbitrary address. The fixes validate the handle out-parameter as writable, bound the cancel handle to real submission-pool storage, and require permission on the RTIO context that owns the matching pool. Without that last check a bounded handle still let any user thread cancel submissions belonging to other contexts, silently aborting their I/O. Systems built without CONFIG_USERSPACE or without CONFIG_RTIO are unaffected.

Why it matters now

EPSS 0.00173 6th percentileScored 2026-11-07
Fix Fixed zephyr (zephyrproject): 4.3.2, 4.5.0

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
zephyrprojectzephyr3.4.0 to before 4.3.2; 4.4.0 to before 4.5.04.3.2, 4.5.0Patch availableCNA
  • zephyr Vendorzephyrproject Affected 3.4.0 to before 4.3.2; 4.4.0 to before 4.5.0 Fixed in 4.3.2, 4.5.0 Patch available CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:o:zephyrproject:zephyr:*:*:*:*:*:*:*:*——zephyrproject
  • cpe:2.3:o:zephyrproject:zephyr:*:*:*:*:*:*:*:* Versions — — ·zephyrproject

Remediation

Upgrade zephyr to 4.3.2 if you run a version from 3.4.0 before 4.3.2, or to 4.5.0 if you run a version from 4.4.0 before 4.5.0.

Written with Claude Haiku 5.5 from the sources below · 2026-11-04

  • Fix · CNA zephyr (zephyrproject) Fixed in 4.3.2, 4.5.0

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    zephyrproject zephyr 4.3.2, 4.5.0

    5 records Highest priority Priority LOW 5 LOW

    Other records, highest priority first

    • TI-2026-84937 Out-of-bounds read and write in Zephyr Bluetooth LE ControllerPriority LOW 36
    • TI-2026-84938 Inverted buffer checks in Zephyr RTIO expose kernel memoryPriority LOW 33
    • TI-2026-84935 TOCTOU race in Zephyr i3c_transfer() lets user code run in kernelPriority LOW 29

Timeline

  1. 2026-11-04 Threatist record created from CVE-2026-16511
  2. 2026-11-05 Priority changed: MEDIUM → LOW

References

  • TI-2026-04422 Out-of-bounds read/write in HTTP WebSocket upgrade via non-null-terminated Sec-WebSocket-Key CVSS 3.1CRITICAL 9.8
  • TI-2026-01361 dns: memory‑safety issue in the DNS name parser CVSS 3.1CRITICAL 9.8
  • TI-2026-09174 Unterminated URI buffer causes out-of-bounds read in LwM2M firmware pull (Package URI) CVSS 3.1CRITICAL 9.1
  • TI-2026-09168 Stack buffer overflow in `net_ipaddr_parse()` IPv4 address-with-port parsing in `subsys/net/ip/utils.c` CVSS 3.1CRITICAL 9.8
  • TI-2024-09625 net: lib: http_server: Buffer Under-read CVSS 3.1HIGH 8.6
  • TI-2021-02863 Usb bluetooth device ACL read cb buffer overflow CVSS 3.1CRITICAL 9.6
See all 341 →

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences