CVE-2026-11812: race in zephyrproject zephyr
The UpdateHub management subsystem (subsys/mgmt/updatehub/updatehub.c) drives every update operation through a single file-scope ctx structure that holds the CoAP block context, payload buffer, status code, socket, and a one-element poll-fd array fds[1]. Access to ctx was not serialized, and prepare_fds() wrote ctx.fds[ctx.nfds] and incremented ctx.nfds with no bounds check. Two independent paths mutate ctx concurrently: the background autohandler running on the system workqueue, and user-triggered operations reached through the updatehub run shell command, direct API calls, or — since the operations are exposed as syscalls — userspace threads. When a second flow enters prepare_fds() while ctx.nfds is already 1, the write lands one element past the array; by struct layout it overlaps the adjacent ctx.sock/ctx.nfds members. More broadly, the unsynchronized sharing lets two flows interleave connection setup and teardown, double-closing a socket descriptor or scribbling the shared buffers. The result is corruption of the update subsystem's internal state and denial of service of the firmware-update path; the out-of-bounds write is contained within the ctx structure and there is no demonstrated path to memory outside it or to code execution. Triggering requires a local actor able to invoke update operations (or, with CONFIG_USERSPACE, an unprivileged userspace thread) and to win a timing race against the background handler; remote peers cannot control the race timing. The fix serializes the entry points with a mutex and adds a bounds check to prepare_fds().
AI Analysis
Technical Summary
The UpdateHub management subsystem in Zephyr (subsys/mgmt/updatehub/updatehub.c) uses a single file-scope context structure (ctx) to manage update operations, including CoAP block context, payload buffer, status code, socket, and a poll-fd array of size one. Access to this ctx structure is not serialized, allowing two independent execution paths—the background autohandler and user-triggered operations—to concurrently mutate ctx. This concurrency leads to a race condition where prepare_fds() writes beyond the bounds of the poll-fd array, overlapping adjacent members of ctx. Such unsynchronized access can cause double-closing of socket descriptors or corruption of shared buffers, resulting in internal state corruption and denial of service of the firmware update path. Exploitation requires local actor capabilities and timing control; remote attackers cannot trigger the race. The fix involves serializing access with a mutex and adding bounds checking in prepare_fds().
Potential Impact
The vulnerability causes corruption of the UpdateHub subsystem's internal state and denial of service of the firmware update mechanism. There is no impact on confidentiality or integrity, and no known path to code execution. Exploitation requires local access with low privileges and high attack complexity due to timing requirements. Remote exploitation is not feasible.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vendor's fix serializes access to the shared context with a mutex and adds bounds checking to prevent out-of-bounds writes. Until a patch is applied, restrict local access to update operations to trusted users and consider disabling unprivileged userspace threads from invoking update operations if possible.
CVE-2026-11812: race in zephyrproject zephyr
Description
The UpdateHub management subsystem (subsys/mgmt/updatehub/updatehub.c) drives every update operation through a single file-scope ctx structure that holds the CoAP block context, payload buffer, status code, socket, and a one-element poll-fd array fds[1]. Access to ctx was not serialized, and prepare_fds() wrote ctx.fds[ctx.nfds] and incremented ctx.nfds with no bounds check. Two independent paths mutate ctx concurrently: the background autohandler running on the system workqueue, and user-triggered operations reached through the updatehub run shell command, direct API calls, or — since the operations are exposed as syscalls — userspace threads. When a second flow enters prepare_fds() while ctx.nfds is already 1, the write lands one element past the array; by struct layout it overlaps the adjacent ctx.sock/ctx.nfds members. More broadly, the unsynchronized sharing lets two flows interleave connection setup and teardown, double-closing a socket descriptor or scribbling the shared buffers. The result is corruption of the update subsystem's internal state and denial of service of the firmware-update path; the out-of-bounds write is contained within the ctx structure and there is no demonstrated path to memory outside it or to code execution. Triggering requires a local actor able to invoke update operations (or, with CONFIG_USERSPACE, an unprivileged userspace thread) and to win a timing race against the background handler; remote peers cannot control the race timing. The fix serializes the entry points with a mutex and adds a bounds check to prepare_fds().
CVSS v3.1
Score 2.5low
Affected software
zephyrproject
zephyr
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The UpdateHub management subsystem in Zephyr (subsys/mgmt/updatehub/updatehub.c) uses a single file-scope context structure (ctx) to manage update operations, including CoAP block context, payload buffer, status code, socket, and a poll-fd array of size one. Access to this ctx structure is not serialized, allowing two independent execution paths—the background autohandler and user-triggered operations—to concurrently mutate ctx. This concurrency leads to a race condition where prepare_fds() writes beyond the bounds of the poll-fd array, overlapping adjacent members of ctx. Such unsynchronized access can cause double-closing of socket descriptors or corruption of shared buffers, resulting in internal state corruption and denial of service of the firmware update path. Exploitation requires local actor capabilities and timing control; remote attackers cannot trigger the race. The fix involves serializing access with a mutex and adding bounds checking in prepare_fds().
Potential Impact
The vulnerability causes corruption of the UpdateHub subsystem's internal state and denial of service of the firmware update mechanism. There is no impact on confidentiality or integrity, and no known path to code execution. Exploitation requires local access with low privileges and high attack complexity due to timing requirements. Remote exploitation is not feasible.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vendor's fix serializes access to the shared context with a mutex and adds bounds checking to prevent out-of-bounds writes. Until a patch is applied, restrict local access to update operations to trusted users and consider disabling unprivileged userspace threads from invoking update operations if possible.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-06-09T15:51:50.979Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6a7a5ac4bf8831d539b61157
Added to database: 08/10/2026, 23:12:04 UTC
Last enriched: 08/10/2026, 23:29:57 UTC
Last updated: 09/24/2026, 13:47:42 UTC
Views: 72
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.