← Back to Feed CACHED · 2026-07-01 12:05:54 · CACHE_KEY CVE-2026-12576
CVE-2026-12576 · CWE-924 · Disclosed 2026-07-01

DVP80ES3 with Improper Enforcement of Message Integrity During Transmission in a Communication Channel…

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Somebody can shout over the PLC's radio and the line stops

CVE-2026-12576 is a CWE-924 Improper Enforcement of Message Integrity flaw in the Delta Electronics DVP80ES3 — a compact PLC in the DVP-ES3 series widely deployed on packaging, conveyor, and small-batch manufacturing lines. The protocol channel does not adequately verify message authenticity/integrity, so a network-reachable attacker can inject or tamper with control-plane traffic and drive the controller into a fault or halt state. The CVSS vector (AV:N/AC:L/PR:N/UI:N/C:N/I:N/A:H) scores only availability impact, but on a PLC 'availability loss' means a physical process stops — press, mixer, conveyor, valve.

Vendor severity of HIGH (7.5) is honest for the impact captured in the vector, but it undersells the *operational* reality. IT-style CVSS treats a crashed daemon as an inconvenience; on a controller sitting between logic and steel, a crash is an unplanned shutdown with cascading downtime, potential scrap, and — depending on the process — safety implications. Reassessed to HIGH (7.8) with the OT context floor in force.

"PLC message-integrity flaw. Vendor score is fair — but on OT the impact is a stopped process, not a stopped webpage. Do not downgrade."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Reach the PLC on the control network

The attacker must have IP reachability to the DVP80ES3's Ethernet interface (typically TCP 502 Modbus or Delta's DVP protocol port). In practice this means being on the plant network, on an engineering VLAN, or transiting a misconfigured IT/OT bridge. Reachability is the gating condition — the CVE is AV:N but PLCs are rarely reachable from the internet.
Conditions required:
  • IP route to the PLC's Ethernet port
  • control-network segment access or a compromised engineering workstation
Where this breaks in practice:
  • Purdue-model segmentation and DMZ jump hosts
  • OT firewalls (Claroty, Nozomi, Dragos) alarming on out-of-baseline flows
  • PLCs on isolated cell networks with no routable path
Detection/coverage: Passive OT monitoring (Nozomi Guardian, Claroty CTD, Dragos) will flag new source IPs talking Modbus/DVP to a PLC — high-signal alert on most sites.
STEP 02

Craft a forged/tampered control message

Because the protocol channel does not enforce integrity, the attacker can inject a message the PLC will parse and act upon, or replay/mangle a legitimate one. Tooling: smod (Modbus exploit framework), pymodbus, Scapy with Modbus/DVP layers, or plcscan for target enumeration. No credentials, no crypto handshake to defeat.
Conditions required:
  • knowledge of the DVP80ES3 protocol frame format (public)
  • ability to send raw TCP to the PLC port
Where this breaks in practice:
  • some sites deploy Waterfall/Owl unidirectional gateways that make injection non-viable
  • process-aware IDS (Dragos, Claroty) may flag anomalous function codes
Detection/coverage: Signature and behavior detections exist in mature OT IDS platforms; commodity IT EDR/SIEM will miss this entirely.
STEP 03

Trigger fault / halt / DoS on the controller

The tampered message drives the PLC into an error state, watchdog reset, or unresponsive condition. The physical process halts — motor drives coast down, actuators freeze in last commanded state, HMI loses telemetry. Depending on the safety design, this either triggers a safe-shutdown or leaves the line in an ambiguous state that requires manual intervention and lockout/tagout to recover.
Conditions required:
  • step 2 delivered
  • no upstream filter dropped the malformed frame
Where this breaks in practice:
  • hardware watchdogs and safety PLCs (SIL-rated) will drive the process to a safe state — availability lost, safety preserved
  • operator can manually cycle power and reload the program from backup
Detection/coverage: SCADA/HMI will alarm immediately on comms loss; production MES will register unplanned downtime.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone reported as of disclosure day (2026-07-01). ICS-CERT campaigns targeting Delta PLCs historically exist but no CVE-2026-12576-specific activity yet.
KEV statusNot listed on CISA KEV.
EPSSToo new for a stable EPSS score; expect <1% in the first 30 days typical of ICS CVEs without public PoC.
Public PoCNo named public PoC at disclosure. pymodbus / smod / Scapy are trivially adaptable if protocol details are documented in the advisory.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H — network-reachable, no auth, availability-only impact. Score 7.5 (HIGH).
Affected productDelta Electronics DVP80ES3 series PLC — confirm exact firmware range in the Delta / CISA ICS advisory.
Fixed versionRefer to Delta Electronics PSIRT advisory for the DVP-ES3 firmware update; CISA ICSA advisory typically publishes same-day.
Exposure dataShodan / Censys / FOFA searches for Delta DVP-series controllers on the public internet historically return a few hundred to low thousands of hits globally — non-zero but small. Most installs are behind plant firewalls.
Disclosure2026-07-01, coordinated via CISA ICS-CERT and Delta Electronics PSIRT.
WeaknessCWE-924 — Improper Enforcement of Message Integrity During Transmission in a Communication Channel.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (7.8/10)

Held at HIGH because the role multiplier — this is a PLC controlling a physical process, and 'availability loss' equals unplanned line shutdown or worse. Network reachability is the primary friction, but OT-segmentation failures are common enough (engineering laptops, flat plant networks, vendor VPNs) that we cannot downgrade below the ICS-controller floor.

HIGH CVSS interpretation and CWE-924 mechanics
MEDIUM exact affected firmware range pending advisory read
HIGH role-based blast radius assessment

Why this verdict

  • Role multiplier — OT/ICS controller: DVP80ES3 is a PLC. The documented chain ends in a stopped physical process. Per the deployment-role floor rule, the affected component is canonically a high-value-role component (ICS controller) and the floor is at minimum HIGH.
  • Network attack vector, no auth: AV:N/AC:L/PR:N/UI:N — anyone who can route packets to the device wins. There is no crypto or authentication step to defeat.
  • Segmentation friction is real but leaky: most DVP80ES3 units sit behind plant firewalls, which is why we don't push to CRITICAL. But OT segmentation failures via engineering workstations, jump hosts, vendor remote access, and flat networks are the single most common OT-incident root cause — enough to hold at HIGH, not downgrade to MEDIUM.
  • Availability-only vector understates OT reality: the CVSS score treats A:H as a DoS. On a PLC, A:H is an unplanned production stop with potential safety, scrap, and regulatory consequences. The 7.5 label is fair on the IT scale; the operational cost is materially higher.

Why not higher?

Not CRITICAL because the CVE does not grant code execution, integrity of process logic, or persistent compromise — it is a denial condition. Additionally, well-segmented OT networks and unidirectional gateways make the network-reachability precondition non-trivial for the majority of installed base.

Why not lower?

Not MEDIUM because a PLC-halting bug with AV:N/PR:N on an unauthenticated protocol channel is exactly the class of flaw that has caused real-world OT incidents. Downgrading a controller DoS to MEDIUM on the assumption 'the network is segmented' is the same reasoning that has failed in every post-incident report from Colonial to Norsk Hydro.

05 · Compensating Control

What to do — in priority order.

  1. Enforce strict ACLs at the OT firewall for DVP80ES3 traffic — Whitelist only the engineering workstations and HMIs that legitimately talk to each PLC — deny by default. Deploy within 30 days per the noisgate HIGH mitigation SLA.
  2. Deploy passive OT monitoring signatures for anomalous DVP/Modbus frames — Push Nozomi/Claroty/Dragos rules to alert on unexpected source IPs, unusual function codes, or malformed frames toward DVP80ES3 units. Same 30-day window — most sites already have the sensors, this is a rule push, not a deployment.
  3. Audit and lock down engineering workstation dual-homing — Engineering laptops that bridge IT and OT are the single most common bypass of segmentation. Enforce dedicated OT-only workstations or session-brokered access (CyberArk PSM, BeyondTrust, Claroty SRA) within 30 days.
  4. Verify safety-PLC / SIL logic drives to a safe state on comms loss — Confirm the process design tolerates an unplanned PLC halt safely. This is a design review, not a patch — but it is what turns a HIGH into a MEDIUM in your specific plant.
  5. Schedule the vendor firmware update in the next maintenance window — Delta firmware updates require a controlled outage. Plan the update inside the noisgate 180-day HIGH remediation SLA; do not chase a same-week patch that risks an unplanned outage.
What doesn't work
  • IT-side EDR — does not run on the PLC and does not see OT protocol traffic.
  • Application-layer WAFs — Modbus/DVP is not HTTP; WAF is the wrong tool.
  • Simply 'putting the PLC on its own VLAN' — VLANs are not security boundaries against an attacker who has already reached the L2 switch or a dual-homed engineering laptop.
  • Enabling authentication on the HMI — the vuln is in the PLC protocol channel, not the HMI login.
06 · Verification

Crowdsourced verification payload.

Run this on an auditor workstation or engineering laptop that has network reachability to the target PLC. Invoke as python check_dvp80es3.py 10.20.30.40 (replace with the PLC IP). Requires network reachability only; no credentials. This is a passive banner/identity check — it does NOT send malformed traffic and will not affect the PLC.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
# noisgate DVP80ES3 CVE-2026-12576 exposure check
# Passive reachability + Modbus device-identity probe. Non-invasive.
# Exit codes: 0 PATCHED / not reachable, 1 VULNERABLE / needs review, 2 UNKNOWN

import socket, struct, sys

VULNERABLE_MODELS = ('DVP80ES3',)  # extend once advisory lists exact firmware range
MODBUS_PORT = 502

def modbus_read_device_id(ip, port=MODBUS_PORT, timeout=3):
    # Modbus function 43 / MEI 14 - Read Device Identification
    tx_id = 0x0001
    pdu = struct.pack('>BBBB', 43, 14, 1, 0)  # fn, MEI, ReadDevIdCode=basic, ObjectId=0
    mbap = struct.pack('>HHHB', tx_id, 0, len(pdu)+1, 0xFF)
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(timeout)
        s.connect((ip, port))
        s.send(mbap + pdu)
        data = s.recv(1024)
        s.close()
        return data
    except Exception:
        return None

def main():
    if len(sys.argv) != 2:
        print('usage: check_dvp80es3.py <ip>')
        sys.exit(2)
    ip = sys.argv[1]
    resp = modbus_read_device_id(ip)
    if resp is None:
        print(f'UNKNOWN {ip} - not reachable on tcp/502')
        sys.exit(0)
    try:
        text = resp.decode('latin-1', errors='ignore')
    except Exception:
        text = ''
    for model in VULNERABLE_MODELS:
        if model in text:
            print(f'VULNERABLE {ip} - identifies as {model} (confirm firmware vs Delta PSIRT advisory)')
            sys.exit(1)
    print(f'UNKNOWN {ip} - reachable, model string not matched. banner={text!r}')
    sys.exit(2)

if __name__ == '__main__':
    main()
07 · Bottom Line

If you remember one thing.

TL;DR
Treat this as a HIGH. Monday morning: inventory every DVP80ES3 on the plant network, confirm each one sits behind an OT firewall with a source-IP whitelist, and push Nozomi/Claroty/Dragos rules to alarm on unexpected DVP/Modbus talkers. Under the noisgate mitigation SLA for HIGH, those compensating controls (ACL tightening, dual-homing audit, IDS rules) must be in place within 30 days. The Delta firmware update itself follows the noisgate remediation SLA for HIGH — schedule the flash in your next controlled maintenance window inside 180 days; do NOT chase an unscheduled outage to patch a controller when segmentation buys you the time. Not KEV-listed and no public PoC yet, so no 'patch within hours' override applies.

Sources

  1. CISA ICS Advisories index
  2. Delta Electronics Product Security
  3. CWE-924: Improper Enforcement of Message Integrity
  4. Delta Electronics CVE catalog (OpenCVE)
  5. CISA ICS advisory: Delta Electronics DTM Soft (reference format)
  6. NVD CVE record
  7. CISA Known Exploited Vulnerabilities Catalog
  8. FIRST EPSS
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.