In OpENer 2.3.0 (commit 76b95cf) when parsing incoming CIP (Common Industrial Protocol) network packets, the length parameter is inconsistently typed across the call stack. Specifically, an upstream length calculated as an int is passed to a downstream function that expects an EipInt16 (a 16-bit signed integer). If a maliciously crafted packet with specific length fields is processed, the length parameter can overflow or be truncated into a negative value. This negative length bypasses subsequent bounds checking (due to signed/unsigned comparison issues) and is ultimately used in memory operations, leading to a Stack Buffer Overflow when reading data in DecodePaddedEPath.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HOpener Project Opener
APPOpener Project2.3.0
Related vulnerabilities
Out-of-bounds read w OpENer 2.3.0 — parsowanie wiadomości CIP/ENIP
Błędna kontrola dostępu w OpENer — przejęcie sesji encapsulation
Out-of-bounds read w EIPStackGroup OpENer — przetwarzanie ForwardOpen
Integer underflow w OpENer 2.3.0 — krytyczne uszkodzenie pamięci (RCE)
RCE przez out-of-bounds write w OpENer EtherNet/IP Stack