BACnet and Modbus run the heating, cooling, lighting, metering and access-adjacent systems in most commercial buildings. Both were designed for closed, trusted networks, and both will accept a correctly formed write command from anyone who can reach them. Securing them is mostly an architecture problem, not a product problem.
The problem in real buildings
A typical building management system (BMS) has three layers. At the bottom are field controllers, sensors and actuators, often on BACnet MS/TP or Modbus RTU over RS-485. In the middle are automation and network controllers that route between serial buses and IP, usually speaking BACnet/IP on UDP 47808 and Modbus TCP on TCP 502. At the top sit the supervisory servers, operator workstations, historians and, increasingly, cloud analytics connectors.
In practice these layers are rarely separated. It is common to find a single flat VLAN shared by controllers, supervisory servers, IP cameras, meters and the integrator's remote access router. Sometimes that VLAN is routed to the corporate network so facility managers can open the graphics from their laptops. Sometimes a BACnet router or a Modbus gateway is reachable from the internet because a port forward was added during commissioning and never removed.
The consequence is that the protocols' design assumptions no longer hold. Anyone, or any compromised device, with network reach to a controller can enumerate it, read its points and write to them.
Why the protocols lack authentication
Modbus
Modbus dates from 1979 and was built for serial links between a master and a small number of slaves. Modbus TCP wraps the same application data unit in a TCP header. There is no concept of a user, a session or a credential. A request to write a holding register (function code 06 or 16) or force a coil (function code 05 or 15) is executed if the unit identifier and address are valid. Diagnostic and device identification function codes can reveal model and firmware details to anyone who asks.
The Modbus Organization published a Modbus/TCP Security specification that wraps Modbus in TLS (registered on TCP 802) with X.509 certificates and role-based authorization carried in the certificate. Support in building controllers remains limited, so most sites should assume plain Modbus TCP for the life of the installed base.
BACnet
BACnet (ASHRAE 135, also published as ISO 16484-5) is richer, but classic BACnet/IP is equally trusting. Discovery services such as Who-Is and Who-Has let any node find every device and object on the internetwork. ReadProperty and WriteProperty work without authentication. Writes go into a priority array, so a write at a high priority can override operator commands and schedules until it is relinquished. A few services, notably DeviceCommunicationControl and ReinitializeDevice, accept an optional password, but it is a cleartext string, often left at a vendor default, and it does not protect ordinary point writes.
An earlier network security framework was defined in the standard but saw very little implementation in products. For classic BACnet/IP, the practical position is the same as Modbus: confidentiality, integrity and authentication must come from the network around the protocol.
BACnet/IP broadcast and BBMD exposure
BACnet/IP relies on local broadcasts for discovery and for some unconfirmed services. Broadcasts do not cross IP routers, so BACnet uses the BACnet Broadcast Management Device (BBMD) to forward them between subnets. Each BBMD holds a Broadcast Distribution Table (BDT) listing its peer BBMDs, and it can also accept Foreign Device Registrations from individual hosts that are not on a subnet with a BBMD.
This mechanism creates several recurring exposures:
- Foreign device registration open to any source. A BBMD that accepts registrations from any address effectively lets a remote host join the BACnet internetwork and receive forwarded broadcasts. If that BBMD is reachable from the corporate network or the internet, discovery of the whole building is one registration away.
- Over-large broadcast domains. BDTs that link every building on a campus turn a local fault or a broadcast storm into a site-wide outage, and make every controller reachable from every subnet.
- Multiple or misconfigured BBMDs on one subnet. Duplicate forwarding produces broadcast loops, which are a reliability problem first and a security problem second, because operators respond by opening the network further while troubleshooting.
- Internet-facing UDP 47808. Devices answering BACnet on public addresses are routinely indexed by internet scanning services. This maps to MITRE ATT&CK for ICS T0883 (Internet Accessible Device).
Defensive practice is to keep BBMD count to the minimum needed, restrict BDT peers to the specific supervisory or routing subnets that genuinely need broadcast distribution, disable foreign device registration unless a named use case requires it, and filter UDP 47808 at every zone boundary to known source and destination addresses.
BACnet Secure Connect (BACnet/SC)
BACnet/SC, added to ASHRAE 135 through Addendum bj and included in the 2020 edition, is a new datalink rather than a patch to BACnet/IP. Nodes connect over TLS 1.3 secured WebSockets, authenticate each other with X.509 certificates, and route traffic through a hub, with an optional failover hub and optional direct node-to-node connections. Because there is no UDP broadcast, BBMDs are not needed, and traffic traverses firewalls as ordinary TLS connections to known hub addresses.
What BACnet/SC gives you:
- Mutual device authentication, so a rogue laptop cannot simply join the network and issue writes.
- Encryption and integrity protection of BACnet traffic on the wire.
- A hub-and-spoke topology that is far easier to firewall than broadcast-based BACnet/IP.
What it does not give you:
- User-level authorization. A device with a valid certificate can still issue any service the target accepts. Least privilege still depends on supervisory software and network policy.
- Protection of MS/TP field buses, which remain unauthenticated serial links behind the controller.
- Certificate lifecycle management. Someone has to issue, store, renew and revoke operational certificates. If the integrator holds the signing keys, the integrator holds the trust anchor of your building.
Adoption is gradual. BTL testing and listing for BACnet/SC exists, and several major vendors ship SC-capable controllers and supervisors, but most installed bases are mixed. A realistic plan uses BACnet/SC for new supervisory and IP controller segments, keeps BACnet/IP in tightly scoped legacy zones behind SC-capable routers, and requires an owner-controlled certificate authority from day one.
Segmenting field and supervisory layers
Segmentation is the control that makes everything else manageable. Using the zone and conduit model from IEC 62443-3-2, a practical BMS design separates at least the following zones:
- Field zone: MS/TP and Modbus RTU buses and their controllers. No IP reachability from outside the zone except via the owning automation controller or router.
- Automation zone: IP controllers and BACnet routers, grouped by building, plant or system (HVAC, lighting, metering) so that a fault or compromise is contained.
- Supervisory zone: BMS servers, historians, operator workstations. This is the only zone permitted to initiate writes to automation controllers.
- BMS DMZ: data brokers, read-only replicas, analytics connectors and the remote access jump host. Corporate users and cloud services talk to the DMZ, never directly to controllers.
Conduits between zones should be explicit and minimal. The table below is an example of the level of detail an integrator should be able to produce and justify.
| Source zone | Destination zone | Protocol | Purpose |
|---|---|---|---|
| Supervisory | Automation | BACnet/IP UDP 47808 or BACnet/SC TLS to hub | Polling, commands, schedules |
| Supervisory | Automation (meters) | Modbus TCP 502 | Read-only polling of energy meters |
| BMS DMZ | Supervisory | Vendor API over HTTPS | Data export to analytics |
| Corporate | BMS DMZ | HTTPS to web client | Operator graphics, authenticated |
| Remote access | BMS DMZ jump host | Owner VPN or ZTNA with MFA | Integrator maintenance |
These map to IEC 62443-3-3 SR 5.1 (network segmentation) and SR 5.2 (zone boundary protection). Where Modbus devices are read-only by design, enforce it: a protocol-aware firewall or industrial DPI engine can permit read function codes from the supervisory server and drop write function codes, which narrows the impact of T0855 (Unauthorized Command Message) and T0836 (Modify Parameter).
Monitoring BACnet and Modbus traffic
BMS networks are well suited to passive monitoring because their traffic is repetitive. A span or tap on the supervisory-to-automation conduit, feeding an OT-aware network detection tool, can build a baseline and alert on deviations. Useful detections include:
- Who-Is or Who-Has sweeps from any host other than the supervisory server (T0846, Remote System Discovery).
- WriteProperty, DeviceCommunicationControl, ReinitializeDevice or file transfer services from unexpected sources.
- Writes at unusual BACnet priorities, especially the manual life safety and automatic life safety levels.
- New Foreign Device Registrations or changes to a BBMD's BDT.
- Modbus write function codes to devices that are normally only read.
- New devices, new firmware versions or new IP addresses appearing in an automation zone.
- Any connection to the remote access path outside an approved maintenance window.
Send these alerts and the supervisory server's own audit log to a central SIEM with synchronized time, per IEC 62443-3-3 SR 2.8 (auditable events) and SR 6.2 (continuous monitoring). NIST SP 800-82r3 provides useful guidance on applying monitoring in OT environments, including building automation.
What to require from integrators
Most BMS security outcomes are decided by the integrator during design and commissioning. IEC 62443-2-4 defines security capabilities for service providers and is a useful reference for contracts. At minimum, require:
- A zone and conduit diagram and a firewall rule matrix like the one above, with every BACnet and Modbus flow justified.
- A BBMD inventory with BDT contents, and foreign device registration disabled unless approved in writing.
- BACnet/SC on new IP segments where products support it, with certificates issued from an owner-controlled CA.
- Changed default passwords on every controller, router and gateway, including DeviceCommunicationControl and ReinitializeDevice passwords.
- Named, individual accounts on supervisory software, with no shared integrator login.
- Remote access only through the owner's jump host or ZTNA service with MFA, and no cellular routers, port forwards or vendor remote-control tools left on site.
- Unused services disabled on controllers, including web servers, Telnet, FTP and unused protocol stacks, in line with SR 7.7 (least functionality).
- An as-built asset inventory with firmware versions and a configuration backup of every controller at handover.
Common mistakes
- Treating a VLAN as segmentation when the VLANs are routed together without filtering.
- Allowing corporate users to reach controller web interfaces directly instead of through the supervisory layer.
- Deploying BACnet/SC but leaving BACnet/IP enabled on the same controllers, which keeps the old attack surface intact.
- Letting the integrator own the certificate authority and all administrative credentials after handover.
- Buying a monitoring tool without giving it visibility of the conduits that matter or anyone to read the alerts.
Where to start
Start with exposure. Confirm that no BACnet or Modbus port is reachable from the internet or the corporate network, and that no BBMD accepts foreign device registrations from untrusted sources. Then separate the supervisory layer from the controllers with a filtered boundary, and put remote access behind an owner-controlled, MFA-protected path. With that foundation in place, monitoring becomes meaningful and BACnet/SC can be introduced segment by segment as controllers are replaced.