Skip to content
Encyklopedia protokołów | | 7 min czytania

BACnet - protokół automatyki budynkowej i jego bezpieczeństwo

BACnet (Building Automation and Control Networks) - architektura protokołu, BACnet/IP vs BACnet/SC, podatności bezpieczeństwa i zasady segmentacji sieci BMS. Encyklopedia protokołów OT.

BACnetUDP 47808BMSsmart building
BACnet - protokół automatyki budynkowej i jego bezpieczeństwo

BACnet (Building Automation and Control Networks) to otwarty protokół komunikacyjny zdefiniowany w normie ASHRAE 135 i ISO 16484-5, stosowany do sterowania i monitorowania systemów automatyki budynkowej - HVAC, oświetlenia, kontroli dostępu, systemów przeciwpożarowych i zarządzania energią. Opracowany w 1995 roku, stał się de facto standardem w inteligentnych budynkach, kampusach korporacyjnych, szpitalach i centrach danych na całym świecie.

Przez dekady automatyka budynkowa funkcjonowała w izolacji od sieci IT. Dziś systemy BMS (Building Management Systems) łączą się z chmurą, dostarczają dane do platform analitycznych i integrują się z systemami zarządzania energią. Ta konwergencja sprawia, że bezpieczeństwo protokołu BACnet staje się realnym wyzwaniem operacyjnym.

Architektura i warianty protokołu

BACnet definiuje model obiektowy - każde urządzenie (sterownik DDC, czujnik, siłownik) eksponuje obiekty (Analog Input, Binary Output, Schedule) z właściwościami, które można odczytywać i zapisywać. Protokół obsługuje kilka warstw transportowych:

ParametrBACnet/IPBACnet/SCBACnet MS/TP
Warstwa transportowaUDP/IPTLS 1.3 over WebSocketRS-485 (master-slave)
PortUDP 47808 (0xBAC0)TCP 443 (konfigurowalny)Brak - warstwa fizyczna
UwierzytelnianieBrak natywnegoCertyfikaty X.509Brak
SzyfrowanieBrakAES-256-GCM (TLS 1.3)Brak
Zasięg typowySieć kampusowa / WANWAN / chmuraSegment lokalny (do 1200 m)
Standard od1995 (Addendum A)2020 (Addendum bj)1995

BACnet/SC (Secure Connect), wprowadzony jako Addendum bj w 2020 roku, to odpowiedź na brak bezpieczeństwa w klasycznym BACnet/IP. Zamiast broadcastowego UDP, BACnet/SC wykorzystuje połączenia punkt-punkt przez WebSocket z obowiązkowym TLS 1.3 i uwierzytelnianiem certyfikatami X.509. To fundamentalna zmiana - z protokołu otwartego na protokół z kryptograficznym rdzeniem.

Struktura ramki BACnet/IP

Każdy pakiet BACnet/IP składa się z nagłówka BVLC (BACnet Virtual Link Control) i jednostki danych NPDU/APDU:

BACnet/IP Frame
012345678910111213141516171819202122232425262728293031
Byte 0Byte 1Byte 2Byte 3
BVLC Type0x818 bits
BVLC Function8 bits
BVLC Length16 bits
NPDU Version0x018 bits
NPDU Control8 bits
DNET (optional)16 bits
APDU PDU Type8 bits
Service Choice8 bits
Service Data32 bits
Service Data32 bits
header
control
address
data
© SEQRED International

BVLC Function - typ komunikatu na poziomie transportowym:

BVLC FunctionWartośćOpis
Original-Unicast-NPDU0x0APunkt-punkt - standardowa komunikacja
Original-Broadcast-NPDU0x0BBroadcast - discovery (Who-Is)
Forwarded-NPDU0x04Przekazanie przez BBMD (BACnet Broadcast Management Device)
Register-Foreign-Device0x05Rejestracja urządzenia zdalnego
Distribute-Broadcast0x09Dystrybucja broadcastu przez BBMD

APDU Service Choice - usługi aplikacyjne (najważniejsze z perspektywy bezpieczeństwa):

UsługaTypRyzykoOpis
Who-Is / I-AmUnconfirmedNiskie (rekonesans)Discovery - mapowanie sieci BMS
ReadPropertyConfirmedNiskieOdczyt wartości obiektu (temperatura, stan)
ReadPropertyMultipleConfirmedNiskieMasowy odczyt wielu właściwości
WritePropertyConfirmedWysokieZmiana wartości nastawy (setpoint), harmonogramu
WritePropertyMultipleConfirmedWysokieMasowa zmiana wielu wartości
SubscribeCOVConfirmedNiskieSubskrypcja zmian wartości (Change of Value)
ReinitializeDeviceConfirmedKrytyczneRestart urządzenia - możliwość DoS
DeviceCommunicationControlConfirmedKrytyczneWyłączenie komunikacji urządzenia
CreateObject / DeleteObjectConfirmedWysokieTworzenie/usuwanie obiektów w konfiguracji

WARNING

Usługi WriteProperty, ReinitializeDevice i DeviceCommunicationControl w BACnet/IP nie wymagają żadnego uwierzytelniania. Atak polega na wysłaniu jednego pakietu UDP na port 47808. Firewall z DPI powinien blokować te usługi z nieautoryzowanych źródeł i dopuszczać je wyłącznie ze stacji operatorskiej BMS.

Zastosowania w praktyce

Typowa instalacja BACnet obejmuje:

  • Sterowniki DDC (Direct Digital Control) - zarządzanie HVAC, oświetleniem, roletami
  • Stacje operatorskie BMS - wizualizacja i sterowanie z poziomu GUI
  • Bramki integracyjne - BACnet/IP do Modbus, KNX, LonWorks
  • Systemy nadrzędne - integracja z platformami IoT, EMS, CAFM

W szpitalach BACnet steruje klimatyzacją sal operacyjnych z precyzyjną kontrolą ciśnienia i temperatury. W centrach danych zarządza chłodzeniem serwerowni, gdzie awaria HVAC może doprowadzić do wyłączenia infrastruktury IT w ciągu minut.

TIP

Jeśli Twoja instalacja BACnet/IP jest dostępna z poziomu sieci korporacyjnej lub - co gorsza - z internetu, traktuj to jako krytyczną podatność. Skanery Shodan regularnie identyfikują tysiące urządzeń BACnet odpowiadających na zapytania Who-Is bez żadnej autoryzacji.

Ocena bezpieczeństwa

BACnet/IP i MS/TP nie oferują żadnych natywnych mechanizmów bezpieczeństwa:

  • Brak uwierzytelniania - dowolny host w sieci może wysyłać polecenia WriteProperty do sterowników DDC
  • Brak szyfrowania - cała komunikacja przesyłana jest jawnie, w tym wartości nastaw (setpoints) i harmonogramy
  • Broadcast discovery - usługa Who-Is/I-Am działa broadcastowo, umożliwiając mapowanie całej infrastruktury BMS
  • Brak integralności - pakiety mogą być modyfikowane w locie (man-in-the-middle)

Atakujący, który uzyska dostęp do segmentu sieciowego z BACnet/IP, może zmienić nastawy temperatur w serwerowni, wyłączyć wentylację w budynku lub manipulować harmonogramami systemów przeciwpożarowych - bez żadnego uwierzytelnienia.

BACnet/SC eliminuje większość tych problemów dzięki TLS 1.3 i certyfikatom X.509. Jednak adopcja jest wciąż niska - wymaga wymiany lub aktualizacji firmware kontrolerów, wdrożenia infrastruktury PKI i rekonfiguracji całej instalacji.

Segmentacja i ochrona

Ponieważ większość istniejących instalacji działa na BACnet/IP bez migracji do BACnet/SC w najbliższej przyszłości, segmentacja sieciowa pozostaje podstawowym mechanizmem ochrony.

Zasady segmentacji dla BACnet:

  1. Izolacja sieci BMS od IT - dedykowany VLAN lub fizycznie oddzielna sieć dla automatyki budynkowej, z firewallem na granicy
  2. Segmentacja wewnętrzna - osobne podsieci dla HVAC, oświetlenia, kontroli dostępu i systemów przeciwpożarowych
  3. Kontrola ruchu BACnet/IP - firewall z inspekcją protokołu BACnet (DPI) na granicy stref, zezwalający wyłącznie na niezbędne usługi (Read-Property, Subscribe-COV) i blokujący Write-Property z nieautoryzowanych źródeł
  4. Ograniczenie broadcastu - filtrowanie pakietów Who-Is na granicach segmentów, aby uniemożliwić mapowanie infrastruktury z sieci IT
  5. Dostęp zdalny przez jump host - nigdy bezpośredni VPN do segmentu BMS

Szczegółowe wytyczne dotyczące projektowania stref i korytarzy dla sieci OT i BMS opisujemy w artykule o segmentacji sieci OT.

TIP

Przy planowaniu migracji do BACnet/SC pamiętaj, że protokół obsługuje tryb hybrydowy - hub BACnet/SC może komunikować się zarówno z urządzeniami SC, jak i starszymi BACnet/IP w tym samym segmencie. To pozwala na stopniową migrację bez wymiany całej infrastruktury jednocześnie.

Więcej o cyberbezpieczeństwie systemów automatyki budynkowej znajdziesz w naszym artykule o bezpieczeństwie smart building.

Narzędzia open source

NarzędzieJęzykOpisLink
BACpypes3PythonKompletna implementacja BACnet/IP w Pythonie - skryptowanie odkrywania i sterowaniaGitHub
bacnet-stackCBiblioteka C z narzędziami CLI: bacwi (Who-Is), bacrp (ReadProperty), bacwp (WriteProperty)GitHub
YABEC#Graficzny klient BACnet - przegladanie obiektow, odczyt/zapis wlasciwosciGitHub

TIP

bacnet-stack dostarcza gotowe narzędzia CLI do testowania segmentacji: bacwi wysyla broadcast Who-Is (czy firewall blokuje discovery?), bacrp odczytuje wlasciwosci obiektu, a bacwp probuje zapis - pozwala to szybko zweryfikowac, czy reguly DPI blokuja WriteProperty z nieautoryzowanych zrodel.

Źródła

Omówimy zakres, metodykę i harmonogram.