CVE-2026-10655
Last modified
CVE-2026-10655 is a medium-severity vulnerability rated 5.9/10 on the CVSS scale. The asynchronous SNTP client in Zephyr (subsys/net/lib/sntp/sntp.c, sntp_close_async) closed the UDP socket file descriptor directly from the calling thread immediately after detaching it from the network socket service, without synchronizing with the socket-service poll thread. The socket service thread polls each socket via zvfs_poll, which (in zsock_poll_prepare_ctx) registers a k_poll_event pointing into the socket's net_context (&ctx->recv_q) and then blocks in k_poll without holding a reference or lock. net_context objects are allocated from a fixed pool (contexts[CONFIG_NET_MAX_CONTEXTS]) and reused after close. When sntp_close_async is invoked from a different thread than the poll thread (in the in-tree consumer subsys/net/lib/config/init_clock_sntp.c, the SNTP timeout handler runs on the system workqueue while the socket service thread is blocked in poll on the same fd), the close frees and may reuse the net_context while the poll thread still has a poller node linked into the freed object, resulting in a use-after-free / object confusion of kernel poll structures. The SNTP timeout path is the normal no-response failure mode, so a network peer or off-path attacker who drops or delays the SNTP/NTP response can drive the racing close repeatedly (and periodically with NET_CONFIG_SNTP_INIT_RESYNC). EPSS estimates a 0.25% chance of exploitation in the next 30 days.
Description
The asynchronous SNTP client in Zephyr (subsys/net/lib/sntp/sntp.c, sntp_close_async) closed the UDP socket file descriptor directly from the calling thread immediately after detaching it from the network socket service, without synchronizing with the socket-service poll thread. The socket service thread polls each socket via zvfs_poll, which (in zsock_poll_prepare_ctx) registers a k_poll_event pointing into the socket's net_context (&ctx->recv_q) and then blocks in k_poll without holding a reference or lock. net_context objects are allocated from a fixed pool (contexts[CONFIG_NET_MAX_CONTEXTS]) and reused after close. When sntp_close_async is invoked from a different thread than the poll thread (in the in-tree consumer subsys/net/lib/config/init_clock_sntp.c, the SNTP timeout handler runs on the system workqueue while the socket service thread is blocked in poll on the same fd), the close frees and may reuse the net_context while the poll thread still has a poller node linked into the freed object, resulting in a use-after-free / object confusion of kernel poll structures. The SNTP timeout path is the normal no-response failure mode, so a network peer or off-path attacker who drops or delays the SNTP/NTP response can drive the racing close repeatedly (and periodically with NET_CONFIG_SNTP_INIT_RESYNC). The most likely consequence is a crash of the networking thread (denial of service), with potential memory corruption when the freed context slot is reallocated. The fix defers the close to the socket service thread itself via net_socket_service_close (NET_SOCKET_SERVICE_CLOSE_SOCKETS), so the same thread that polls performs the close, eliminating the race. Affected releases: v4.2.0 through v4.4.0.
Metrics
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness Enumeration
Affected Software
| Vendor | Product | Versions |
|---|---|---|
| Zephyrproject | Zephyr | >= 4.2.0, <= 4.4.1 |
References
Timeline
- Published
- Last Modified
- Status
- Analyzed
Frequently Asked Questions
What is CVE-2026-10655?
How severe is CVE-2026-10655?
How do I fix CVE-2026-10655?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-1065The Form Maker by 10Web plugin for WordPress is vulnerable t…7.2
- CVE-2026-10650A flaw has been found in warmcat libwebsockets up to 4.5.8. …5.5
- CVE-2026-10651bt_sdp_parse_attribute() in subsys/bluetooth/host/classic/sd…6.5
- CVE-2026-10652Zephyr's DNS resolver (subsys/net/lib/dns) parses resource r…7.4
- CVE-2026-10653The Zephyr net_buf library (lib/net_buf/buf.c) manipulated b…8.1
- CVE-2026-10654A race condition in the Zephyr Bluetooth Classic RFCOMM host…3.1
- CVE-2026-10656The MAX32xxx USB device controller driver (drivers/usb/udc/u…4.6
- CVE-2026-10657Zephyr's DNS resolver detects mDNS (.local) queries in dns_r…5.3
- CVE-2026-10658bt_iso_recv() in subsys/bluetooth/host/iso.c pulled the ISO …7.1
- CVE-2026-10659The Dhara flash translation layer disk driver (drivers/disk/…4.7
- CVE-2026-1066A vulnerability was detected in kalcaddle kodbox up to 1.61.…8.8
- CVE-2026-10660The Bluetooth BAP Broadcast Assistant GATT client in subsys/…6.4
Are you affected by CVE-2026-10655?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
