CVE-2026-68906
8.7HighPublished 16 Oct 2026 · NVD status: Deferred · AI triage by gemini-3.8-flash
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
- Impact
- High impact on availability
- Weakness
- CWE-125, CWE-835
Impact
Unauthenticated remote attackers can crash the service or trigger an infinite CPU loop by sending a malformed AARE PDU during an association handshake. Network access to the IEC 61850 service is all that is required.
Root cause
The parseUserInformation function fails to handle negative buffer positions returned by BerDecoder_decodeLength, resulting in an out-of-bounds read and an infinite parsing loop.
Affected systems
libIEC61850 prior to 1.6.2
CVSS v4.0 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Fix & remediation
Upgrade libIEC61850 to version 1.6.2 or later. If immediate upgrading is not possible, restrict network access to the MMS/IEC 61850 listening ports to trusted IP addresses only.
$ git clone https://github.com/mz-automation/libiec61850.git && cd libiec61850 && git checkout v1.6.2 && mkdir build && cd build && cmake .. && make && sudo make installAI-suggested. Run it in staging first and check it against the vendor advisory. Why?
NVD description
libIEC61850 is an open-source implementation of IEC 61850 client and server protocols including MMS, GOOSE, Sampled Values, and R-Session. Prior to 1.6.2, parseUserInformation in src/mms/iso_acse/acse.c checks len for zero before validating the negative bufPos returned by BerDecoder_decodeLength for a truncated long-form length. The continue path therefore swallows the error, reads buffer[-1], resets parsing to the beginning, and repeats the same malformed state. An unauthenticated remote peer can send a malformed AARE PDU during association to cause an infinite CPU loop under a normal allocator or a one-byte out-of-bounds read and process abort when the preceding byte is inaccessible. This issue is fixed in version 1.6.2.