Program Download (T0843) is an adversary writing their own logic into a controller, using the same engineering function that commissioning and maintenance teams rely on every day. Once malicious logic is running on a PLC or safety controller, the adversary no longer needs a foothold on the network to affect the process: the controller does the work. MITRE ATT&CK for ICS v20 lists T0843 under Lateral Movement for the Embedded platform and now splits it into three sub-techniques: Download All, Online Edit and Program Append. This guide is for control engineers, OT security engineers and OT SOC analysts who need to tell an approved download from an unauthorised one, stop the second, and respond without making the process less safe. For the wider matrix see the MITRE ATT&CK for ICS Guide, and for the tactic as a whole the ATT&CK for ICS Lateral Movement Tactic Guide.
Key takeaways
- Download is the delivery step for logic attacks. ATT&CK states that Modify Controller Tasking (T0821) and Modify Program (T0889) are the changes that program download transfers to a controller.
- The quiet variants matter most. Online edit and program append let a controller keep running during the transfer, so ATT&CK notes an adversary may prefer them to avoid disturbing the process and to evade detection.
- Real intrusions used vendor software. In the 2026 Iranian Water Campaign, ATT&CK records CyberAv3ngers pushing new configurations with the manufacturers' own PLC programming software; Triton, INCONTROLLER and PLC-Blaster used vendor protocols or APIs, and Stuxnet downloaded code and data blocks to the PLC.
- Detection joins three signals. The v20 analytic correlates a download session from an unapproved source, a preceding mode change to PROGRAM or STOP, and a program hash that no longer matches the approved baseline.
- Physical and procedural controls still work. Run mode key switches, programming protection, a narrow engineering path and verified offline backups block or undo most unauthorised downloads.
What T0843 covers and how the sub-techniques differ
ATT&CK describes program download as transferring a user program to a controller. The granularity of the transfer is set by the vendor management protocol and controller API (ATT&CK names S7CommPlus and TriStation as examples), so "program download" is a high-level term for a suite of vendor-specific calls that configure the controller's user program memory. An adversary may first need Detect Operating Mode (T0868) or Change Operating Mode (T0858) so the controller will accept the transfer.
| Sub-technique | What ATT&CK says it does | Process effect | Detection angle |
|---|---|---|---|
| T0843.001 Download All | Overwrites the entire PLC program and configuration to deploy a new project or make major changes | Typically requires stopping the PLC, which affects control | Loud: stop or program mode transition, process interruption, whole program hash change |
| T0843.002 Online Edit | Updates parts of an existing program without stopping the PLC | Process keeps running | Quiet: no mode stop; rely on protocol monitoring, engineering logs and hash comparison |
| T0843.003 Program Append | Updates parts of an existing program; may or may not require stopping the PLC | Often none visible | Quiet: new blocks or tasks appear; compare block lists and hashes against baseline |
For all three, ATT&CK notes the ability typically relies on access to a workstation with the vendor-specific PLC programming software installed. That makes the engineering workstation and the path from it to the controller the main things to defend. See the Engineering Workstation Security Guide.
Two neighbouring techniques help scope the page. Program Upload (T0845) is the reverse direction, a read from the controller, and often comes first so the adversary can study the logic; see T0845 Program Upload. Modify Program covers what the downloaded logic does once it is there; see T0889 Modify Program.
Procedure examples in ATT&CK
| Example | What ATT&CK records | Defensive lesson |
|---|---|---|
| CyberAv3ngers (G1027), 2026 Iranian Water Campaign | Used the manufacturers' commercial PLC programming software (Studio Logix 5000 Designer, EcoStruxure Control Expert and TIA Portal) to push new configurations; deleted program logic, removed Add-On Instructions and manipulated alarm logic and HMI screens | Legitimate tools leave no malware to find; control who can reach controllers and verify running logic against a baseline |
| Triton (S1009) | Leveraged the TriStation protocol to download programs onto a Triconex Safety Instrumented System | Safety controllers need the narrowest programming path of all |
| Triton Safety Instrumented System Attack (C0030) | TEMP.Veles downloaded multiple rounds of control logic to SIS controllers through a program append operation | Program append can be repeated many times; alert on every append, not only full downloads |
| INCONTROLLER (S1045) | Used the CODESYS protocol to download programs to Schneider PLCs, and modified logic on Omron PLCs using program download or backup transfer functions available through the HTTP server | Disable or restrict controller web servers and management services that are not needed |
| Stuxnet (S0603) | Infection sequence of code blocks and data blocks downloaded to the PLC to alter its behaviour | Block level comparison catches added or changed blocks that a running process hides |
| PLC-Blaster (S1006) | Used the PLC communication and management API to load executable Program Organization Units | Any host that can speak the management API can load code; restrict reachability |
The joint advisory on the 2026 activity (AA26-097A, published 7 April 2026 and updated 22 July 2026 by FBI, CISA, NSA, EPA, DOE, US Cyber Command's Cyber National Mission Force and the Department of the Treasury) adds detail. It describes the actors downloading malicious project files to PLCs with configuration software, in one case adding logic that overrode instruction sets maintaining safe operating parameters. Affected products named include Rockwell Automation CompactLogix and Micro850, Schneider Electric Modicon M340 (BMX P34) and Siemens S7-1200, reached over internet-exposed ports including 44818, 2222, 102 and 502. See the Water and Wastewater Cybersecurity Guide.
Detection: the ATT&CK v20 analytic
MITRE's detection strategy for T0843 (DET0752, Detection of Program Download) has one embedded-platform analytic. Each sub-technique has its own strategy as well: DET0913 for Download All, DET0915 for Online Edit and DET0914 for Program Append. ATT&CK applies an OT operational fidelity gate: alert only when the action is not attributable to an authorised operator or engineering source for that target and function, and falls outside an approved change window or lacks change control context; suppress activity that fully matches approved maintenance, commissioning or tested procedures.
| Log source in DET0752 | What the analytic looks for | How to build it |
|---|---|---|
| Network content (NSM) | S7comm Download Block, CIP Download Program or DNP3 program file transfer to a device from a source not on the engineering workstation list, within the window after a mode change | Passive OT monitoring with protocol decoding on the conduit to the controller zone |
| Operational database alarm events | Device transitions to PROGRAM or STOP mode without operator acknowledgement and without an open change ticket reference | Forward controller diagnostic and mode events from the SCADA or historian alarm journal |
| Asset inventory program hash | Post-transfer program hash does not match the last authorised baseline | Scheduled or event-driven comparison of the running program against the approved copy |
| Engineering workstation application log | Program download session logged without a corresponding change ticket reference | Collect engineering software audit logs where the product records download events |
Online edit and program append may not trigger a stop mode event, so the network and hash signals carry more weight for them. AA26-097A gives the same direction: monitor network traffic for functions that change operating mode or modify programs, compare running project files against known-good logic using vendor integrity tools, and check Add-On Instructions for unauthorised changes. Internet exposure itself is covered in T0883 Internet Accessible Device. See the OT Network Security Monitoring Guide and ICS T0858 Change Operating Mode.
Prevention: ATT&CK mitigations in practice
| Mitigation | ATT&CK guidance for T0843 | Practical application |
|---|---|---|
| M0800 Authorization Enforcement | Restrict download of programs, including online edits and program appends, to certain users such as engineers and field technicians, preferably with role-based access | Use controller and project role settings; give operators view rights only |
| M0804 Human User Authentication | Require authentication for all remote or local management sessions | Turn on controller passwords and replace defaults |
| M0801 Access Management | Authenticate all access before allowing modification of state, logic or programs; centralised authentication helps at scale | Put an authenticating jump host in front of controllers that cannot authenticate users |
| M0813 Software Process and Device Authentication | Authenticate connections from software and devices to protected management functions | Use certificate based trust between engineering software and controller where supported |
| M0802 Communication Authenticity | Device management protocols should authenticate all messages | Enable secure communication modes in newer firmware after testing |
| M0945 Code Signing | Use code signatures to verify integrity and authenticity of downloaded programs | Enable where the controller supports signed projects |
| M0947 Audit | Verify integrity of downloaded programs; CRCs and checksums are not cryptographically secure, so prefer SHA-2 or SHA-3 | Store SHA-256 hashes of approved programs and compare after every change |
| M0930, M0937, M0807 | Segment; filter protocols and payloads associated with download; host-based allowlists so devices accept connections only from known engineering workstations | Permit management protocols to controllers only from named engineering hosts |
AA26-097A adds vendor-specific steps: set Rockwell controllers' physical mode switch to RUN and use program or remote mode only for updates, and enable programming protection such as key-switch protection in TIA Portal on Siemens devices that support it. It notes that validating the project file first matters, because the mode change locks in the current file. See the PLC Security Guide.
Where identity fits
Every download is made by someone, through some account, on some host. Shared engineering logins, controller passwords held by integrators after a project ends, and vendor remote access accounts that never expire all widen who can download logic. Use named engineering accounts, time-bound integrator and vendor access tied to a change ticket, and rotation of controller and project passwords when people leave. Treat the service accounts of jump hosts and automated backup tools as privileged, because they can reach every controller. See the OT and ICS Identity and Access Guide and the OT Third-Party and Integrator Access Guide.
How to implement
- Baseline: record the approved program for every controller, with a SHA-256 hash, block list and version, stored offline. See the OT Backup, Recovery and Golden Image Guide.
- Name the legitimate sources: list the engineering workstations and jump hosts allowed to program each controller, and the change windows.
- Close the internet path first: remove any inbound exposure of controller management ports, as AA26-097A puts first in its immediate steps.
- Restrict at the conduit: allow management protocols to controllers only from the named sources; log denies for a period before enforcing so missed legitimate flows show up.
- Deploy DET0752-style alerts in alert-only mode through at least one maintenance cycle, tune with control engineers, then route to the OT SOC queue.
- Enable controller protections: passwords, programming protection and run mode key positions, tested first on a spare controller, with previous settings recorded for rollback.
- Link changes to tickets: require a change reference in the engineering workflow so the analytic can separate approved from unapproved downloads.
Decision guidance
- Controllers with access control and signing: enable them after testing; the cost is credential and key management.
- Legacy controllers without authentication: rely on the physical key switch, a single permitted engineering path, network allowlists and hash comparison, and plan replacement.
- Small sites with remote support: the highest-value steps are no internet exposure, one hardened jump host with MFA, run mode key positions and offline backups.
- Large or safety-critical sites: add protocol-aware monitoring, engineering log collection, automated hash comparison and a separate path to safety controllers. See the Safety Instrumented Systems Security Guide.
Responding to an unauthorised download
Unlike an upload, a download may already be changing the process. Process safety comes first and operations lead every action on the controller.
- Confirm with operations and engineering whether the change was planned. If not, have operations assess the process state and decide whether manual or local control is needed.
- Preserve evidence before changing anything: the network capture, engineering workstation logs, controller diagnostic buffer and an upload of the running program for comparison.
- Contain the path: block the source host at the conduit, disable the account used and remove remote access until the scope is known.
- Restore known-good logic from a backup verified free of malicious logic, as AA26-097A advises, in a window operations approves, and confirm the hash afterwards.
- Look wider: check other controllers reachable from the same host, HMIs and modems for the same activity, and report to CISA or your national authority where required.
See the OT Incident Response Guide.
Detection and measurement
- Baseline coverage: percentage of controllers with a current, hashed, offline program baseline.
- Reachability: number of hosts able to reach controller management ports, against the approved list (target: equal).
- Protection coverage: percentage of controllers in run mode with programming protection or passwords enabled where supported.
- Unexplained downloads: count of download, online edit or append sessions without a change reference.
- Hash drift: controllers whose running program differs from baseline, and time to explain each one.
Framework mapping
| Framework | Reference | How it applies |
|---|---|---|
| MITRE ATT&CK for ICS v20 | T0843, T0843.001, T0843.002, T0843.003; M0800, M0801, M0802, M0804, M0807, M0813, M0930, M0937, M0945, M0947; DET0752 | Technique, sub-techniques, mitigations and analytic |
| NIST SP 800-53 Rev. 5 | CM-3 Configuration Change Control, CM-5 Access Restrictions for Change, SI-7 Software, Firmware, and Information Integrity, AC-3 Access Enforcement, SC-7 Boundary Protection, SI-4 System Monitoring, CP-9 System Backup | Change control, integrity, access, network and backup controls |
| NIST CSF 2.0 | PR.PS-01, PR.AA-05, PR.IR-01, DE.CM-01 | Configuration management, access permissions, network protection and monitoring |
Common failure patterns
- Controllers reachable from the internet: the 2026 activity in AA26-097A targeted internet-exposed PLCs on their native ports.
- Key switches left in program or remote mode: the controller accepts downloads from anyone who can reach it.
- Only full downloads are alerted: online edits and appends that keep the process running pass unseen.
- Backups never verified: restoring a backup taken after the compromise reinstalls the adversary's logic.
- Checksums treated as integrity: ATT&CK notes CRCs and checksums are not cryptographically secure.
- Integrator and vendor access never removed: old credentials keep a download path open.
Practitioner checklist
- Remove all internet exposure of controller management ports.
- Keep a hashed, offline baseline of every controller program and check it after each change.
- Restrict management protocols to named engineering hosts at every conduit.
- Alert on download, online edit and append sessions from unapproved sources or without a change reference.
- Keep key switches in run mode outside approved programming windows.
- Enable controller passwords, programming protection and signing where supported, after testing.
- Use named, time-bound engineering and vendor accounts.
- Rehearse restoring verified logic with operations.
Standards and references
- MITRE ATT&CK for ICS: Program Download (T0843)
- MITRE ATT&CK: Detection of Program Download (DET0752)
- MITRE ATT&CK: CyberAv3ngers (G1027)
- MITRE ATT&CK: Triton (S1009)
- FBI, CISA and partners: AA26-097A, Iranian-Affiliated Cyber Actors Exploit Programmable Logic Controllers Across US Critical Infrastructure
- Mandiant: Attackers Deploy New ICS Attack Framework TRITON
- NIST: SP 800-82 Rev. 3, Guide to Operational Technology (OT) Security
Related NHI Mgmt Group resources: MITRE ATT&CK for ICS Guide · PLC Security Guide · T0889 Modify Program · Engineering Workstation Security Guide