CVE-2026-11826: OpenPLC_v3 Heap-Based Buffer Overflow in Modbus Master getData()
OpenPLCv3 contains a heap-based buffer overflow in the getData() function in webserver/core/modbusmaster.cpp. getData() reads characters between two delimiters into a caller-supplied buffer with no size parameter and no bounds check. In parseConfig() the function is invoked with the 100-byte heap-allocated MBdevice.devname field. An authenticated attacker with access to the OpenPLC web interface can send a crafted HTTP POST to the /modbus endpoint with an oversized devicename value; the value is persisted to mbconfig.cfg and parsed on load, overflowing devname and overwriting adjacent struct fields (protocol at offset 108, devaddress at offset 109, ipport at offset 210). A 200-byte payload writes 100 bytes past the allocation. The result is heap corruption leading to runtime crash and denial of service of the PLC process control loop, with attacker-controlled overwrite of adjacent configuration fields. The upstream repository was archived on 2026-04-04 and no fix is expected; the vendor has confirmed the issue does not affect OpenPLC Runtime v4.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-11826?
The severity of CVE-2026-11826 is classified as high with a score of 8.8.
How does CVE-2026-11826 affect OpenPLC?
CVE-2026-11826 affects OpenPLC by introducing a heap-based buffer overflow in the getData() function, allowing for potential exploitation.
What are the potential impacts of exploiting CVE-2026-11826?
Exploiting CVE-2026-11826 may lead to data corruption, unauthorized access, or execution of arbitrary code.
How do I fix CVE-2026-11826?
To fix CVE-2026-11826, you should update to a patched version of OpenPLC that addresses the buffer overflow vulnerability.
In which function does CVE-2026-11826 occur?
CVE-2026-11826 occurs in the getData() function within the webserver/core/modbus_master.cpp file.