CVE-2026-18417
Last modified
CVE-2026-18417 is a medium-severity vulnerability rated 6.5/10 on the CVSS scale. The native BSD-socket layer recorded a pending asynchronous socket error by type-punning it into struct net_context's void user_data field (ctx->user_data = INT_TO_POINTER(-status) in zsock_accepted_cb(), zsock_received_cb(), zsock_connected_cb() and zsock_close_ctx() in subsys/net/lib/sockets/sockets_inet.c), reading it back with POINTER_TO_INT(). That same field is owned by the network stack for listening TCP contexts: net_tcp_accept() stores the parent context pointer there and the TCP core passes it back to the registered accept callback.
Description
The native BSD-socket layer recorded a pending asynchronous socket error by type-punning it into struct net_context's void user_data field (ctx->user_data = INT_TO_POINTER(-status) in zsock_accepted_cb(), zsock_received_cb(), zsock_connected_cb() and zsock_close_ctx() in subsys/net/lib/sockets/sockets_inet.c), reading it back with POINTER_TO_INT(). That same field is owned by the network stack for listening TCP contexts: net_tcp_accept() stores the parent context pointer there and the TCP core passes it back to the registered accept callback. A failed accept therefore left a small integer (an errno value) where the stack expected a struct net_context . When the network interface carrying a listening TCP socket goes down, close_tcp_conn() in subsys/net/ip/tcp.c invokes the accept callback with -ENETDOWN and the context's user_data. In v4.3.0 the callback was not disarmed afterwards, so a second interface-down event forwarded the previously stored errno to zsock_accepted_cb(), which dereferenced it as the parent context and performed several stores through it (sock_set_error()'s read-modify-write of socket_data, k_fifo_cancel_wait(&parent->recv_q)) — the crash described in the fix's commit message. v4.3.1 and v4.4.x carry a later change clearing conn->accept_cb after the error callback (269cb8823d3 on the v4.3 branch, 913fae5169425550f2364655298fceb79b320066 on main), which closes that repeat path; on those releases the poisoned cookie remains reachable only by a narrower race, a handshake completing alongside the interface-down still passing the stale cookie to k_fifo_put(&parent->accept_q, ...), and by getsockopt(SO_ERROR), which reads the field back unconditionally. On v4.3.0 an application that keeps a listening TCP socket open across repeated link-down events is sufficient to reach the defect; the triggering condition is a network-interface state change, not attacker-supplied packet data, so the practical attacker is one able to force the link down repeatedly (for example an adjacent attacker disrupting a wireless link) or one with local/physical access. Because both the faulting address and the stored data are fixed small constants derived from the errno value, the outcome is a wild-pointer access leading to a kernel fatal error — a denial of service (device crash or reset) rather than an attacker-directed memory corruption. The fix stores the pending error in a dedicated net_context.sock_error field and converts every producer and consumer to sock_set_error()/sock_get_error(), leaving user_data untouched. As a side effect it also stops getsockopt(SO_ERROR) — which is evaluated unconditionally — from returning the kernel address held in user_data to a userspace application.
Metrics
Weakness Enumeration
Affected Software
Source: CNA advisory (CVE.org). NVD analysis pending.
| Vendor | Product | Versions |
|---|---|---|
| zephyrproject | zephyr | >= 4.3.0, < 4.4.2 |
References
Timeline
- Published
- Last Modified
- Status
- Received
Frequently Asked Questions
What is CVE-2026-18417?
How severe is CVE-2026-18417?
How do I fix CVE-2026-18417?
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-18411The KARR Security System and SWDS dealer-installed automotiv…8.1
- CVE-2026-18412OpenCart extensions are uploaded as zip files with .ocmod.zi…9.1
- CVE-2026-18413The ADC API requires each driver to reject a sampling sequen…7.8
- CVE-2026-18414The ADC API requires each driver to reject a sampling sequen…7.8
- CVE-2026-18415ieee802154_send() in subsys/net/l2/ieee802154/ieee802154.c c…6.3
- CVE-2026-18416The CoAP link-format helper match_path_uri() in subsys/net/l…3.7
- CVE-2026-1842HyperCloud versions 2.3.5 through 2.6.8 improperly allowed r…6.2
- CVE-2026-18420Improper input validation in the Time Series Visual Builder …8.8
- CVE-2026-18421Concrete CMS 9 through 9.5.2 does not perform an authorizati…2.1
- CVE-2026-18422Concrete CMS before 9.5.3 did not enforce a destination-side…6.5
- CVE-2026-18423Concrete CMS 9.0.0 through 9.5.2 is vulnerable to Insecure d…7.1
- CVE-2026-18424Concrete CMS 9.0.0 to 9.5.2 is vulnerable to Server-Side Req…7.1
Are you affected by CVE-2026-18417?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
