CVE-2026-10671: User thread can re-initialize an in-use `k_pipe`, corrupting kernel wait queues (`CONFIG_USERSPACE`)

Published Jul 14, 2026
·
Updated

In Zephyr's kernel pipe implementation, the userspace syscall verifier zvrfykpipeinit() in kernel/pipe.c used KSYSCALLOBJ() (which requires the kernel object to already be initialized) instead of KSYSCALLOBJNEVERINIT() (which rejects an already-initialized object). As a result, on CONFIGUSERSPACE builds an unprivileged user thread that has been granted access to a kpipe object can invoke the kpipeinit syscall to re-initialize a pipe that is already in use.

zimplkpipeinit() unconditionally resets the ring buffer, sets pipe->waiting to 0, and re-initializes both wait queues (zwaitqinit on pipe->data and pipe->space) without waking or accounting for threads currently blocked on the pipe. Any thread already pended in kpiperead()/kpipewrite() is left orphaned: still marked pending with pendedon pointing at the cleared wait queue and with stale qnodedlist links into the (now re-initialized) embedded list head.

When such an orphaned waiter is later timed out or woken, the scheduler calls sysdlistremove() on its stale node, writing through dangling prev/next pointers into kernel wait-queue/scheduler structures, causing list corruption (an attacker-driven invalid kernel write), lost wakeups, indefinitely blocked threads, and silent data loss. The flaw lets a deprivileged user thread corrupt the state of a kernel object shared with other threads/partitions.

The fix switches the verifier to KSYSCALLOBJNEVERINIT(), matching the existing kmsgqinit verifier, so a user thread can no longer re-initialize a live pipe. The vulnerable code shipped in v4.1.0 and remained through v4.4.0.

Affected Software

2 affected components
Zephyr>=4.1.0<=4.4.0
zephyrproject zephyr>=4.1.0<4.5.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Zephyr kernel pipe implementation (kernel/pipe.c) to a version that resolves this vulnerability.

    Fixed in v4.1.0
  2. Upgrade

    Upgrade Zephyr kernel pipe implementation (kernel/pipe.c) to a version that resolves this vulnerability.

    Fixed in v4.4.0
  3. Configuration

    In z_vrfy_k_pipe_init(), switch the verifier to use K_SYSCALL_OBJ_NEVER_INIT() instead of K_SYSCALL_OBJ(), so an already-initialized k_pipe object (including a live pipe) cannot be re-initialized by a user thread on CONFIG_USERSPACE builds.

    Zephyr userspace syscall verifier (z_vrfy_k_pipe_init in kernel/pipe.c) K_SYSCALL_OBJ vs K_SYSCALL_OBJ_NEVER_INIT = K_SYSCALL_OBJ_NEVER_INIT

Event History

Jul 14, 2026
CVE Published
via MITRE·03:02 PM
Data Sourced
via MITRE·03:02 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·03:16 PM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-10671?

The severity of CVE-2026-10671 is rated as high with a score of 7.1.

2

How do I fix CVE-2026-10671?

To fix CVE-2026-10671, ensure that the k_pipe is not re-initialized while in use, and apply patches that utilize K_SYSCALL_OBJ_NEVER_INIT() instead.

3

What impact does CVE-2026-10671 have on systems?

CVE-2026-10671 can lead to kernel wait queue corruption, which may result in system instability or crashes.

4

Which systems are affected by CVE-2026-10671?

CVE-2026-10671 affects systems running the Zephyr operating system with CONFIG_USERSPACE enabled.

5

When was CVE-2026-10671 published?

CVE-2026-10671 was published on July 14, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203