Skip to main content

Snap7 EUVDEUVD-2026-108711

| CVE-2026-115723 HIGH
Out-of-bounds Write (CWE-787)
2026-10-23 VulnCheck GHSA-m2jh-hr35-v8vp
8.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach passive partner on TCP/102
  2. Delivery
    Impersonate configured remote peer address
  3. Exploit
    Declare 65535-byte BSend, send short fragment
  4. Execution
    BRecv memcpy writes past receive buffer
  5. Impact
    Crash 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

snap7 0 ≤1.4.3

Affected Packages

euvd snap7 no fix

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

Vendor (VulnCheck) PRIMARY 8.3 HIGH
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
vuln.today AI 7.4 HIGH

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).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.6%
Top 51% exploitable
Prevalence
Low
niche open-source S7-PLC communication library, industry-specific OT footprint
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy