BACnet Security: Building Automation Attack Surface
BACnet (Building Automation and Control Network) is the ASHRAE 135 standard for HVAC, lighting control, fire safety, access control, and energy management systems. It operates primarily as BACnet/IP (UDP port 47808) and BACnet MS/TP (RS-485 serial). Building control systems — often dismissed as low-risk — are increasingly targeted because they share networks with IT infrastructure and can provide physical access to facilities.
BACnet Object Model
BACnet uses an object-oriented data model. Every controllable element is a BACnet object with properties. Key services allow reading and writing these objects:
| Service | Direction | Security Risk |
|---|---|---|
| ReadProperty | Client → Server | Discloses device configuration, setpoints, states |
| WriteProperty | Client → Server | Modifies setpoints, enables/disables equipment |
| Who-Is / I-Am | Broadcast | Device discovery — maps all BACnet devices on a network |
| ReinitializeDevice | Client → Server | Reboot or factory-reset BACnet devices |
| WritePropertyMultiple | Client → Server | Mass configuration change in a single request |
A Who-Is broadcast on UDP 47808 returns I-Am responses from every BACnet device on the subnet — a complete device inventory with no authentication required. ReadProperty and WriteProperty services in base BACnet/IP also require no credentials.
Security Vulnerabilities
- Unauthenticated object access — any IP host on the BACnet subnet can read and write all objects
- Device discovery via broadcast — Who-Is floods the network with I-Am responses, mapping the entire BAS topology
- Physical safety impact — writing to HVAC temperature setpoints, fire suppression enable/disable, or access control door commands has direct physical effects
- IT network convergence — many building systems share IT VLANs or have internet-exposed BACnet controllers for remote management
- Vendor backdoors — many BACnet controllers have undocumented vendor-specific services with hardcoded credentials
BACnet/SC (Secure Connect, 2020)
ASHRAE 135-2020 Addendum bj introduced BACnet/SC — a WebSocket-based transport with TLS 1.3 and X.509 certificate authentication. BACnet/SC uses a hub-and-spoke topology with a central BACnet/SC Hub. Every device authenticates with an Operational Certificate before establishing a connection. The Hub validates certificates and maintains routing tables.
Defences
| Control | SR | Effect |
|---|---|---|
| BACnet/SC with TLS 1.3 | SR 3.1, SR 4.1 | Authenticated, encrypted BACnet sessions |
| VLAN isolation for BAS | SR 5.1 | BACnet devices on dedicated VLAN, no IT→BAS path |
| Block UDP 47808 at perimeter | SR 5.2 | Prevent BACnet broadcasts from reaching IT network |
| Disable unused services | SR 7.7 | Disable ReinitializeDevice, remove default credentials |
Examine BACnet object model, Who-Is discovery, and WriteProperty attack in the interactive building automation security lab.
Open BACnet Protocol Lab →