中國電子科技集團公司第三十研究所 胡兆華 張一
嵌入式通信設備的安全漏洞是通信系統(tǒng)受到網(wǎng)絡安全威脅的重要原因之一。近年來,基于嵌入式系統(tǒng)的各類產(chǎn)品如雨后春筍般層出不窮,在通信領域更是廣泛使用。嵌入式通信設備的安全性不僅涉及個人隱私,甚至關乎國家安全。嵌入式通信設備正面臨日益嚴重的攻擊威脅,安全狀況極為嚴峻。
為了應對嵌入式通信設備安全性提升的迫切要求,本文對嵌入式通信設備的特點及安全脆弱性進行分析,通過對相關安全性測試技術的研究,提出了適用于嵌入式通信設備安全性測試的內容和方法,為嵌入式通信設備的安全測試提供方法指導,也為安全防護能力提升提供設計參考。
嵌入式通信設備具有功能穩(wěn)定、可靠性高、高實時性、系統(tǒng)資源占用少等特點,一般部署于通信網(wǎng)絡中,通過特定的通信協(xié)議與外部實體進行交互,如圖1 所示。
圖1 嵌入式通信設備與外部實體的交互Fig.1 Interactions between the embedded communication equipment and the external entity
嵌入式通信設備的高可靠性決定了其運行的高安全性需求,其安全性很大程度上與嵌入式系統(tǒng)的安全性緊密相關。對于嵌入式通信設備而言,一方面受限于硬件尺寸、系統(tǒng)資源等因素,系統(tǒng)自身的安全防護能力非常有限;另一方面,作為通信設備,其部署的應用環(huán)境使其直接暴露在通信網(wǎng)絡的各種攻擊力量下,因此,對嵌入式通信設備的安全防御能力評估非常重要。
嵌入式通信設備通過各類通信協(xié)議與外部實體進行數(shù)據(jù)交互,設備內部采用嵌入式操作系統(tǒng),由應用程序實現(xiàn)各種業(yè)務功能。嵌入式通信設備可能存在操作系統(tǒng)漏洞、應用軟件漏洞、通信協(xié)議漏洞等,容易被攻擊者攻擊和滲透。
1.2.1 操作系統(tǒng)脆弱性
主流的嵌入式操作系統(tǒng)包括Vxworkd、Linux、uC/OS-II等,本文以嵌入式Linux 系統(tǒng)為例進行操作系統(tǒng)脆弱性分析。Linux 操作系統(tǒng)作為自由、開放的系統(tǒng)軟件,設計初衷并非安全操作系統(tǒng),因此安全防護措施并不完善,需要依賴使用者在應用中去提升其安全性。嵌入式Linux 系統(tǒng)存在的主要安全脆弱點如下:(1)訪問控制:Linux 系統(tǒng)主流發(fā)行版本均為自主訪問控制,自主訪問控制機制未考慮用戶角色、程序可信度等安全要素,故不能提供有效的安全性保障;(2)系統(tǒng)管理:為方便管理和操作,Root 賬戶擁有系統(tǒng)的所有權限,這種機制不符合“最小特權”管理原則。Root 賬戶可運行任意程序,這種過高的特權可能導致較高的安全風險;(3)文件系統(tǒng)訪問:容易出現(xiàn)Root 權限的濫用而普通用戶權限不足的情況;(4)網(wǎng)絡協(xié)議:網(wǎng)絡協(xié)議棧中部分協(xié)議存在安全漏洞;(5)系統(tǒng)日志方面:Linux 系統(tǒng)的日志缺乏資源訪問記錄和事件詳情記錄,無法跟蹤和記錄非法操作,也缺少必要的日志分析與警告。
1.2.2 應用軟件缺陷
應用軟件漏洞是嵌入式通信設備脆弱性的主要來源,主要有編碼錯誤和環(huán)境配置錯誤兩大類,進一步細分,還可以分為以下幾類:(1)輸入驗證錯誤:對用戶提供的輸入數(shù)據(jù)未進行合法性檢查,攻擊者可輸入非法數(shù)據(jù)對系統(tǒng)進行攻擊;(2)緩沖區(qū)溢出錯誤:當程序緩沖區(qū)寫入數(shù)據(jù)超過其規(guī)定長度時,會造成緩沖區(qū)溢出,破壞程序正常的堆棧,使程序執(zhí)行其他代碼;(3)邊界條件錯誤:程序未對邊界條件進行有效判斷;(4)意外情況錯誤:程序處理邏輯中未正確處理異常情況而導致運行出錯;(5)設計錯誤:程序處理邏輯不嚴謹,或是為了調試方便而設計的一些“后門”;(6)配置錯誤:系統(tǒng)或應用的配置錯誤,比如訪問權限配置錯誤、參數(shù)配置錯誤等。
1.2.3 通信協(xié)議脆弱性
嵌入式通信設備通信協(xié)議的脆弱性,一方面原因是協(xié)議設計上的安全缺陷;另一方面原因是協(xié)議實現(xiàn)時的編碼錯誤。通信協(xié)議一般有以下幾類常見的脆弱性:(1)數(shù)據(jù)的機密性:通信交互的敏感數(shù)據(jù)未進行加密保護,攻擊者可以在通信線路上直接探測或捕獲通信設備與外部實體間傳輸?shù)拿舾袛?shù)據(jù);(2)數(shù)據(jù)的完整性:通信雙方交互信息未進行完整性保護,攻擊者可輕易對通信線路上的數(shù)據(jù)進行篡改或刪除,而數(shù)據(jù)接收方卻不能察覺或未進行數(shù)據(jù)正確性驗證;(3)協(xié)議數(shù)據(jù)的抗重放:通信雙方對交互的協(xié)議數(shù)據(jù)沒有抗重放檢測能力,攻擊者可截獲通信協(xié)議數(shù)據(jù)并原封不動地重新發(fā)送給數(shù)據(jù)接收方,接收方不能判斷該協(xié)議數(shù)據(jù)是否是已經(jīng)接收過的數(shù)據(jù);(4)協(xié)議的弱認證性:通信協(xié)議數(shù)據(jù)在交互過程中,缺乏對交互對象的身份驗證或者是身份驗證力度較弱,交互數(shù)據(jù)很容易被攻擊者仿冒,接收方卻不能覺察交互對象的改變,攻擊者可進而實施信息竊取或拒絕服務等攻擊。
傳統(tǒng)的安全性測試方法和工具主要面向通用IT 系統(tǒng),不能完全滿足對嵌入式通信設備進行安全性測試的需要,主要原因如下(:1)嵌入式通信設備非標準通用設備,采用的嵌入式操作系統(tǒng)經(jīng)過定制化開發(fā)或裁剪,通用安全漏洞掃描工具的掃描結果可能存在大量誤報;(2)嵌入式通信設備采用了較多的定制化軟件,公開安全漏洞較少,傳統(tǒng)安全評估分析工具難以對其進行安全性評估;(3)嵌入式通信設備采用專用通信協(xié)議,通用協(xié)議測試工具不支持這類專用協(xié)議,無法開展相關協(xié)議分析測試。
綜上所述,傳統(tǒng)安全測試手段缺乏對嵌入式通信設備定制化開發(fā)程序的測試實踐和技術積累,基于通用設備或協(xié)議的安全性測試工具并不完全適用于嵌入式通信設備的安全性測試。
針對當前嵌入式通信設備的安全現(xiàn)狀,在已有嵌入式通信設備安全脆弱性分析實踐的基礎上,本文總結了適用于嵌入式通信設備的安全性測試方法,在充分利用傳統(tǒng)安全性測試手段的基礎上,采用已知漏洞分析、未知漏洞挖掘以及安全配置檢查等相結合的方法對嵌入式通信設備進行安全性測試。
已知漏洞分析主要用于發(fā)現(xiàn)嵌入式操作系統(tǒng)內核、三方應用服務等的已知缺陷,主要有4 種分析方法:版本掃描、原理掃描、補丁對比和人工分析。這幾種分析技術的原理及優(yōu)缺點對比如表1 所示。
表1 漏洞分析的技術原理及對比Tab.1 Technical principles and compareisons of vulnerablility analysis
嵌入式通信設備的未知漏洞挖掘,主要針對應用軟件或通信協(xié)議中的潛在未知安全漏洞。漏洞挖掘的方法有靜態(tài)分析、動態(tài)分析和人工分析3種,如表2 所示。
表2 漏洞挖掘方法和原理Tab.2 Methods and principles of vulnerability mining
2.2.1 靜態(tài)分析方法
嵌入式通信設備漏洞挖掘的靜態(tài)分析方法,一般使用代碼靜態(tài)分析工具對程序代碼進行靜態(tài)字符串搜索,實現(xiàn)代碼缺陷的發(fā)現(xiàn)。
測試者獲取嵌入式系統(tǒng)的源碼,可以使用源代碼掃描工具自動進行代碼分析,常用的源代碼掃描工具有Klocwork、Cppcheck、Parasoft C/C++test 等。對于不能提供源碼的系統(tǒng)或軟件,比如:執(zhí)行文件、三方庫等,可以采用基于目標碼的二進制分析工具實現(xiàn)靜態(tài)分析。二進制分析工具采用二進制逆向分析技術實現(xiàn)文件掃描和分析,再人工對掃描結果判斷、篩選,最終確認問題。基于目標碼的分析方法一般涉及程序編譯器、計算機硬件指令系統(tǒng)、可執(zhí)行文件格式等方面的分析技術,實現(xiàn)難度較大。目前較為成功的商業(yè)化二進制分析工具有CodeSonar、SwiftBinary、Cybellum等,開源的分析工具,包括angr、BAP、cew_checker、BinAbslnspector等,它們在實際項目中代碼質量保障上發(fā)揮了重要的作用。
2.2.2 動態(tài)分析方法
動態(tài)分析方法作為靜態(tài)分析方法的補充,在嵌入式通信設備的漏洞挖掘中有重要作用。動態(tài)分析方法分為白盒分析和黑盒分析兩類。白盒分析方法主要是對動態(tài)運行的程序代碼流進行分析[2],通過設置斷點動態(tài)跟蹤目標程序代碼流,以檢測有缺陷的函數(shù)調用及其參數(shù),主流的代碼分析工具都支持代碼流的分析。黑盒分析方法分為數(shù)據(jù)流分析和格式分析兩種。數(shù)據(jù)流分析對業(yè)務或管理數(shù)據(jù)流進行分析,并嘗試構造輸入非常規(guī)的數(shù)據(jù)來觸發(fā)漏洞。格式分析可用于協(xié)議漏洞分析,通過解析協(xié)議數(shù)據(jù)包,對涉及字符串數(shù)據(jù)的操作進行分析。對動態(tài)Web 頁面、文件格式和通信協(xié)議等的動態(tài)分析通常采用模糊測試工具實現(xiàn)。
實際嵌入式設備的漏洞挖掘過程中,靜態(tài)分析、動態(tài)分析和人工分析方法的綜合使用已經(jīng)成為未來的主要方向。
嵌入式設備除了軟件代碼存在脆弱性,操作系統(tǒng)的安全策略缺失或不足也是導致設備容易受到惡意攻擊的原因之一,因此對操作系統(tǒng)的安全策略配置進行檢查是嵌入式設備安全性測試的重要內容。
操作系統(tǒng)的安全策略配置檢查主要從訪問控制、文件系統(tǒng)安全、運行安全三方面進行。
2.3.1 訪問控制安全
對系統(tǒng)的關鍵或敏感文件訪問權限進行設置,禁止非授權訪問。對系統(tǒng)重要文件訪問制定安全策略,實施嚴格的強制訪問控制。
2.3.2 文件系統(tǒng)安全
(1)重要文件加固:通過chattr 命令對系統(tǒng)重要文件或目錄進行鎖定[1];(2)臨時目錄安全:臨時目錄中所有用戶均有讀寫權限,需要禁止在/tmp、/var/tmp、/dev/shm 等臨時目錄下執(zhí)行應用程序[1]。
2.3.3 安全運行策略
(1)用戶登錄:刪除多余的用戶和用戶組[3],限制冗余的用戶登錄權限;對用戶登錄次數(shù)進行限制;使用普通用戶登錄,禁止Root 登錄;遠程登錄使用密鑰,禁止密碼登錄;(2)系統(tǒng)服務:關閉不需要的系統(tǒng)服務;(3)系統(tǒng)開機啟動過程:不允許通過輸入按鍵中斷啟動過程;(4)密碼策略:系統(tǒng)口令的過期時間進行限制,對口令復雜度進行設置,對新口令的歷史重用度進行限制;(5)帳戶策略:對賬戶歷史命令保存條數(shù)、賬戶使用超時時間進行限制;(6)賬戶切換:只允許指定用戶組使用su 命令切換到Root 用戶;(7)登錄界面隱藏系統(tǒng)版本信息;(8)開啟防火墻;(9)最小權限原則:系統(tǒng)只賦予每個管理員完成任務所需的最小權限,且職責分離;(10)行為監(jiān)控審計:啟用必要的日志記錄。
結合上述安全性測試技術和方法,對某嵌入式通信設備進行了應用實踐,測試環(huán)境如圖2 所示。
圖2 安全性測試拓撲圖Fig.2 Scurity test toplogy diagram
被測嵌入式通信設備、陪測設備和測試平臺通過交換機相連,測試終端1 控制測試平臺執(zhí)行測試,監(jiān)控終端對被測通信設備的狀態(tài)進行監(jiān)控,測試終端2 直連被測設備,對設備進行系統(tǒng)安全配置測試。
測試終端1 控制測試平臺執(zhí)行以下安全性測試:(1)主機和Web 漏洞掃描:掃描設備開放的端口和應用服務,發(fā)現(xiàn)操作系統(tǒng)、Web 及其他應用服務的已知漏洞。針對發(fā)現(xiàn)的已知漏洞,使用測試終端2 進行漏洞復現(xiàn)及驗證,去除掃描工具誤報的漏洞。(2)協(xié)議模糊測試:利用測試平臺構造變異的協(xié)議報文發(fā)往被測設備,動態(tài)監(jiān)測被測設備的工作狀態(tài),通過監(jiān)測終端記錄被測設備的狀態(tài)信息、異常日志及報警信息,捕獲設備異常崩潰的狀態(tài)信息。(3)網(wǎng)絡攻擊測試:通過測試平臺發(fā)送各種Dos 攻擊報文、通信業(yè)務的重放包,或大量發(fā)送精心構造的畸形網(wǎng)絡包,檢測被測設備的資源占用和對通信業(yè)務的影響情況。
此外,通過測試終端2 直連設備,對被測設備進行靜態(tài)測試。重點是通過串口進行操作系統(tǒng)的安全配置測試,包括安全登錄、文件系統(tǒng)檢查、安全運行策略等。
通過上述安全性測試,發(fā)現(xiàn)該設備存在多個冗余端口和應用服務,操作系統(tǒng)和應用程序還存在嚴重安全漏洞。通過協(xié)議模糊測試,發(fā)現(xiàn)設備多處協(xié)議處理存在內存溢出問題,可導致系統(tǒng)崩潰;同時,設備通信協(xié)議字段檢查不嚴格,Dos 攻擊和畸形包均可引起設備資源耗盡,甚至重啟。操作系統(tǒng)也存在弱口令登錄、安全運行策略未配置等安全隱患。以上測試結果說明綜合采用多種安全性測試方法有效。
開展對嵌入式通信設備的安全測試可以評估設備的安全風險,提升設備的安全能力,也能為制定適當、有效的設備安全防護策略提供參考,從而保障嵌入式通信設備的安全運行。本文從嵌入式通信設備的安全脆弱性分析出發(fā),研究了傳統(tǒng)安全測試手段的局限性,提出了嵌入式通信設備的安全性測試方法并在設備上進行了測試實踐,為提升嵌入式通信設備的安全防護能力提供了技術支撐和設計依據(jù)。
引用
[1] 熊婧,黃小昆.安全操作系統(tǒng)滲透測試方案研究[J].電子產(chǎn)品可靠性與環(huán)境試驗,2013:141-146.
[2] 董麗,趙琪,周鍵.嵌入式軟件安全性分析和測試方法研究[J].信息系統(tǒng)工程,2021(5):70-71.
[3] 李景煒.嵌入式Linux操作系統(tǒng)安全性研究[D].西安:西安電子科技大學,2015.