ICS/OT

Five US Agencies Warn

AI-Generated Python Scripts Are Probing Siemens S7 PLCs. NSA, CISA, FBI, DOE and EPA issued a joint advisory on August 19, 2026 covering active targeting of Siemens S7-200 through S7-1500 PLCs.

Matt Lucas  |  August 19, 2026  |  5 min
Editorial hero illustration
5
US agencies on the advisory
S7-200 to S7-1500
PLC families targeted
102/TCP
S7comm port abused
7
CI sectors named
TL;DR
  • What: NSA, CISA, FBI, the Department of Energy and the EPA jointly warned on August 19, 2026 that threat actors are using AI-generated Python exploitation scripts against internet-exposed Siemens S7 series PLCs.
  • Impact: The tooling gives read and write access to PLC memory, configuration data and ladder logic programs, enough for data theft, equipment damage, extended downtime or a safety incident.
  • Fix / mitigation: Inventory every S7-200, S7-300, S7-400, S7-1200 and S7-1500, pull them off the public internet, apply current Siemens firmware, and enforce strong PLC authentication and write protection.
  • Who's at risk: Critical Manufacturing, Energy, Water and Wastewater, Chemical, Food and Agriculture, Commercial Facilities and the Defense Industrial Base.

On August 19, 2026, five US agencies put their names on the same document: NSA, CISA, the FBI, the Department of Energy and the Environmental Protection Agency. The subject is active targeting of Siemens S7 series programmable logic controllers in US critical infrastructure, and the notable detail is the tooling. Attackers are running AI-generated Python exploitation scripts that talk native S7comm to the controller and are packaged to look like legitimate OT monitoring software.

Read the capability description carefully, because it is the whole story: read and write access to PLC memory, configuration data, and ladder logic programs. That is not a denial of service or a nuisance crash. That is control of the process logic, with the ability to change what a controller does and to lie to the operator about it.

Caver coverage, checked against this advisory

Already detected, across six OT protocols

65
OT detections in a standard deployment
6
Industrial protocols, not one vendor
82
Flow, segmentation and config-change rules

The advisory behaviour, protocol by protocol

Command from a non-engineering or non-master source
S7commModbusDNP3IEC-104CIPBACnet
Enumeration and sweeps
S7commModbusDNP3IEC-104CIPBACnet
Protocol traffic from the IT VLAN
S7commModbusDNP3IEC-104CIPBACnet
Clock and time manipulation
S7commModbusDNP3IEC-104CIPBACnet
Program or firmware change to the controller
S7commModbusDNP3IEC-104CIPBACnet
Sequential scanning of port 102, the reconnaissance stage
firewall and flow logsdecoded S7comm
A human at the keyboard versus an automated script
endpointnetworkbroken out per event

Direct answers to CISA's hunt list

"Enumeration of CPU properties" is SZL read burst. The system status list is the CPU property store.
"Connections from non-engineering workstations" checks every control command against your declared engineering stations.
"Write operations outside change windows" reads your maintenance calendar, not a config file.
"Configuration changes without work orders" joins the change to the work order and says so when it cannot.
Where the edges are. Port-102 sweep detection ships as a content rule that reads firewall and flow logs, so it works whether or not you decode the protocol. Human-at-the-keyboard versus automated script is fully covered and broken out, across endpoint and network telemetry; nobody else separates those. Per-data-block read and write patterns are on the roadmap and deliberately unhurried: we are careful about anything that reasons over controller program memory, and this advisory does not need it, because the access it describes is blocked at the network layer.

Which devices are in scope

The advisory names five product families: S7-200, S7-300, S7-400, S7-1200 and S7-1500. That range spans roughly two decades of Siemens automation hardware. The S7-200 and S7-300 lines are long past their design assumptions about network exposure and were built when the security model was a locked cabinet and an air gap. The S7-1200 and S7-1500 have real access protection features, but they ship in configurations where those features are optional and are frequently deployed with them off.

No CVE identifiers are called out in the advisory, and that is deliberate. Most of this activity is not exploitation of a named memory corruption bug. It is abuse of documented protocol functionality against devices that were never supposed to be reachable from the internet in the first place.

The intrusion chain

The reported sequence is short, which is part of why it works.

There is no phishing stage in this chain, no macro, no initial access broker. The exposure is the initial access. If your controller answers on 102/TCP from an arbitrary source address, the attacker has already completed the hard part of most intrusions before writing a line of code.

python-snap7 is not the vulnerability

snap7 is a legitimate, widely used open source library for S7 communication, and plenty of vendors and integrators depend on it. Blocking or removing it accomplishes nothing. The defensive control is network reachability and PLC access protection, not library allowlisting. Anyone can rebuild the same functionality in an afternoon.

What the AI part actually changes

Ignore the headline framing for a moment. Large language models do not grant new access to a PLC and do not defeat access protection. What they change is who can write competent OT tooling and how fast. Historically, S7comm exploitation required someone who understood ladder logic, data block layout, Siemens addressing conventions and the protocol quirks between the S7-300 and the S7-1500. That was a small population, mostly nation state teams and a handful of researchers.

An AI assistant that can produce working python-snap7 code compresses that learning curve from months to hours. The result is a wider pool of capable operators, faster iteration against a target, and tooling tailored to a specific site rather than reused off the shelf. For defenders, the practical consequence is that indicator based detection ages faster. Two campaigns against two utilities may share zero file hashes because the scripts were generated per target.

Reconnaissance now, disruption later

The agencies characterize the observed activity as focused on persistent reconnaissance, potentially preparing attackers for disruption. That framing matters for how you triage. The stated risk set includes data theft, equipment damage, extended downtime and safety incidents, but the current behavior is mapping and dwelling, not detonating.

This is consistent with the pattern set elsewhere. Hackers hit Minnesota water utilities in July 2026, and Iranian linked actors targeted Rockwell Automation PLCs in April 2026. Small water and wastewater systems keep surfacing in these reports for the same reason every time: minimal staff, remote access for a contract operator, and controllers reachable from the internet because that was the cheapest way to support them.

Do these five things

The detection gap most sites have

Most OT networks monitor process values, not protocol semantics. A controller behaving normally after a logic write looks fine on the HMI. Passive network monitoring that decodes S7comm function codes, or at minimum a firewall rule that logs every 102/TCP session with its source, closes the gap for a fraction of the cost of an OT SOC platform.

Also shipped in a standard deployment

On the IT VLAN row

Traffic crossing a segmentation boundary was already caught three ways: the firewall allow, the flow itself, and the config change that enabled it. None depend on the protocol. Reading this advisory we added the per-protocol version for the four that lacked it, so a finding names S7comm on 102/TCP from a non-engineering host instead of an unusual flow to investigate. Triage time, not new visibility.

We have covered this pattern all year

RedEye has worked industrial control systems for years. We track federal advisories as they publish, brief local utilities and operators on what applies to them, and build the detection content before the next one lands.

The limit of this advisory

No threat actor is named, no CVE is listed, no exposure count is published, and no file hashes are provided. Defenders are being handed a behavior pattern and told to go look. That is thin for anyone hoping to run a detection rule and move on, and it makes attribution and prioritization harder for teams juggling limited OT maintenance windows.

What the advisory does give you is a specific protocol, a specific port, five specific product families and seven sectors. That is enough to run an exposure audit this week. If the answer to "how many S7 controllers of ours answer from the public internet" is anything other than zero, and you can prove it, you have found the finding. The AI angle is the part that will get quoted. The port forward is the part that will get you breached.

Questions about your exposure?

RedEye Security provides assessments for organizations that need to understand their real risk.

Talk to us