文/吳冬梅
嵌入式軟件以其所自身所具備的體積小、功耗低、系統(tǒng)資源占用少、靈活性強(qiáng)等特點(diǎn),在諸多領(lǐng)域中得到廣泛應(yīng)用。由于嵌入式軟件的主要服務(wù)對(duì)象為嵌入式系統(tǒng),如果軟件的安全性過(guò)低,則可能導(dǎo)致系統(tǒng)失效,這樣會(huì)造成嚴(yán)重的后果。所以需要對(duì)嵌入式軟件進(jìn)行測(cè)試,及時(shí)找出缺陷和漏洞,加以修補(bǔ)和優(yōu)化,提高嵌入式軟件的整體可靠性,使其在嵌入式系統(tǒng)中的作用得以充分發(fā)揮。借此,下面從安全性的角度,對(duì)嵌入式軟件測(cè)試展開(kāi)分析探討。
嵌入式軟件是軟件工程研究的重點(diǎn)課題,具體是指以嵌入的方式安裝在硬件中的操作系統(tǒng)和開(kāi)發(fā)工具軟件。大體上可將嵌入式軟件分為三類(lèi):嵌入式操作系統(tǒng)、嵌入式支撐軟件和嵌入式應(yīng)用軟件。嵌入式軟件的特點(diǎn)主要體現(xiàn)在如下幾個(gè)方面:
1.1.1 實(shí)用性
與普通軟件相比,嵌入式軟件具有非常獨(dú)特的實(shí)用性,這是其較為突出的一大特點(diǎn)。從服務(wù)對(duì)象上看,嵌入式軟件的主要服務(wù)對(duì)象是嵌入式系統(tǒng),所以要求嵌入式軟件與外部硬件設(shè)備之間具有緊密的關(guān)聯(lián)。絕大多數(shù)嵌入式系統(tǒng)都是以應(yīng)用作為核心,而從本質(zhì)的角度上講,嵌入式軟件就是應(yīng)用系統(tǒng),可以按照用戶(hù)提出的具體需求進(jìn)行定向開(kāi)發(fā)。因此,每種嵌入式軟件都具有獨(dú)特的應(yīng)用環(huán)境及實(shí)用價(jià)值。
1.1.2 靈活性
嵌入式軟件可以看成是一個(gè)模塊,這個(gè)模塊其能夠在各種嵌入式系統(tǒng)中進(jìn)行靈活運(yùn)用,并且在運(yùn)用的過(guò)程中,不會(huì)對(duì)原本的系統(tǒng)造成影響,即不改變系統(tǒng)的性能和原始功能。同時(shí),嵌入式軟件的體積非常小、功耗低、可靠性高,應(yīng)用時(shí)不會(huì)占用過(guò)多的系統(tǒng)資源,使用靈活,便于升級(jí)。
由于嵌入式軟件主要是為嵌入式系統(tǒng)服務(wù),如果軟件的安全性存在問(wèn)題,極有可能導(dǎo)致系統(tǒng)失效,這樣會(huì)造成災(zāi)難性的后果。所以必須對(duì)嵌入式軟件進(jìn)行嚴(yán)格的測(cè)試,借此來(lái)檢驗(yàn)軟件的安全性、可靠性。近年來(lái),應(yīng)用嵌入式設(shè)備的領(lǐng)域越來(lái)越多,嵌入式軟件的復(fù)雜程度不斷提升,因此,對(duì)嵌入式軟件進(jìn)行快速、有效地測(cè)試顯得尤為必要。通過(guò)對(duì)嵌入式軟件進(jìn)行測(cè)試,能夠及時(shí)發(fā)現(xiàn)軟件的缺陷和漏洞,從而可以進(jìn)行修補(bǔ)和優(yōu)化,這樣能使嵌入式軟件的安全性和可靠性得到進(jìn)一步提升,也才能使嵌入式軟件的作用獲得最大限度地發(fā)揮。
安全性是嵌入式軟件的一個(gè)重要指標(biāo),由此使得安全性測(cè)試成為嵌入式軟件測(cè)試中的關(guān)鍵內(nèi)容。故障注入是驗(yàn)證軟件可靠性較為常用的一種方法,具體是指在軟件中生成一個(gè)錯(cuò)誤,使其引起硬件故障。目前,可進(jìn)行應(yīng)用的故障注入方式種類(lèi)較多,如對(duì)內(nèi)存數(shù)據(jù)進(jìn)行修改、借助應(yīng)用軟件生成故障等等。在此基礎(chǔ)上,通過(guò)模擬的方法,能夠使軟件安全測(cè)試的優(yōu)勢(shì)得以充分發(fā)揮,最后利用故障函數(shù),強(qiáng)制測(cè)試軟件進(jìn)入某種狀態(tài)。大量的實(shí)踐表明,這種測(cè)試方法,很難達(dá)到嵌入式軟件安全性測(cè)試的要求。為保證嵌入式軟件的安全性,需要使用相關(guān)測(cè)試平臺(tái),從軟件運(yùn)行可靠性的層面進(jìn)行測(cè)試,如果結(jié)果合格,則說(shuō)明嵌入式軟件安全,若是不合格,表明嵌入式軟件存在安全漏洞。
2.2.1 安全性測(cè)試的主要環(huán)節(jié)
嵌入式軟件從設(shè)計(jì)開(kāi)發(fā)到完善直至投入使用是一個(gè)生命周期,由于嵌入式軟件的主要服務(wù)對(duì)象為嵌入式系統(tǒng),所以必須確保開(kāi)發(fā)出來(lái)的嵌入式軟件具有較高的安全性,這樣才能保證嵌入式系統(tǒng)的運(yùn)行安全、穩(wěn)定。因此,嵌入式軟件除了在開(kāi)發(fā)時(shí)需要進(jìn)行安全性測(cè)試之外,在應(yīng)用過(guò)程中,仍然要進(jìn)行安全性測(cè)試,保證軟件不會(huì)出現(xiàn)安全性方面的問(wèn)題。從重要程度上看,嵌入式軟件開(kāi)發(fā)環(huán)節(jié)中的安全性測(cè)試,要比后續(xù)使用階段的安全性測(cè)試更加重要,這是因?yàn)槿绻_(kāi)發(fā)的軟件本身就存在安全漏洞,那么將無(wú)法滿(mǎn)足系統(tǒng)的應(yīng)用要求。鑒于此,現(xiàn)階段對(duì)嵌入式軟件的安全性測(cè)試,基本都集中在軟件開(kāi)發(fā)環(huán)節(jié)。
2.2.2 測(cè)試環(huán)境的搭建思路
在對(duì)嵌入式軟件進(jìn)行安全性測(cè)試前,要先搭建一個(gè)測(cè)試環(huán)境,具體做法如下:為確保輸入的有效性,可采用檢測(cè)軟件基本單位的方法,完成軟件單元的安全性測(cè)試,借助軟件防御策略,避免惡意入侵及操作不當(dāng)對(duì)嵌入式軟件安全造成危害;當(dāng)軟件單元測(cè)試完畢后,可對(duì)軟件進(jìn)行集成測(cè)試,以軟件的安全屬性變化對(duì)測(cè)試環(huán)境的影響,作為集成測(cè)試的指導(dǎo)依據(jù)。在集成測(cè)試環(huán)節(jié)中,主要是利用測(cè)試環(huán)境對(duì)嵌入式軟件中存在的缺陷進(jìn)行驗(yàn)證,若是軟件存在缺陷,則表明其安全性不足,反之,說(shuō)明軟件安全;集成測(cè)試結(jié)束后,便可在模擬環(huán)境中,對(duì)軟件進(jìn)行驗(yàn)收測(cè)試,將找到的漏洞納入入侵矩陣,據(jù)此對(duì)軟件的安全缺陷進(jìn)行識(shí)別。
2.2.3 測(cè)試環(huán)境的實(shí)現(xiàn)
在嵌入式軟件開(kāi)發(fā)階段進(jìn)行安全性測(cè)試時(shí),漏洞檢測(cè)是關(guān)鍵內(nèi)容,為使測(cè)試過(guò)程得以簡(jiǎn)化,可直接在宿主機(jī)上對(duì)測(cè)試環(huán)境進(jìn)行仿真模擬。在PC機(jī)上安裝模擬器,使其在C語(yǔ)言環(huán)境下運(yùn)行,然后配置相關(guān)變量,此時(shí)便可進(jìn)行模擬測(cè)試。通過(guò)模擬器對(duì)嵌入式軟件進(jìn)行安全性測(cè)試的過(guò)程中,模擬器的啟動(dòng)方法有兩種,一種是直接啟動(dòng),即雙擊解壓包打開(kāi)相關(guān)程序,從命令窗口將程序?qū)肽M器中;另一種將需要測(cè)試的軟件導(dǎo)入到集成環(huán)境中,在導(dǎo)航頁(yè)面上開(kāi)啟模擬器。
2.3.1 軟件功能的安全測(cè)試
嵌入式軟件以實(shí)用性而著稱(chēng),一款軟件的實(shí)用性主要與功能有關(guān),所以在對(duì)嵌入式軟件進(jìn)行測(cè)試的過(guò)程中,應(yīng)當(dāng)重點(diǎn)對(duì)軟件的功能進(jìn)行安全測(cè)試,此項(xiàng)測(cè)試可以軟件的安全需求分析與驗(yàn)證為基礎(chǔ)。程序開(kāi)發(fā)人員在對(duì)嵌入式軟件進(jìn)行設(shè)計(jì)時(shí),為確保軟件本身的安全性,通常會(huì)按照具體的安全需求,增設(shè)各種安全措施,比如,數(shù)據(jù)加密、權(quán)限管理等等,據(jù)此對(duì)測(cè)試用例進(jìn)行設(shè)計(jì),最后使用與功能測(cè)試相似的方法,對(duì)嵌入式軟件功能的安全性進(jìn)行測(cè)試。目前,黑盒測(cè)試是嵌入式軟件功能測(cè)試中較為常用的一種方法,該方法的基本原理如下:將軟件程序視作為無(wú)法開(kāi)啟的黑盒子,并在程序接口進(jìn)行測(cè)試,檢查程序的功能是否能夠正常使用,如果可以使用,則說(shuō)明軟件的功能安全、可靠,反之表明軟件的功能存在安全問(wèn)題。
2.3.2 軟件漏洞的安全測(cè)試
對(duì)于嵌入式軟件而言,漏洞是安全測(cè)試的重點(diǎn)內(nèi)容,如果嵌入式軟件存在漏洞,那么黑客便可利用這個(gè)漏洞對(duì)系統(tǒng)進(jìn)行入侵,從而達(dá)到獲取數(shù)據(jù)信息和破壞系統(tǒng)運(yùn)行的目的。所以,程序人員在對(duì)軟件漏洞進(jìn)行安全性測(cè)試時(shí),應(yīng)當(dāng)站在黑客的角度,這樣才能找出軟件中存在的各種漏洞。嵌入式軟件漏洞的形成原因比較多,因此對(duì)漏洞進(jìn)行安全性測(cè)試并沒(méi)有固定的方法,大量的實(shí)踐表明,DREAR模型的效果較好。
在嵌入式軟件安全測(cè)試中,找出軟件存在的缺陷和漏洞是最終目標(biāo),對(duì)此可運(yùn)用C++代碼挖掘軟件漏洞。挖掘嵌入式軟件的漏洞時(shí),靜態(tài)分析是比較實(shí)用的一種方法,雖然該方法在實(shí)際應(yīng)用中存在漏誤報(bào)的可能性,但卻并不影響其應(yīng)用效果。具體操作過(guò)程如下:將待測(cè)試的嵌入式軟件導(dǎo)入靜態(tài)分析工具當(dāng)中,靜態(tài)分析工具可根據(jù)現(xiàn)有的安全規(guī)則,對(duì)軟件中的漏洞進(jìn)行挖掘,并且還能分析出經(jīng)漏洞產(chǎn)生的攻擊,由此可為漏洞修補(bǔ)提供依據(jù)。惡意代碼漏洞是威脅嵌入式軟件安全的主要漏洞之一,在安全測(cè)試時(shí),應(yīng)當(dāng)重點(diǎn)對(duì)其進(jìn)行分析。由于受到定義類(lèi)型的限制,使得field無(wú)法受到有效的保護(hù),這樣一來(lái)很容易遭到惡意代碼入侵,同時(shí),field是一個(gè)穩(wěn)定性較低的數(shù)據(jù)組合,當(dāng)一個(gè)靜態(tài)域?qū)δ硞€(gè)數(shù)據(jù)組合進(jìn)行引用時(shí),可能會(huì)被惡意代碼訪(fǎng)問(wèn)。通過(guò)掃描的方式發(fā)現(xiàn)的軟件漏洞,可從被導(dǎo)出的XML文件中進(jìn)行查詢(xún)。由此便可非常清晰地了解到嵌入式軟件中存在的漏洞和缺陷類(lèi)型,并且還能對(duì)漏洞進(jìn)行精確定位。程序人員根據(jù)測(cè)試結(jié)果,可對(duì)軟件中的漏洞進(jìn)行修補(bǔ),這樣能夠使軟件的安全性得到進(jìn)一步提升。
綜上所述,嵌入式軟件的應(yīng)用領(lǐng)域不斷拓寬,用戶(hù)對(duì)其安全性的要求也隨之提高。因此,在嵌入式軟件開(kāi)發(fā)設(shè)計(jì)階段,程序人員應(yīng)當(dāng)從安全性的角度,對(duì)嵌入式軟件進(jìn)行測(cè)試,從而確保開(kāi)發(fā)出來(lái)的軟件具有足夠高的安全性,這樣才能保證嵌入式系統(tǒng)的運(yùn)行可靠性。