CVE-2026-10848: bounds in zephyrproject zephyr
The OCPP 1.6 client in subsys/net/lib/ocpp parsed inbound WAMP RPC frames in parse_rpc_msg() (subsys/net/lib/ocpp/ocpp_j.c) using a hand-rolled helper, extract_string_field(), that copied the message's uid and action fields with strncpy(out_buf, token + 1, outlen - 1) and then scanned the result with strchr(out_buf, '"'). Because strncpy does not NUL-terminate the destination when the source is at least outlen - 1 (127) bytes long, the subsequent strchr reads past the 128-byte destination buffer into adjacent stack memory; if a " byte is found beyond the buffer, a one-byte out-of-bounds NUL write also occurs. A related defect in extract_payload() runs strchr/strrchr over the receive buffer, which may not be NUL-terminated when a maximal-length frame fills it. The parsed bytes come directly from the OCPP central-system server over a websocket: the reader thread fills recv_buf via websocket_recv_msg() and calls parse_rpc_msg() on each inbound DATA frame (subsys/net/lib/ocpp/ocpp.c). A malicious or compromised central server, or an on-path attacker (OCPP is commonly deployed over plain ws://), can send an RPC frame whose uid or action field is 127+ bytes with no closing quote, triggering the out-of-bounds access. The primary impact is a remotely triggerable denial of service: the unbounded scan can fault on an unmapped page, and the stray NUL write can corrupt adjacent stack state. The over-read data is not reflected to the peer, so disclosure is limited. The feature is EXPERIMENTAL and must be explicitly enabled (CONFIG_OCPP). The fix replaces the manual parser with the bounds-respecting json_mixed_arr_parse() and copies the extracted uid with an explicitly NUL-terminated buffer, eliminating both over-reads.
AI Analysis
Technical Summary
The vulnerability exists in Zephyr's OCPP 1.6 client within the parse_rpc_msg() function, which uses a custom helper extract_string_field() that copies uid and action fields using strncpy without guaranteed null-termination. When these fields are 127 or more bytes without a closing quote, strchr scans beyond the 128-byte buffer into adjacent stack memory, causing an out-of-bounds read and a one-byte out-of-bounds null write. A related issue in extract_payload() also scans buffers that may not be null-terminated. The data comes from the OCPP central-system server over a websocket, which can be exploited remotely if the server is malicious or compromised, or by an on-path attacker since OCPP often uses unencrypted ws://. The primary impact is a remotely triggerable denial of service due to potential faults on unmapped memory and stack corruption. The vulnerability affects versions 4.3.0 through before 4.5.0. The fix involves replacing the manual parser with json_mixed_arr_parse() and ensuring explicit null-termination of buffers.
Potential Impact
A remote attacker controlling or intercepting the OCPP central-system server connection can send specially crafted RPC frames with oversized uid or action fields to trigger out-of-bounds memory reads and writes in the client. This can cause a denial of service by crashing the client due to memory faults or stack corruption. Confidentiality impact is limited as the over-read data is not sent back to the attacker. The vulnerability affects an experimental feature that must be enabled explicitly, reducing exposure.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vendor has fixed the issue by replacing the manual parser with a bounds-respecting JSON parser and ensuring explicit null-termination of buffers. Users should upgrade to versions including this fix when available or apply the vendor's official patch once released. Until then, consider disabling the experimental OCPP feature (CONFIG_OCPP) if not required to reduce risk.
CVE-2026-10848: bounds in zephyrproject zephyr
Description
The OCPP 1.6 client in subsys/net/lib/ocpp parsed inbound WAMP RPC frames in parse_rpc_msg() (subsys/net/lib/ocpp/ocpp_j.c) using a hand-rolled helper, extract_string_field(), that copied the message's uid and action fields with strncpy(out_buf, token + 1, outlen - 1) and then scanned the result with strchr(out_buf, '"'). Because strncpy does not NUL-terminate the destination when the source is at least outlen - 1 (127) bytes long, the subsequent strchr reads past the 128-byte destination buffer into adjacent stack memory; if a " byte is found beyond the buffer, a one-byte out-of-bounds NUL write also occurs. A related defect in extract_payload() runs strchr/strrchr over the receive buffer, which may not be NUL-terminated when a maximal-length frame fills it. The parsed bytes come directly from the OCPP central-system server over a websocket: the reader thread fills recv_buf via websocket_recv_msg() and calls parse_rpc_msg() on each inbound DATA frame (subsys/net/lib/ocpp/ocpp.c). A malicious or compromised central server, or an on-path attacker (OCPP is commonly deployed over plain ws://), can send an RPC frame whose uid or action field is 127+ bytes with no closing quote, triggering the out-of-bounds access. The primary impact is a remotely triggerable denial of service: the unbounded scan can fault on an unmapped page, and the stray NUL write can corrupt adjacent stack state. The over-read data is not reflected to the peer, so disclosure is limited. The feature is EXPERIMENTAL and must be explicitly enabled (CONFIG_OCPP). The fix replaces the manual parser with the bounds-respecting json_mixed_arr_parse() and copies the extracted uid with an explicitly NUL-terminated buffer, eliminating both over-reads.
CVSS v3.1
Score 7.0high
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 vulnerability exists in Zephyr's OCPP 1.6 client within the parse_rpc_msg() function, which uses a custom helper extract_string_field() that copies uid and action fields using strncpy without guaranteed null-termination. When these fields are 127 or more bytes without a closing quote, strchr scans beyond the 128-byte buffer into adjacent stack memory, causing an out-of-bounds read and a one-byte out-of-bounds null write. A related issue in extract_payload() also scans buffers that may not be null-terminated. The data comes from the OCPP central-system server over a websocket, which can be exploited remotely if the server is malicious or compromised, or by an on-path attacker since OCPP often uses unencrypted ws://. The primary impact is a remotely triggerable denial of service due to potential faults on unmapped memory and stack corruption. The vulnerability affects versions 4.3.0 through before 4.5.0. The fix involves replacing the manual parser with json_mixed_arr_parse() and ensuring explicit null-termination of buffers.
Potential Impact
A remote attacker controlling or intercepting the OCPP central-system server connection can send specially crafted RPC frames with oversized uid or action fields to trigger out-of-bounds memory reads and writes in the client. This can cause a denial of service by crashing the client due to memory faults or stack corruption. Confidentiality impact is limited as the over-read data is not sent back to the attacker. The vulnerability affects an experimental feature that must be enabled explicitly, reducing exposure.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vendor has fixed the issue by replacing the manual parser with a bounds-respecting JSON parser and ensuring explicit null-termination of buffers. Users should upgrade to versions including this fix when available or apply the vendor's official patch once released. Until then, consider disabling the experimental OCPP feature (CONFIG_OCPP) if not required to reduce risk.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-06-04T12:16:34.966Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6a6f7159bf32cb7a34e2ea00
Added to database: 08/02/2026, 16:33:29 UTC
Last enriched: 08/10/2026, 15:17:49 UTC
Last updated: 09/16/2026, 10:01:30 UTC
Views: 99
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.