Description
OpenPLC_v3 contains a heap-based buffer overflow in the getData() function in webserver/core/modbus_master.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 MB_device.dev_name field. An authenticated attacker with access to the OpenPLC web interface can send a crafted HTTP POST to the /modbus endpoint with an oversized device_name value; the value is persisted to mbconfig.cfg and parsed on load, overflowing dev_name and overwriting adjacent struct fields (protocol at offset 108, dev_address at offset 109, ip_port 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.
Published: 2026-07-18
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

OpenPLC_v3 contains a heap‑based buffer overflow in the getData() function of the Modbus Master component. The function copies input data frame characters between two delimiters into a caller‑supplied buffer without a size limit or bounds check. In the normal operation the buffer is the 100‑byte heap‑allocated MB_device.dev_name field. An attacker can send an oversized device_name value, which is stored in mbconfig.cfg and reloaded at startup. The overflow overwrites adjacent fields (protocol, dev_address, ip_port) and corrupts the heap, causing the PLC process control loop to crash. The result is a denial of Service and uncontrolled modification of configuration data.

Affected Systems

This vulnerability affects all installations of OpenPLC_v3 that use the webserver and Modbus Master features. No specific version numbers are listed, so any released build of OpenPLC_v3 is potentially impacted. The failure occurs when the web interface is accessed with a payload that exceeds 100 bytes in the device_name field. Products not containing the Modbus Master component or using OpenPLC Runtime v4 are not affected.

Risk and Exploitability

The CVSS score is 8.7, indicating high severity. The EPSS score is less than 1%, suggesting a low likelihood of exploitation in the wild at present. The vulnerability is not listed in the CISA KEV catalog. The attack requires authenticated access to the OpenPLC web interface; based on the description, it is inferred that the attacker must send a crafted HTTP POST to the /modbus endpoint. Successful exploitation would result in a runtime crash and tampering of configuration fields. Given the limited attack surface and low exploitation probability, the risk is high severity but low current threat level.

Generated by OpenCVE AI on July 30, 2026 at 23:01 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Restrict access to the OpenPLC web interface by implementing strong authentication and network segmentation so that only trusted hosts can send Modbus requests.
  • If Modbus Master is not required for your deployment, disable or remove it from the configuration to eliminate the vulnerable code path.
  • If disabling is not viable, apply a local code patch that enforces a bounds check on the device_name buffer or limits its size to 99 bytes to prevent overflow.
  • Monitor PLC logs for abnormal Modbus traffic and set up automated service restarts or alerts when the PLC process crashes.
  • Upgrade to OpenPLC Runtime v4 in environments where it is available, as this version is not affected by the vulnerability.

Generated by OpenCVE AI on July 30, 2026 at 23:01 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 28 Jul 2026 02:30:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:h:openplcproject:openplc_v3:*:*:*:*:*:*:*:*

Mon, 20 Jul 2026 23:45:00 +0000

Type Values Removed Values Added
First Time appeared Openplcproject
Openplcproject openplc V3
Vendors & Products Openplcproject
Openplcproject openplc V3

Mon, 20 Jul 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 18 Jul 2026 14:15:00 +0000

Type Values Removed Values Added
Description OpenPLC_v3 contains a heap-based buffer overflow in the getData() function in webserver/core/modbus_master.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 MB_device.dev_name field. An authenticated attacker with access to the OpenPLC web interface can send a crafted HTTP POST to the /modbus endpoint with an oversized device_name value; the value is persisted to mbconfig.cfg and parsed on load, overflowing dev_name and overwriting adjacent struct fields (protocol at offset 108, dev_address at offset 109, ip_port 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.
Title OpenPLC_v3 Heap-Based Buffer Overflow in Modbus Master getData()
Weaknesses CWE-122
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

Openplcproject Openplc V3
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-07-28T01:48:21.734Z

Reserved: 2026-06-09T19:53:45.722Z

Link: CVE-2026-11826

cve-icon Vulnrichment

Updated: 2026-07-20T17:02:06.021Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T23:15:06Z

Weaknesses
  • CWE-122

    Heap-based Buffer Overflow