Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach passive partner on TCP/102
-
DeliveryImpersonate configured remote peer address
-
ExploitDeclare 65535-byte BSend, send short fragment
-
ExecutionBRecv memcpy writes past receive buffer
-
ImpactCrash or corrupt SCADA process
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a Snap7 instance acting as a passive BSend/BRecv partner, listening on TCP/102, with an application that calls BRecv or registers an OnBRecv callback using a buffer sized for its expected payload - the API provides no way to declare that buffer's capacity, so correctly-written callers are still exposed. The malicious active partner must connect from (or spoof) the configured remote peer address; S7 provides no authentication, so this check offers no cryptographic protection but does constrain the attacker to the expected peer identity/network path (this is the AT:P requirement). The trigger is explicitly described: declare a BSend TotalPackSize up to 65535 while sending only a short fragment, so the stored declared length - not the bytes actually reassembled - becomes the memcpy size. Limiting factors: only the passive-partner role is affected, the attacker must reach TCP/102 and match the configured peer address, and only versions through 1.4.3 are vulnerable; there is no user interaction and no authentication barrier once peer reachability is achieved. |
| Impact | The CVSS 4.0 base score of 8.3 (AV:N/AC:L/AT:P/PR:N/UI:N) reflects a network-reachable, unauthenticated memory-corruption flaw with high integrity and availability impact (VI:H/VA:H) but no confidentiality impact (VC:N) - consistent with an out-of-bounds write that crashes or corrupts rather than leaks data. The key tempering signal is AT:P (attack requirement present): the write path is reached by an active partner 'connecting from the configured peer address,' so an attacker must reach TCP/102 and match/impersonate the configured peer rather than hit any open endpoint. S7 has no authentication, so that peer check is spoofable on a network the attacker can reach, but it still limits mass, internet-wide exploitation. There is no EPSS score in the input and the CVE is not in CISA KEV, so exploitation status is: no public exploit identified at time of analysis - though the reporter (Telmo Xavier, CGI España, via VulnCheck) states a working AddressSanitizer PoC exists privately and is being withheld (advisory SNAP7-TX-2026-01). The vuln.today decision label is 'this_week,' not act_now/emergency, which aligns with a confirmed-but-not-yet-publicly-weaponized OT library flaw. Net: a genuine priority for operators running Snap7 passive partners in SCADA/HMI/gateway roles given the impact to industrial processes, but the peer-address requirement and absence of KEV/EPSS signals point to targeted rather than opportunistic exploitation. Note that both the input CVSS 4.0 vector (AC:L with AT:P) and a 3.1 reading (where the peer requirement maps to AC:H) describe the same constraint differently - verify which model your prioritization pipeline expects. |
| Exploit ScenarioDerived | An attacker able to reach a listening Snap7 passive partner on TCP/102, presenting the configured remote peer address (S7 has no authentication, so this is spoofable), begins a BSend sequence that declares a TotalPackSize of up to 65535 bytes but transmits only a short fragment. Because FRecvLast.Size is taken from the declared length rather than the bytes actually reassembled, BRecv (or CheckAsBRecvCompletion on the async path) memcpy's the declared length into the application's receive buffer with only a NULL check, overflowing it and crashing or corrupting the host SCADA/HMI/gateway process. No public exploit exists; the reporter holds a private ASan PoC. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Out-of-bounds write in the Snap7 S7 communications library through 1.4.3 lets a malicious active partner crash or corrupt the process of any application acting as a passive BSend/BRecv partner - typically a SCADA front end, HMI gateway or data collector listening on TCP/102. The library stores the BSend total length declared by the peer (up to 65535) rather than the number of bytes actually reassembled, and BRecv as well as the asynchronous CheckAsBRecvCompletion path hand that length straight to memcpy without any knowledge of the caller's buffer capacity, so even correctly written applications overflow. Vendor patch data indicates a fix is available via PR #41 (no tagged release version is stated in the provided data), an AddressSanitizer PoC was produced by the reporter but withheld rather than published, and no public exploit code or CISA KEV entry was identified at time of analysis; exploitation requires reaching TCP/102 from (or successfully spoofing) the configured peer address, which is the constraint behind the assessed CVSS 3.1 vector AV:N/AC:H/PR:N/UI:N with high integrity and availability impact and no confidentiality impact.
RemediationAI
Vendor patch data states a fix is available (upstream pull request https://github.com/davenardella/snap7/pull/41, with the corresponding VulnCheck advisory at https://www.vulncheck.com/advisories/snap7-through-1.4.3-out-of-bounds-write-via-brecv-and-checkasbrecvcompletion), but no exact patched release number is given in the provided data, so confirm the tagged version in the repository before rolling out; the pull request as shown adds SECURITY.md documentation of the defect, so verify that the merged state of the code actually bounds the copy. Because the API gives callers no way to state their buffer capacity, the practical workaround until a patched build is deployed is to allocate every buffer passed to BRecv or to the OnBRecv callback for the maximum BSend size the peer may declare (up to 65535 bytes, matching the internal pending buffer) rather than for the expected payload - this removes the overflow but adds per-connection memory overhead and does not bound the copy inside the library. Network-side reduction: restrict TCP/102 so that only the configured active-partner address can reach the listening Snap7 instance, and isolate S7 segments behind firewalls; note this is not a cryptographic control, since S7 has no authentication and the peer address can be spoofed on a reachable path, so it only narrows the exposure. Where the passive-partner role is not required, do not run Snap7 listeners on TCP/102 at all. The reporter suggests the long-term library fix: reject a declared TotalLength that exceeds sizeof(RxBuffer.Data) in PickData(), and add a bufSize parameter to BRecv/OnBRecv so the memcpy can be bounded, optionally exporting a public S7_MAX_BSEND_SIZE constant so existing callers can size buffers correctly. Priority: remediate this week per the vuln.today decision label.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Snap7 implements the Siemens S7 protocol suite over ISO-on-TCP (RFC1006, TCP/102) and is widely used to build S7 clients and servers in SCADA, HMI and gateway products. The S7 protocol has no authentication, so a passive partner distinguishes peers only by the configured remote address. In the BSend/BRecv transaction flow, the active peer declares a TotalPackSize at the start of the sequence; in src/core/s7_partner.cpp (HEAD 30f37da) line 853 stores that value into FRecvStatus.TotalLength after only a byte swap, line 930 assigns it to FRecvLast.Size instead of using the received byte count, line 934 passes it to the OnBRecv callback, and lines 1130-1134 (BRecv) and 1161-1165 (CheckAsBRecvCompletion) memcpy that many bytes from the library's internal RxBuffer into the application-supplied pointer. The only guard on either sink is a NULL check. This is a classic CWE-787 out-of-bounds write whose root cause is the absence of any contract for the destination buffer capacity: the public API offers no bufSize parameter, so the library cannot bound the copy and the application has no supported way to declare its allocation. A peer can therefore declare 65535 bytes and send a single short fragment. The issue is explicitly distinct from the internal RxBuffer reassembly defect in PickData() (reported as #15): bounding that reassembly does not fix this path because the size at the memcpy sinks comes from the declared length, not from the number of bytes reassembled. It is the partner-side counterpart of the opReadArea issue (#31, assigned CVE-2026-111280). Affected CPE: cpe:2.3:a:davenardella:snap7:*:*:*:*:*:*:*:*; EUVD records snap7 versions 0 through 1.4.3 as affected.
Know when Snap7 gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
Network-reachable but the attacker must connect from/impersonate the configured peer, so AC:H; S7 has no authentication, so PR:N; memory corruption yields I:H/A:H with no data disclosure (C:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Snap7 through 1.4.3 contains an out-of-bounds write vulnerability in the passive partner that allows a malicious active partner to overflow application buffers by declaring an unvalidated BSend total length. Attackers connecting from the configured peer address can declare up to 65535 bytes and send a short fragment, causing BRecv to memcpy past the buffer and crash or corrupt SCADA, HMI or gateway processes.
Executive ViewAI
CVE-2026-115723 is a high-severity out-of-bounds write in the widely used Snap7 S7 communications library, affecting SCADA front ends, HMI gateways, and data collectors that act as passive BSend/BRecv partners. Successful exploitation could crash or corrupt these critical industrial control systems, disrupting operations and potentially compromising data integrity, which should concern leadership due to the operational and safety implications.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
The Snap7 server component in version 1.4.1, when an attacker sends a crafted packet with COTP protocol the last-data-un
Memory corruption in the snap7 S7 communication library (through version 1.4.3) allows a rogue or impersonated PLC to ov
Out-of-bounds write in davenardella snap7 up to version 1.4.3 allows network-authenticated attackers to corrupt memory b
Memory corruption in davenardella snap7 up to version 1.4.3 allows a network-accessible, high-privileged attacker to cor
EUVD-2026-108711
GHSA-m2jh-hr35-v8vp
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB