Bali, Indonesia
Insights

Anatomi Eksploitasi Industrial IoT: Mengapa Modbus TCP Tanpa Auth Memicu Saturation Spike pada Edge Controller

October 14, 2026
0:00
Ketika laporan investigasi France 24 mengungkap ratusan unit pendingin supermarket di seluruh Prancis lumpuh serentak akibat serangan siber—memaksa pengelola membuang seluruh stok daging dan makanan beku karena suhu chiller dinaikkan paksa hingga 50°C—reaksi publik umumnya membayangkan operasi peretasan tingkat negara yang rumit. Namun, bagi para insinyur yang terbiasa mengaudit tumpukan teknologi Industrial IoT (IIoT), insiden ini justru mencerminkan dosa arsitektural klasik: mengekspos protokol otomasi era 1970-an langsung ke rimba internet publik demi kepraktisan remote maintenance. Kekacauan logistik rantai dingin tersebut berakar pada pengabaian batas pemisah antara jaringan IT korporat dan perimeter Operational Technology (OT). Unit chiller komersial skala industri umumnya dikendalikan oleh Programmable Logic Controller (PLC) ringkas atau edge controller berbasis embedded Linux yang berkomunikasi melalui Modbus TCP. Di lapangan, teknisi vendor fasilitas sering kali mengambil jalan pintas untuk kebutuhan pemantauan jarak jauh tanpa harus repot meminta izin VPN korporat: mereka mengatur port forwarding langsung pada router edge (misalnya memetakan port publik 502 ke alamat IP lokal kontroler) atau menggunakan modem seluler industri tanpa konfigurasi firewall yang ketat.
Masalah mendasar dari Modbus TCP bukan sekadar ketiadaan enkripsi data di kawat jaringan, melainkan ketiadaan total konsep autentikasi maupun otorisasi level aplikasi. Didesain pertama kali untuk jaringan tertutup serial RS-485 yang terisolasi secara fisik, Modbus TCP (port default 502) bekerja murni dengan model transaksi master-slave berbasis request-response sederhana. Setiap paket Application Data Unit (ADU) yang tiba akan langsung diproses tanpa validasi identitas pengirim. Ketika seorang aktor luar mengirimkan paket Modbus dengan Function Code '0x06' (Write Single Register) atau '0x10' (Write Multiple Registers) yang menargetkan offset register setpoint suhu evaporator, kontroler akan langsung menimpa nilai ambang batas tersebut tanpa menanyakan kredensial apa pun. Tidak ada handshake sesi, tidak ada token, dan tidak ada nonce kriptografis. Perintah menaikkan setpoint dari -20°C menjadi 50°C diperlakukan setara dengan sinyal kalibrasi sah dari panel HMI lokal di ruang mesin.
Eksploitasi semacam ini jarang berhenti pada pengubahan satu register statis. Skrip penyerang atau botnet scanner (seperti Mirai varian OT) biasanya membanjiri port target dengan rentetan paket sinkronisasi dan probe berkecepatan tinggi. Di sinilah terjadi fenomena sistemik yang melumpuhkan kontroler: lonjakan saturasi soket (socket buffer starvation). Sebagian besar edge gateway pendingin menggunakan SoC berdaya rendah (misalnya ARM Cortex-A7 single-core atau MIPS) yang menjalankan embedded Linux dengan alokasi kernel buffer yang sangat terbatas, atau tumpukan TCP/IP ringan seperti lwIP. Stack kontroler tersebut umumnya didesain dengan model single-threaded non-blocking poll atau multi-thread dengan batasan concurrency yang sangat ketat (sering kali dibatasi hanya 4 hingga 8 koneksi TCP simultan pada port 502). Ketika rentetan koneksi asing membanjiri antarmuka jaringan publik, socket backlog queue segera terisi penuh oleh status SYN_RECV dan TIME_WAIT.
BASH
# Memeriksa antrean soket Modbus yang tercekik pada edge controller
ss -t -i 'sport = :502'
# Terlihat buffer Recv-Q menumpuk saat event loop thread OT terblokir
Akibatnya, thread runtime kontroler yang bertanggung jawab mengeksekusi closed-loop control algorithm (PID loop untuk kompresor dan katup ekspansi) kehilangan alokasi CPU ticks dan I/O interrupts. Kontroler mengalami starvation, sistem watchdog lokal gagal menerima denyut nadi (heartbeat), antarmuka HMI lokal membeku, dan status aktuator terkunci pada nilai register korup terakhir yang berhasil ditulis: setpoint pemanas maksimum.
Menyelesaikan problem struktural ini tidak bisa diserahkan pada harapan pembaruan firmware vendor yang sering kali sudah end-of-life. Arsitektur pertahanan harus ditarik ke boundary network. Aktuator fisik, sensor RTD, dan PLC level rendah (Purdue Model Level 1) tidak boleh memiliki default gateway yang mengarah ke internet publik, dan port Modbus tidak boleh terbuka di luar subnet VLAN aktuator yang terisolasi. Setiap akses telemetri atau kontrol jarak jauh wajib melewati Boundary Controller (Purdue Model Level 3) yang bertindak sebagai reverse proxy terautentikasi ganda (mTLS). Boundary controller ini bertugas mendekripsi traffic eksternal, memverifikasi sertifikat x509 klien, dan menerjemahkan request API aman menjadi query Modbus lokal ke subnet aktuator yang terisolasi.
BASH
# Isolasi ketat pada network edge menggunakan nftables
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
nft add rule inet filter input iifname 'lo' accept
nft add rule inet filter input ct state established,related accept
# Batasi akses port Modbus 502 hanya dari IP bridge VPN/mTLS internal
nft add rule inet filter input iifname 'wg0' ip saddr 10.200.0.2 tcp dport 502 accept
Selain kontrol jaringan, Deep Packet Inspection (DPI) pada industrial firewall atau edge proxy harus diaktifkan untuk memeriksa muatan Function Code Modbus. Trafik analitik read-only hanya diizinkan mengeksekusi Function Code '0x03' (Read Holding Registers) dan '0x04' (Read Input Registers). Seluruh operasi penulisan (FC 0x06 dan 0x10) wajib diblokir di perimeter kecuali dikirim melalui sesi rekayasa terotentikasi ketat dengan rate-limiting agresif.
Pelajaran krusial dari insiden rantai dingin ini adalah bahwa sistem fisik membutuhkan perlindungan mekanis dan logis independen (safety limits clamping). Software dan jaringan selalu memiliki kemungkinan gagal ditembus. Jika register kontroler dapat dipaksa menerima nilai di luar batas termodinamika operasional mesin—seperti menyetel chiller daging beku ke suhu oven 50°C—maka ada kecacatan logika pada firmware kontroler itu sendiri. Firmware kontroler modern harus menerapkan hard limit validation pada level memory register sebelum nilai tersebut diteruskan ke output DAC atau modul relai. Jika nilai register melebihi ambang batas operasional masuk akal (misalnya lebih dari 8°C untuk kompartemen pendingin), kontroler harus menolak payload, memicu alarm lokal independen, dan mengunci sistem pada safe-state default. Ketergantungan buta pada perimeter jaringan tanpa validasi domain fisik pada aktuator adalah resep menuju kegagalan katastropik berikutnya di sektor infrastruktur kritis.