Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P/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
Network-reachable CIP parser with no auth required; OOB read can disclose adjacent stack memory (C:L) and crash the process (A:L).
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
4DescriptionCVE.org
A vulnerability has been found in liftoff-sr CIPster up to 632336d414ef708a542377c1aa8d6fdb7c70a760. Affected by this issue is the function CipAppPath::deserialize_symbolic of the file source/src/cip/cipepath.cc. Such manipulation leads to out-of-bounds read. The attack may be launched remotely. The exploit has been disclosed to the public and may be used. This product operates on a rolling release basis, ensuring continuous delivery. Consequently, there are no version details for either affected or updated releases. The name of the patch is 886a4d090e1c5b0475f0b1c2fe0606a8f0d6a519. A patch should be applied to remediate this issue.
AnalysisAI
Out-of-bounds read in CIPster's EtherNet/IP symbolic path parser exposes industrial control systems to remote availability disruption and potential memory disclosure. The flaw resides in CipAppPath::deserialize_symbolic (source/src/cip/cipepath.cc), where unsafe memcpy calls copy attacker-controlled byte counts from a network-supplied CIP symbolic path segment into a fixed-size stack buffer without bounds enforcement, reachable by a remote unauthenticated attacker sending a crafted EtherNet/IP explicit messaging request. No active exploitation is confirmed (not in CISA KEV), but a POC exploit archive has been publicly released and the CVSS 4.0 E:P modifier corroborates exploit availability.
Technical ContextAI
CIPster (CPE: cpe:2.3:a:liftoff-sr:cipster:*:*:*:*:*:*:*:*) is an open-source C++ implementation of the CIP (Common Industrial Protocol) stack, designed to add EtherNet/IP connectivity to embedded industrial devices such as PLCs and HMIs, typically listening on TCP port 44818. The vulnerability (CWE-125: Out-of-bounds Read) is in the deserialize_symbolic method of the CipAppPath class. The vulnerable code used raw memcpy(tag, in.data(), byte_count) and memcpy(tag, in.data(), symbol_size) to copy attacker-controlled lengths from an incoming CIP symbolic segment into a fixed-size stack buffer (tag) without validating that the requested count fits within the buffer. The BufReader class provides a bounds-enforcing get_bytes() method, but the vulnerable code bypassed it entirely. The patch at commit 886a4d090e1c5b0475f0b1c2fe0606a8f0d6a519 replaces both memcpy calls with in.get_bytes(), adds a CIPSTER_ASSERT(sizeof(tag) > 31) compile-time guard, and adds a std::range_error catch block in the CIP message router (cipmessagerouter.cc) to handle over-read exceptions gracefully rather than propagating them.
RemediationAI
Apply patch commit 886a4d090e1c5b0475f0b1c2fe0606a8f0d6a519 from the CIPster GitHub repository (https://github.com/liftoff-sr/CIPster/commit/886a4d090e1c5b0475f0b1c2fe0606a8f0d6a519), which replaces unsafe memcpy calls with the bounds-enforcing BufReader::get_bytes() method and adds std::range_error handling in the message router. Because the project uses rolling releases, verify your build is at or past this specific commit rather than relying on a version number. As a compensating control where immediate recompilation is not feasible, restrict network access to the EtherNet/IP listener (typically TCP port 44818) using firewall rules or industrial DMZ network segmentation, limiting inbound CIP connections to only trusted engineering workstations and SCADA hosts; this eliminates the network attack surface without disrupting local device operation, though it does not remediate the underlying flaw and should be treated as temporary.
Same weakness CWE-125 – Out-of-bounds Read
View allSame technique Buffer Overflow
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45163
GHSA-w4qj-vxw3-g77r