Modbus 協議是典型的工控網絡協議,研究其安全性對于加強工業控制網絡的安全性有重要意義。一般來說,協議安全性問題可以分為兩種,一種是協議自身的設計和描述引起的安全問題; 另一種是協議的不正確實現引起的安全問題。Modbus 協議也存在著這兩方面的問題。

Modbus 協議的固有問題
絕大多數工控協議在設計之初,僅僅考慮了功能實現、提高效率、提高可靠性等方面,而沒考慮過安全性問題。Modbus 協議也不例外,盡管其已經成為事實上的工業標準。從前面原理分析可以看出其本身的安全性問題是: 缺乏認證、授權、加密等安全防護機制和功能碼濫用問題。
( 1) 缺乏認證
認證的目的是保證收到的信息來自合法的用戶,未認證的用戶向設備發送控制命令不會被執行。在Modbus 協議通信過程中,沒有任何認證方面的相關定義,攻擊者只需要找到一個合法的地址就可以使用功能碼就能建立一個Modbus 通信會話,從而擾亂整個或者部分控制過程。
( 2) 缺乏授權
授權是保證不同的特權操作需要由擁有不同權限的認證用戶來完成,這樣可大大降低誤操作與內部攻擊的概率。目前,Modbus 協議沒有基于角色的訪問控制機制,也沒有對用戶分類,沒有對用戶的權限進行劃分,這會導致任意用戶可以執行任意功能。
( 3) 缺乏加密
加密可以保證通信過程中雙方的信息不被第三方非法獲取。Modbus 協議通信過程中,地址和命令全部采用明文傳輸,因此數據可以很容易的被攻擊者捕獲和解析,為攻擊者提供便利。
( 4) 功能碼濫用
功能碼是Modbus 協議中的一項重要內容,幾乎所有的通信都包含功能碼。目前,功能碼濫用是導致Modbus 網絡異常的一個主要因素。例如不合法報文長度,短周期的無用命令,不正確的報文長度,確認異常代碼延遲等都有可能導致拒絕服務攻擊。

協議實現產生的問題
雖然Modbus 協議獲得了廣泛的應用,但是在實現具體的工業控制系統時,開發者并不具備安全知識或者沒有意識到安全問題。這樣就導致了使用Modbus 協議的系統中可能存在各種各樣的安全漏洞。
( 1) 設計安全問題
Modbus 系統開發者重點關注的是其功能實現問題,安全問題在設計時很少被注意到。設計安全是指設計時充分考慮安全性,解決Modbus 系統可能出現的各種異常和非法操作等問題。比如在通信過程中,某個節點被惡意控制后發出非法數據,就需要考慮這些數據的判別和處理問題。
( 2) 緩沖區溢出漏洞
緩沖區溢出是指在向緩沖區內填充數據時超過了緩沖區本身的容量導致溢出的數據覆蓋在合法數據上,這是在軟件開發中最常見也是非常危險的漏洞,可以導致系統崩潰,或者被攻擊者利用來控制系統。Modbus 系統開發者大多不具備安全開發知識,這樣就會產生很多的緩沖區溢出漏洞,一旦被惡意者利用會導致嚴重的后果。
( 3) Modbus TCP 安全問題
目前,Modbus 協議已經可以在通用計算機和通用操作系統上實現,運行于TCP /IP 之上以滿足發展需要。這樣,TCP /IP 協議自身存在的安全問題不可避免地會影響到工控網絡安全。非法網絡數據獲取,中間人,拒絕服務, IP 欺騙,病毒木馬等在IP 互聯網中的常用攻擊手段都會影響Modbus 系統安全。

安全建議
目前,Modbus 系統采取的安全防護措施普遍不足,這里參考信息安全業內研究并結合工控系統自身的安全問題,提出了一些安全建議,能夠有效地降低工業控制系統面臨的威脅。
( 1) 從源頭開始
工控網絡漏洞,很大一部分是其實現過程出現的漏洞。如果從源頭開始控制,從Modbus 系統的需求設計、開發實現、內部測試和部署等階段,全生命周期的介入安全手段,融入安全設計、安全編碼以及安全測試等技術,可以極大地消除安全漏洞,降低整個Modbus 系統的安全風險。
( 2) 異常行為檢測
異常行為代表著可能發生威脅,不管是有沒有攻擊者,因此開發針對Modbus 系統的專用異常行為檢測設備可以極大提高工控網絡的安全性。針對Modbus 系統,首先要分析其存在的各種操作行為,依據“主體,地點,時間,訪問方式,操作,客體”等行為描述成一個六元組模型; 進而分析其行為是否屬于異常; 最終決定采取記錄或者報警等措施。
( 3) 安全審計
Modbus 的安全審計就是對協議數據進行深度解碼分析,記錄操作的時間、地點、操作者和操作行為等關鍵信息,實現對Modbus 系統的安全審計日志記錄和審計功能,從而提供安全事件爆發后的事后追查能力。
( 4) 使用網絡安全設備
使用入侵防御和防火墻等網絡安全設備。防火墻是一個串行設備,通過設置,只允許特定的地址訪問服務端,禁止外部地址訪問Modbus 服務器,可以有效的防止外部入侵; 入侵防御設備可以分析Modbus協議的具體操作內容,有效地檢測并阻止來自內部/外部的異常操作和各種滲透攻擊行為,對內網提供保護功能。