The WNC-M14A2A LTE-M modem driver mishandles unsolicited %NOTIFYEV: events in on_cmd_socknotifyev() (drivers/modem/vendor_standalone/wncm14a2a.c). The response line is linearized into a fixed 40-byte stack buffer via net_buf_linearize(), which caps the copy at 39 bytes and returns out_len <= 39. The two quote-delimiter scanning loops, however, were bounded by len — the full CR/LF-delimited frame length returned by net_buf_findcrlf() — rather than by out_len.
When a %NOTIFYEV: line longer than 39 bytes contains no " within the linearized region, the loop indices p1/p2 walk past value[39] and read adjacent stack memory until a stray quote byte is found or the index reaches len. The over-read string is then passed to strncmp()/atoi()/LOG_*, and if a quote byte is found out of bounds the subsequent value[p2] = '\0' performs a single-NUL out-of-bounds stack write at an attacker-influenced offset.
The %NOTIFYEV: payload carries network-derived content (LTIME network time, SIB1 base-station system information, CSPS/RRCSTATE), so a rogue cellular base station, a malicious or compromised modem module, or RF manipulation that induces an over-long notify line reaches the defect without any application interaction; the handler runs automatically on the unsolicited event in the modem RX thread.
The impact is out-of-bounds stack disclosure (into logs and parsing) and stack corruption that can crash the modem RX thread (denial of service). The write offset is only weakly controlled, so memory-safe code execution is not demonstrated. The fix bounds both scanning loops by out_len, keeping all accesses within the linearized buffer.
{
"cna_assigner": "zephyr",
"cwe_ids": [
"CWE-787"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/12xxx/CVE-2026-12519.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-12519.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"131996261375916018001033485830807895620",
"136154604510888082681493850098912075804",
"313488722835778821232241214115869588560",
"37655598302320809377662094755851599499",
"298439941010721294754643047713480801129",
"142082604271434510719801320487376491929",
"89725677151057510728715984362996395339",
"179105886327140473057817059872291898806"
],
"threshold": 0.9
},
"id": "CVE-2026-12519-b36ac40c",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/c516cb7c14f8b0537811764daa94bedc50c230f3",
"target": {
"file": "drivers/modem/vendor_standalone/wncm14a2a.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "282641910025127288660451591403000133724",
"length": 1074
},
"id": "CVE-2026-12519-c09cb7af",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/c516cb7c14f8b0537811764daa94bedc50c230f3",
"target": {
"file": "drivers/modem/vendor_standalone/wncm14a2a.c",
"function": "on_cmd_socknotifyev"
}
}
]
"2026-08-28T14:32:50Z"