OpenPLC v3 Heap-Based Buffer Overflow in Modbus Master getData() 漏洞概述 OpenPLC_v3 的 函数存在堆缓冲区溢出漏洞。该函数在 中读取两个分隔符之间的字符,并将其放入调用者提供的缓冲区中,没有大小参数和边界检查。在 函数中,使用 100 字节的堆分配 字段调用该函数。经过身份验证的攻击者可以通过向 端点发送特制的 HTTP POST 请求,利用过大的 值。该值被持久化到 并在加载时解析,导致 溢出并覆盖相邻的结构字段(协议在偏移量 108,dev_address 在偏移量 109,ip_port 在偏移量 210)。一个 200 字节的载荷会在分配后写入 100 字节,导致堆损坏,进而引发 PLC 进程控制循环的运行时崩溃和服务拒绝,以及攻击者控制的相邻配置字段的覆盖。上游仓库于 2026-04-04 归档,且没有修复;供应商已确认该问题不影响 OpenPLC Runtime v4。 影响范围 OpenPLC_v3 <= b470206 修复方案 上游仓库已归档,没有修复。 供应商已确认该问题不影响 OpenPLC Runtime v4。 参考链接 GitHub Gist Patch Commit Product 其他信息 严重性: HIGH 日期: 7/18/2026 CVE: CVE-2026-11826 CWE: CWE-122 Heap-based Buffer Overflow CVSS: 8.7 CVSS v4 Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N 贡献者: Shuhratbek Uralmov, Shuhratbek Uralmov