任秋潔 韓英
摘 要
從嵌入式軟件安全性測試的必要性和需求特點(diǎn)出發(fā),本文分析了嵌入式軟件安全測試的方式方法,并對(duì)安全測試關(guān)鍵技術(shù)和面臨的難點(diǎn)等進(jìn)行論述。期望通過本文的研究能夠?qū)η度胧较到y(tǒng)軟件信息安全水平的提升有所幫助。
關(guān)鍵詞
嵌入式軟件;安全測試;測試方法
中圖分類號(hào): TP311.52 ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 17 . 18
Abstract
Based on the demand of embedded software security testing, this paper analyzes the embedded software security testing methods, key technologies and difficulties. It is expected that the research of this paper can be helpful to the improvement of information security of embedded system software.
Key words
Embedded software;Security testing;Testing method
1 嵌入式系統(tǒng)軟件的特點(diǎn)及其安全需求
嵌入式系統(tǒng)從構(gòu)架上來看一般可以分成3-4個(gè)層次:硬件層、硬件接口層(驅(qū)動(dòng)層)、操作系統(tǒng)層(中間層)和應(yīng)用層。而嵌入式軟件在設(shè)計(jì)之初就要求具備功能穩(wěn)定、可靠性好、實(shí)時(shí)性高、系統(tǒng)資源占用少等特點(diǎn)?,F(xiàn)階段,雖然面向物聯(lián)網(wǎng)應(yīng)用的嵌入式設(shè)備越來越多樣化,但其在邏輯架構(gòu)層次本質(zhì)上與嵌入式系統(tǒng)架構(gòu)并無太大區(qū)別[1]。
嵌入式軟件的自身特性決定了其獨(dú)特的安全需求:一是功能穩(wěn)定、可靠性好,就要求功能安全是嵌入式軟件的首要目標(biāo),即使在受到攻擊的情況下,也有較強(qiáng)的魯棒性和容災(zāi)恢復(fù)能力;二是實(shí)時(shí)性高、系統(tǒng)資源占用少,要求不能部署過于復(fù)雜的安防手段;三是專用性強(qiáng)、軟件與硬件系統(tǒng)耦合,就要求軟件加固或應(yīng)用升級(jí)也須匹配目標(biāo)設(shè)備硬件,開展測試也需要特定的硬件環(huán)境。近年來嵌入式產(chǎn)品的應(yīng)用遍及航天、醫(yī)療、智能家居等各個(gè)領(lǐng)域,嵌入式安全不僅涉及個(gè)人隱私,甚至關(guān)乎國計(jì)民生,這對(duì)嵌入式系統(tǒng)的安全性提出了更高的要求。與之相矛盾的是和嵌入式系統(tǒng)相關(guān)的安全事件頻頻發(fā)生,加強(qiáng)嵌入式軟件的安全測試十分必要。
2 嵌入式軟件安全測試方法
在軟件的整個(gè)生命周期內(nèi),軟件測試對(duì)項(xiàng)目的開發(fā)和交付起著非常關(guān)鍵的作用,嵌入式軟件安全性測試一般針對(duì)安全需求設(shè)計(jì),首先開展功能安全驗(yàn)證,然后基于安全參考標(biāo)準(zhǔn)或模型對(duì)被測對(duì)象進(jìn)行風(fēng)險(xiǎn)分析,再進(jìn)行全面的信息安全測試,并驗(yàn)證結(jié)果[2]。
2.1 嵌入式軟件功能安全測試
嵌入式軟件的功能安全測試通??梢越Y(jié)合嵌入式軟件的通用測試開展,例如在單元測試中校驗(yàn)?zāi)K開發(fā)是否滿足了設(shè)計(jì)方案中提出的安全要求,在集成測試中設(shè)計(jì)功能安全測試用例,檢驗(yàn)各模塊間的接口和通信是否安全[3]?,F(xiàn)在越來越多的嵌入式軟件會(huì)考慮自身安全而增加專業(yè)的系統(tǒng)安全防護(hù)設(shè)計(jì),例如身份認(rèn)證、加密傳輸、數(shù)據(jù)備份與恢復(fù)等,相應(yīng)的也要針對(duì)性的設(shè)計(jì)功能安全測試用例,確保其達(dá)到設(shè)計(jì)要求。
2.2 嵌入式軟件信息安全測試
嵌入式軟件的信息安全測試又稱滲透測試,測試人員在進(jìn)行測試時(shí),應(yīng)當(dāng)采用攻擊者的視角,去發(fā)現(xiàn)軟件中存在的各種安全缺陷和漏洞。其一般流程如下:根據(jù)安全需求選擇安全測試參考標(biāo)準(zhǔn)并確立安全規(guī)則,對(duì)嵌入式軟件環(huán)境平臺(tái)進(jìn)行安全性分析,對(duì)程序開發(fā)語言進(jìn)行安全性分析,對(duì)被測軟件進(jìn)行威脅建模,搭建測試平臺(tái),按照測試大綱同步進(jìn)行已知漏洞挖掘和未知漏洞挖掘,對(duì)漏洞進(jìn)行分級(jí)并進(jìn)行驗(yàn)證,提交測試結(jié)果和反饋。需要特別注意的是,在嵌入式軟件開發(fā)過程中被復(fù)用的代碼或引入的開源項(xiàng)目代碼應(yīng)該得到足夠的重視。一些已知漏洞,特別是嵌入式操作系統(tǒng)存在的已知漏洞可能會(huì)長期存在,可以采用基于指紋校驗(yàn)的漏洞匹配技術(shù)進(jìn)行已知漏洞的快速查驗(yàn)。
2.3 嵌入式軟件安全測試策略
嵌入式軟件安全測試策略的制定往往與軟件選擇的開發(fā)模式緊密相關(guān)。在V模型中,嵌入式軟件安全測試包括單元測試、集成測試和系統(tǒng)安全測試。但是這種測試策略忽視了安全測試對(duì)需求分析和系統(tǒng)設(shè)計(jì)的驗(yàn)證,介入周期晚,容易帶來額外的風(fēng)險(xiǎn)和開銷?;陔pV模型(W模型)的嵌入式軟件安全測試策略則要求測試的對(duì)象不僅僅是程序,需求分析、功能和設(shè)計(jì)同樣需要測試人員盡早介入進(jìn)行安全驗(yàn)證。但是V模型和雙V模型將開發(fā)、測試等活動(dòng)視為串行活動(dòng),不支持迭代也存在局限性。近年來興起了基于模型設(shè)計(jì)(MBD)的嵌入式產(chǎn)品開發(fā)模式,可以在縮短產(chǎn)品開發(fā)周期的同時(shí)保證嵌入式軟件的產(chǎn)品質(zhì)量。其在軟件安全測試流程中增加了模型規(guī)范性驗(yàn)證、模型在環(huán)測試、軟件在環(huán)測試和處理器在環(huán)測試等[4]。這種測試方法強(qiáng)調(diào)了模型的驅(qū)動(dòng)作用,針對(duì)某些有良好模型基礎(chǔ)的行業(yè)(比如汽車電控、航空航天)的嵌入式軟件,可以有效提升功能安全的測試效果,但對(duì)漏洞挖掘等信息安全測試的支持還不夠好。
3 嵌入式軟件安全測試關(guān)鍵技術(shù)
3.1 靜態(tài)分析技術(shù)
靜態(tài)分析技術(shù)指對(duì)嵌入式軟件進(jìn)行靜態(tài)的代碼分析和缺陷檢測。在不運(yùn)行被測程序的方式下,采用詞法語法分析、數(shù)據(jù)流控制流分析、規(guī)則檢查、字符串匹配和模型化分析等技術(shù)對(duì)代碼進(jìn)行分析掃描,發(fā)現(xiàn)其中的邏輯、語法錯(cuò)誤,確認(rèn)是否存在缺陷[5]。常見的靜態(tài)檢測工具有PC-Lint、QAC/C++、CPPcheck、StackAnalyzer、Splint、Findbugs等。靜態(tài)分析屬于白盒測試,該方法可以發(fā)現(xiàn)常見的代碼安全缺陷模式,如緩沖區(qū)溢出等,但會(huì)存在漏報(bào)率、誤報(bào)率較高的局限性。
3.2 動(dòng)態(tài)測試技術(shù)
動(dòng)態(tài)測試技術(shù)是指在嵌入式程序運(yùn)行過程中進(jìn)行測試分析、數(shù)據(jù)注入,檢查運(yùn)行結(jié)果與預(yù)期是否相符合,從而達(dá)到尋找程序漏洞的目的。動(dòng)態(tài)測試的核心要求是需要?jiǎng)討B(tài)執(zhí)行嵌入式系統(tǒng)程序,因而測試更為全面和貼合實(shí)際。測試中可以借助LVC手段構(gòu)建不同的測試環(huán)境,可以利用故障注入技術(shù)驗(yàn)證系統(tǒng)的魯棒性和安全性,但動(dòng)態(tài)測試技術(shù)也存在著依賴高素質(zhì)軟件測試人員、測試過程不細(xì)化的問題,需要與其他測試技術(shù)相結(jié)合,才能夠有效提升測試效果。
3.3 模糊測試技術(shù)
對(duì)于無法獲得源代碼的嵌入式軟件,選用黑盒模糊測試是最合適也是最有效的手段,該方法不需要被測對(duì)象的源代碼,可以解決閉源嵌入式設(shè)備的漏洞挖掘痛點(diǎn)問題。同時(shí),還可以模擬用戶的異常輸入或者惡意攻擊者的畸形數(shù)據(jù),發(fā)現(xiàn)更多的攻擊面探測,從而展示出真實(shí)攻擊狀態(tài)下的漏洞利用情況。但由于模糊測試中畸形數(shù)據(jù)的產(chǎn)生有很大隨機(jī)性,所以對(duì)程序的路徑覆蓋度不高,并且難以對(duì)測試進(jìn)度進(jìn)行量化。因此,在對(duì)嵌入式系統(tǒng)軟件開展模糊測試時(shí),往往采用基于先驗(yàn)知識(shí)的測試用例構(gòu)造算法提高數(shù)據(jù)包覆蓋效率,并優(yōu)化監(jiān)控算法、豐富異常處理策略來提高系統(tǒng)靈活性和自動(dòng)化程度。
4 嵌入式軟件安全測試面臨的挑戰(zhàn)
盡管針對(duì)嵌入式軟件安全的研究越來越深入,安全測試工具也越來越多,但當(dāng)前嵌入式軟件安全測試仍面臨挑戰(zhàn)。一是物聯(lián)網(wǎng)產(chǎn)品層出不窮導(dǎo)致安全測試需求多變。二是嵌入式產(chǎn)品的快速開發(fā)應(yīng)用需求與安全性測試時(shí)間經(jīng)濟(jì)開銷之間存在矛盾。三是存在漏洞的產(chǎn)品仍將長期使用,比如使用VxWorks、Android等早期版本發(fā)現(xiàn)問題后無力修補(bǔ)。四是缺乏高效的嵌入式軟件安全測試與漏洞檢測方法?,F(xiàn)有的嵌入式安全測試工具與漏洞挖掘方法,往往專注于細(xì)分領(lǐng)域,執(zhí)行效率不夠高效、發(fā)現(xiàn)的安全缺陷也不夠全面。但這些問題既是挑戰(zhàn),也是機(jī)遇,可以為我們未來深入開展嵌入式系統(tǒng)軟件安全測試技術(shù)研究提供牽引。
5 總結(jié)
本文首先分析了嵌入式軟件安全性測試的必要性和特點(diǎn),然后重點(diǎn)對(duì)嵌入式軟件安全測試的方式方法、測試策略和關(guān)鍵技術(shù)進(jìn)行分析闡述,提出了當(dāng)前嵌入式安全測試面臨的幾個(gè)挑戰(zhàn)。期望通過本文的研究能夠?qū)η度胧较到y(tǒng)軟件信息安全測試工作的開展和提升有所幫助。
參考文獻(xiàn)
[1]彭安妮,等.物聯(lián)網(wǎng)操作系統(tǒng)安全研究綜述[J].通信學(xué)報(bào),2018.39(03):22-34.
[2]林永峰,陳亮.面向安全性分析的嵌入式軟件測試方法研究[J]. 現(xiàn)代電子技術(shù),2016. 39(13):80-83.
[3]王磊.嵌入式軟件進(jìn)行功能測試的相關(guān)技術(shù)研究[J].自動(dòng)化與儀器儀表,2018(4):71-73.
[4]張亞楠,謝冬紅.基于模型設(shè)計(jì)的嵌入式軟件測試技術(shù)研究[J]. 電子世界,2018(09):66,68.
[5]葉亮.基于安全規(guī)則的源代碼分析方法研究[D].華中科技大學(xué),2013:3.