Fieldbus · Est. 1979

Modbus TCP/RTU Security: No Auth, No Encryption

Modbus was created by Modicon in 1979 for serial communication between PLCs. It has three variants: Modbus RTU (compact binary over serial), Modbus ASCII (human-readable over serial), and Modbus TCP (encapsulated over Ethernet, port 502). All three share the same security posture: none.

Any device on a Modbus TCP network can read sensor values, write setpoints, and toggle actuator outputs — with no credentials required. The protocol has no concept of identity, sessions, or permissions.

Protocol Architecture

Modbus uses a master-slave (initiator-responder) model. The master sends requests; slaves respond. Each request carries a Function Code (FC) that specifies the operation:

FCOperationSecurity Risk
0x01Read CoilsDiscloses digital output states
0x03Read Holding RegistersDiscloses process values, setpoints
0x05Write Single CoilToggles actuators (pump on/off)
0x06Write Single RegisterModifies setpoints — primary attack vector
0x10Write Multiple RegistersMass parameter modification

A Modbus TCP frame adds a 6-byte MBAP header (Transaction ID, Protocol ID, Length, Unit ID) before the standard PDU. No authentication fields exist anywhere in the frame.

Security Vulnerabilities

CWE-306 — Missing Authentication for Critical Function. Any host with TCP connectivity to port 502 can issue write commands. CWE-319 — Cleartext transmission. All register values, including chemical setpoints and safety limits, are transmitted unencrypted.

Real-World Incidents

Defences (IEC 62443)

ControlIEC 62443 SREffect
Network segmentationSR 5.1PLCs on isolated VLAN, no IT→OT direct path
FC allow-listing firewallSR 5.2Block FC05/FC06/FC10 from non-SCADA IPs
OT-aware IDSSR 6.2Alert on FC03/FC06 from unknown master IPs
Encrypted VPN tunnelSR 4.1Wrap Modbus TCP in IPsec for WAN links
⚡ Simulate a Modbus MITM Attack

Walk through ARP spoofing, register injection, and false data injection against a simulated Modbus TCP network — then apply IEC 62443 defences.

Open Attack Simulator →