中國電子科技集團公司第三十研究所 胡兆華 張一
嵌入式通信設備的安全漏洞是通信系統受到網絡安全威脅的重要原因之一。近年來,基于嵌入式系統的各類產品如雨后春筍般層出不窮,在通信領域更是廣泛使用。嵌入式通信設備的安全性不僅涉及個人隱私,甚至關乎國家安全。嵌入式通信設備正面臨日益嚴重的攻擊威脅,安全狀況極為嚴峻。
為了應對嵌入式通信設備安全性提升的迫切要求,本文對嵌入式通信設備的特點及安全脆弱性進行分析,通過對相關安全性測試技術的研究,提出了適用于嵌入式通信設備安全性測試的內容和方法,為嵌入式通信設備的安全測試提供方法指導,也為安全防護能力提升提供設計參考。
嵌入式通信設備具有功能穩定、可靠性高、高實時性、系統資源占用少等特點,一般部署于通信網絡中,通過特定的通信協議與外部實體進行交互,如圖1 所示。

圖1 嵌入式通信設備與外部實體的交互Fig.1 Interactions between the embedded communication equipment and the external entity
嵌入式通信設備的高可靠性決定了其運行的高安全性需求,其安全性很大程度上與嵌入式系統的安全性緊密相關。對于嵌入式通信設備而言,一方面受限于硬件尺寸、系統資源等因素,系統自身的安全防護能力非常有限;另一方面,作為通信設備,其部署的應用環境使其直接暴露在通信網絡的各種攻擊力量下,因此,對嵌入式通信設備的安全防御能力評估非常重要。
嵌入式通信設備通過各類通信協議與外部實體進行數據交互,設備內部采用嵌入式操作系統,由應用程序實現各種業務功能。嵌入式通信設備可能存在操作系統漏洞、應用軟件漏洞、通信協議漏洞等,容易被攻擊者攻擊和滲透。
1.2.1 操作系統脆弱性
主流的嵌入式操作系統包括Vxworkd、Linux、uC/OS-II等,本文以嵌入式Linux 系統為例進行操作系統脆弱性分析。Linux 操作系統作為自由、開放的系統軟件,設計初衷并非安全操作系統,因此安全防護措施并不完善,需要依賴使用者在應用中去提升其安全性。嵌入式Linux 系統存在的主要安全脆弱點如下:(1)訪問控制:Linux 系統主流發行版本均為自主訪問控制,自主訪問控制機制未考慮用戶角色、程序可信度等安全要素,故不能提供有效的安全性保障;(2)系統管理:為方便管理和操作,Root 賬戶擁有系統的所有權限,這種機制不符合“最小特權”管理原則。Root 賬戶可運行任意程序,這種過高的特權可能導致較高的安全風險;(3)文件系統訪問:容易出現Root 權限的濫用而普通用戶權限不足的情況;(4)網絡協議:網絡協議棧中部分協議存在安全漏洞;(5)系統日志方面:Linux 系統的日志缺乏資源訪問記錄和事件詳情記錄,無法跟蹤和記錄非法操作,也缺少必要的日志分析與警告。
1.2.2 應用軟件缺陷
應用軟件漏洞是嵌入式通信設備脆弱性的主要來源,主要有編碼錯誤和環境配置錯誤兩大類,進一步細分,還可以分為以下幾類:(1)輸入驗證錯誤:對用戶提供的輸入數據未進行合法性檢查,攻擊者可輸入非法數據對系統進行攻擊;(2)緩沖區溢出錯誤:當程序緩沖區寫入數據超過其規定長度時,會造成緩沖區溢出,破壞程序正常的堆棧,使程序執行其他代碼;(3)邊界條件錯誤:程序未對邊界條件進行有效判斷;(4)意外情況錯誤:程序處理邏輯中未正確處理異常情況而導致運行出錯;(5)設計錯誤:程序處理邏輯不嚴謹,或是為了調試方便而設計的一些“后門”;(6)配置錯誤:系統或應用的配置錯誤,比如訪問權限配置錯誤、參數配置錯誤等。
1.2.3 通信協議脆弱性
嵌入式通信設備通信協議的脆弱性,一方面原因是協議設計上的安全缺陷;另一方面原因是協議實現時的編碼錯誤。通信協議一般有以下幾類常見的脆弱性:(1)數據的機密性:通信交互的敏感數據未進行加密保護,攻擊者可以在通信線路上直接探測或捕獲通信設備與外部實體間傳輸的敏感數據;(2)數據的完整性:通信雙方交互信息未進行完整性保護,攻擊者可輕易對通信線路上的數據進行篡改或刪除,而數據接收方卻不能察覺或未進行數據正確性驗證;(3)協議數據的抗重放:通信雙方對交互的協議數據沒有抗重放檢測能力,攻擊者可截獲通信協議數據并原封不動地重新發送給數據接收方,接收方不能判斷該協議數據是否是已經接收過的數據;(4)協議的弱認證性:通信協議數據在交互過程中,缺乏對交互對象的身份驗證或者是身份驗證力度較弱,交互數據很容易被攻擊者仿冒,接收方卻不能覺察交互對象的改變,攻擊者可進而實施信息竊取或拒絕服務等攻擊。
傳統的安全性測試方法和工具主要面向通用IT 系統,不能完全滿足對嵌入式通信設備進行安全性測試的需要,主要原因如下(:1)嵌入式通信設備非標準通用設備,采用的嵌入式操作系統經過定制化開發或裁剪,通用安全漏洞掃描工具的掃描結果可能存在大量誤報;(2)嵌入式通信設備采用了較多的定制化軟件,公開安全漏洞較少,傳統安全評估分析工具難以對其進行安全性評估;(3)嵌入式通信設備采用專用通信協議,通用協議測試工具不支持這類專用協議,無法開展相關協議分析測試。
綜上所述,傳統安全測試手段缺乏對嵌入式通信設備定制化開發程序的測試實踐和技術積累,基于通用設備或協議的安全性測試工具并不完全適用于嵌入式通信設備的安全性測試。
針對當前嵌入式通信設備的安全現狀,在已有嵌入式通信設備安全脆弱性分析實踐的基礎上,本文總結了適用于嵌入式通信設備的安全性測試方法,在充分利用傳統安全性測試手段的基礎上,采用已知漏洞分析、未知漏洞挖掘以及安全配置檢查等相結合的方法對嵌入式通信設備進行安全性測試。
已知漏洞分析主要用于發現嵌入式操作系統內核、三方應用服務等的已知缺陷,主要有4 種分析方法:版本掃描、原理掃描、補丁對比和人工分析。這幾種分析技術的原理及優缺點對比如表1 所示。

表1 漏洞分析的技術原理及對比Tab.1 Technical principles and compareisons of vulnerablility analysis
嵌入式通信設備的未知漏洞挖掘,主要針對應用軟件或通信協議中的潛在未知安全漏洞。漏洞挖掘的方法有靜態分析、動態分析和人工分析3種,如表2 所示。

表2 漏洞挖掘方法和原理Tab.2 Methods and principles of vulnerability mining
2.2.1 靜態分析方法
嵌入式通信設備漏洞挖掘的靜態分析方法,一般使用代碼靜態分析工具對程序代碼進行靜態字符串搜索,實現代碼缺陷的發現。
測試者獲取嵌入式系統的源碼,可以使用源代碼掃描工具自動進行代碼分析,常用的源代碼掃描工具有Klocwork、Cppcheck、Parasoft C/C++test 等。對于不能提供源碼的系統或軟件,比如:執行文件、三方庫等,可以采用基于目標碼的二進制分析工具實現靜態分析。二進制分析工具采用二進制逆向分析技術實現文件掃描和分析,再人工對掃描結果判斷、篩選,最終確認問題。基于目標碼的分析方法一般涉及程序編譯器、計算機硬件指令系統、可執行文件格式等方面的分析技術,實現難度較大。目前較為成功的商業化二進制分析工具有CodeSonar、SwiftBinary、Cybellum等,開源的分析工具,包括angr、BAP、cew_checker、BinAbslnspector等,它們在實際項目中代碼質量保障上發揮了重要的作用。
2.2.2 動態分析方法
動態分析方法作為靜態分析方法的補充,在嵌入式通信設備的漏洞挖掘中有重要作用。動態分析方法分為白盒分析和黑盒分析兩類。白盒分析方法主要是對動態運行的程序代碼流進行分析[2],通過設置斷點動態跟蹤目標程序代碼流,以檢測有缺陷的函數調用及其參數,主流的代碼分析工具都支持代碼流的分析。黑盒分析方法分為數據流分析和格式分析兩種。數據流分析對業務或管理數據流進行分析,并嘗試構造輸入非常規的數據來觸發漏洞。格式分析可用于協議漏洞分析,通過解析協議數據包,對涉及字符串數據的操作進行分析。對動態Web 頁面、文件格式和通信協議等的動態分析通常采用模糊測試工具實現。
實際嵌入式設備的漏洞挖掘過程中,靜態分析、動態分析和人工分析方法的綜合使用已經成為未來的主要方向。
嵌入式設備除了軟件代碼存在脆弱性,操作系統的安全策略缺失或不足也是導致設備容易受到惡意攻擊的原因之一,因此對操作系統的安全策略配置進行檢查是嵌入式設備安全性測試的重要內容。
操作系統的安全策略配置檢查主要從訪問控制、文件系統安全、運行安全三方面進行。
2.3.1 訪問控制安全
對系統的關鍵或敏感文件訪問權限進行設置,禁止非授權訪問。對系統重要文件訪問制定安全策略,實施嚴格的強制訪問控制。
2.3.2 文件系統安全
(1)重要文件加固:通過chattr 命令對系統重要文件或目錄進行鎖定[1];(2)臨時目錄安全:臨時目錄中所有用戶均有讀寫權限,需要禁止在/tmp、/var/tmp、/dev/shm 等臨時目錄下執行應用程序[1]。
2.3.3 安全運行策略
(1)用戶登錄:刪除多余的用戶和用戶組[3],限制冗余的用戶登錄權限;對用戶登錄次數進行限制;使用普通用戶登錄,禁止Root 登錄;遠程登錄使用密鑰,禁止密碼登錄;(2)系統服務:關閉不需要的系統服務;(3)系統開機啟動過程:不允許通過輸入按鍵中斷啟動過程;(4)密碼策略:系統口令的過期時間進行限制,對口令復雜度進行設置,對新口令的歷史重用度進行限制;(5)帳戶策略:對賬戶歷史命令保存條數、賬戶使用超時時間進行限制;(6)賬戶切換:只允許指定用戶組使用su 命令切換到Root 用戶;(7)登錄界面隱藏系統版本信息;(8)開啟防火墻;(9)最小權限原則:系統只賦予每個管理員完成任務所需的最小權限,且職責分離;(10)行為監控審計:啟用必要的日志記錄。
結合上述安全性測試技術和方法,對某嵌入式通信設備進行了應用實踐,測試環境如圖2 所示。

圖2 安全性測試拓撲圖Fig.2 Scurity test toplogy diagram
被測嵌入式通信設備、陪測設備和測試平臺通過交換機相連,測試終端1 控制測試平臺執行測試,監控終端對被測通信設備的狀態進行監控,測試終端2 直連被測設備,對設備進行系統安全配置測試。
測試終端1 控制測試平臺執行以下安全性測試:(1)主機和Web 漏洞掃描:掃描設備開放的端口和應用服務,發現操作系統、Web 及其他應用服務的已知漏洞。針對發現的已知漏洞,使用測試終端2 進行漏洞復現及驗證,去除掃描工具誤報的漏洞。(2)協議模糊測試:利用測試平臺構造變異的協議報文發往被測設備,動態監測被測設備的工作狀態,通過監測終端記錄被測設備的狀態信息、異常日志及報警信息,捕獲設備異常崩潰的狀態信息。(3)網絡攻擊測試:通過測試平臺發送各種Dos 攻擊報文、通信業務的重放包,或大量發送精心構造的畸形網絡包,檢測被測設備的資源占用和對通信業務的影響情況。
此外,通過測試終端2 直連設備,對被測設備進行靜態測試。重點是通過串口進行操作系統的安全配置測試,包括安全登錄、文件系統檢查、安全運行策略等。
通過上述安全性測試,發現該設備存在多個冗余端口和應用服務,操作系統和應用程序還存在嚴重安全漏洞。通過協議模糊測試,發現設備多處協議處理存在內存溢出問題,可導致系統崩潰;同時,設備通信協議字段檢查不嚴格,Dos 攻擊和畸形包均可引起設備資源耗盡,甚至重啟。操作系統也存在弱口令登錄、安全運行策略未配置等安全隱患。以上測試結果說明綜合采用多種安全性測試方法有效。
開展對嵌入式通信設備的安全測試可以評估設備的安全風險,提升設備的安全能力,也能為制定適當、有效的設備安全防護策略提供參考,從而保障嵌入式通信設備的安全運行。本文從嵌入式通信設備的安全脆弱性分析出發,研究了傳統安全測試手段的局限性,提出了嵌入式通信設備的安全性測試方法并在設備上進行了測試實踐,為提升嵌入式通信設備的安全防護能力提供了技術支撐和設計依據。
引用
[1] 熊婧,黃小昆.安全操作系統滲透測試方案研究[J].電子產品可靠性與環境試驗,2013:141-146.
[2] 董麗,趙琪,周鍵.嵌入式軟件安全性分析和測試方法研究[J].信息系統工程,2021(5):70-71.
[3] 李景煒.嵌入式Linux操作系統安全性研究[D].西安:西安電子科技大學,2015.