{"id":10711,"date":"2026-09-04T18:51:23","date_gmt":"2026-09-04T10:51:23","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-12522"},"modified":"2026-09-04T18:51:23","modified_gmt":"2026-09-04T10:51:23","slug":"cve-2026-12522","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-12522","title":{"rendered":"CVE-2026-12522 [HIGH] &#8211; The HL7800 cellular modem driver&#8217;s +CGCONTRDP: response handler on_cmd_atcmdinfo_ipaddr()"},"content":{"rendered":"<p>The HL7800 cellular modem driver&#8217;s +CGCONTRDP: response handler on_cmd_atcmdinfo_ipaddr() in drivers\/modem\/vendor_standalone\/hl7800.c parses the PDP-context dynamic parameters (local address, subnet mask, gateway, and DNS servers) that the cellular network assigns to the device. The response is linearized into a 256-byte stack buffer, after which each address field length is computed from comma\/. delimiter positions in the network-supplied data and used directly as the length argument to strncpy() into the fixed 64-byte stack buffer temp_addr_str (and the 16-byte iface_ctx.dns_v4_string).<\/p>\n<p>Because the field length is derived from attacker-controlled delimiter positions and was not bounded against the destination buffer, a single field can be far larger than 64 bytes. A malicious or impersonated cellular network (for example a rogue base station) can return a crafted +CGCONTRDP response with an overlong address field, causing strncpy() to write past temp_addr_str on the modem worker thread&#8217;s stack, plus an out-of-bounds NUL write at temp_addr_str[addr_len].<\/p>\n<p>No device-side privileges or user interaction are required: the device itself issues the AT+CGCONTRDP=1 query during normal network attach and parses whatever the network returns. The overflow corrupts adjacent stack memory in supervisor context, yielding at minimum a remotely triggerable crash and potentially control-flow hijacking on targets without stack protection.<\/p>\n<p>The fix bounds every field length against its destination buffer (temp_addr_str and dns_v4_string) before each copy, rejecting overlong fields.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The HL7800 cellular modem driver&#8217;s +CGCONTRDP: response handler on_cmd_atcmdinfo_ipaddr() in drivers\/modem\/vendor_standalone\/hl7800.c parses the PDP-context dynamic parameters (local address, subnet m<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-10711","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/10711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}