CVE-2026-15924
Awaiting Analysis Awaiting Analysis - Queue

Race Condition in Zephyr TLS Socket Client Cache

Vulnerability report for CVE-2026-15924, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-14

Last updated on: 2026-09-14

Assigner: Zephyr Project

Description

Zephyr's TLS socket layer in subsys/net/lib/sockets/sockets_tls.c keeps a single process-global array, client_cache, of cached client sessions that is shared by every TLS socket context. The functions that mutate and read it β€” tls_session_save(), tls_session_get(), tls_session_cache_reset(), and the settings restore handler β€” allocate, free, and dereference each entry's heap buffer (entry->session). Before the fix these accesses were serialized only by the per-socket context mutex ctx->lock (assigned per socket in ctx_set_lock()), which provides no mutual exclusion between different sockets touching the shared cache. Because CONFIG_NET_SOCKETS_TLS_MAX_CLIENT_SESSION_COUNT defaults to 1, any two concurrent client sockets contend for the same slot. A thread in tls_session_get() reading entry->session inside mbedtls_ssl_session_load() can run concurrently with another thread in tls_session_save() that selects the same entry for reuse and executes mbedtls_free(entry->session) before reallocating β€” a use-after-free read, and a double-free when two saves evict the same entry. Both corrupt the mbedTLS heap. The cache is reached on ordinary client paths: at connect time via tls_session_store()/tls_session_restore(), and (on main) whenever a TLS 1.3 session ticket arrives during recv()/poll() via tls_session_store_current(). Exploitation requires an application that opts into per-socket client session caching (the TLS_SESSION_CACHE socket option, off by default) and runs concurrent TLS client connections on multiple threads; the timing that opens the window is influenced by the remote peer(s), so a malicious or compromised server can raise session-ticket frequency to widen it. The reliably-demonstrable impact is memory corruption leading to a crash or heap corruption (denial of service). The fix adds a dedicated session_cache_lock mutex taken across every accessor of client_cache, serializing all reads and frees and closing the race.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-14
Last Modified
2026-09-14
Generated
2026-09-15
AI Q&A
2026-09-14
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
zephyr_project zephyr *
zephyrproject zephyr From 3.1.0 (inc) to 4.4.2 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-416 The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-15924 is a use-after-free and double-free vulnerability in Zephyr RTOS's TLS socket implementation. It occurs due to unsynchronized concurrent access to a shared TLS client session cache in subsys/net/lib/sockets/sockets_tls.c. The cache, client_cache, is a global array shared by all TLS socket contexts. Functions like tls_session_save() and tls_session_get() manipulate heap buffers without proper mutual exclusion, leading to memory corruption when threads access the same cache slot concurrently.

Detection Guidance

Detecting this vulnerability requires checking Zephyr RTOS versions and TLS socket configurations. Verify if your system uses Zephyr versions >=3.1.0 and <4.4.2. Check if the TLS_SESSION_CACHE socket option is enabled in applications using concurrent TLS client connections. Inspect logs for crashes or heap corruption during TLS operations.

Impact Analysis

The vulnerability can cause memory corruption, leading to crashes or denial of service. Exploitation requires an application enabling per-socket client session caching and running concurrent TLS client connections. A malicious server can increase session-ticket frequency to widen the timing window for exploitation.

Compliance Impact

This vulnerability primarily causes memory corruption leading to crashes or denial of service, which could disrupt systems handling sensitive data. While not directly violating GDPR or HIPAA, such disruptions might lead to data processing interruptions or loss of availability for critical services, potentially impacting compliance with availability requirements in these regulations.

Mitigation Strategies

Upgrade Zephyr RTOS to version 4.4.2 or later to apply the fix. If upgrading is not immediately possible, disable per-socket client session caching by ensuring the TLS_SESSION_CACHE socket option is not enabled. Avoid running concurrent TLS client connections on multiple threads until patched.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-15924. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart