戰(zhàn)爭(zhēng)和防御系統(tǒng)中過(guò)時(shí)的遺留代碼庫(kù)會(huì)造成安全漏洞,并禁止引入以網(wǎng)絡(luò)為中心的新技術(shù)。通過(guò)靜態(tài)分析,這些系統(tǒng)可以進(jìn)行改造,使其具有高完整性,使設(shè)備更具技術(shù)競(jìng)爭(zhēng)力。
戰(zhàn)爭(zhēng)和防御的世界已經(jīng)發(fā)生了變化。僅近10年來(lái),排名最佳軍隊(duì)的主要因素就從僅僅擁有最大、最強(qiáng)大的戰(zhàn)斗力轉(zhuǎn)變?yōu)閼?zhàn)場(chǎng)上人員和軍事機(jī)器之間最好的溝通。這些軍事機(jī)器不再像幾十年前那樣以硬件為中心;大多數(shù)使用嵌入式軟件系統(tǒng)來(lái)執(zhí)行基本功能。例如,目前部署在伊拉克和阿富汗的艾布拉姆斯M1坦克有一個(gè)計(jì)算機(jī)輔助瞄準(zhǔn)系統(tǒng),可以與熱成像系統(tǒng)一起精確瞄準(zhǔn)。
這些類型的嵌入式系統(tǒng)被設(shè)計(jì)為盡可能堅(jiān)固和可靠,因?yàn)閴勖Q于它們的有效性。這些系統(tǒng)是高度專業(yè)化的,一旦建成并部署到現(xiàn)場(chǎng),通常意味著在設(shè)備的使用壽命內(nèi)無(wú)需進(jìn)一步改造即可使用。不幸的是,這樣的設(shè)計(jì)理念沒(méi)有考慮到隨著技術(shù)的進(jìn)步,這些系統(tǒng)最終需要發(fā)揮越來(lái)越大的作用,而安全性可能成為一個(gè)問(wèn)題。
同樣,在過(guò)去的幾十年里,網(wǎng)絡(luò)在軍事設(shè)備中越來(lái)越多地發(fā)揮了越來(lái)越大的作用。對(duì)遺留系統(tǒng)進(jìn)行現(xiàn)代化改造以利用依賴于軟件的新網(wǎng)絡(luò)功能已成為強(qiáng)制性要求。今天,坦克和其他車輛現(xiàn)在是一個(gè)更大的互連系統(tǒng)中的節(jié)點(diǎn),不斷共享信息。系統(tǒng)中的每個(gè)節(jié)點(diǎn)都可以與其網(wǎng)絡(luò)中的其他節(jié)點(diǎn)(甚至其他網(wǎng)絡(luò)中的節(jié)點(diǎn))一起工作,以解決任何一個(gè)系統(tǒng)無(wú)法處理的問(wèn)題。
軟件驅(qū)動(dòng)的系統(tǒng),如包含移動(dòng)通信(COTM)系統(tǒng)的防雷伏擊保護(hù)(MRAP)車輛,依賴于軟件架構(gòu),并且必須進(jìn)行現(xiàn)代化改造才能以網(wǎng)絡(luò)為中心?,F(xiàn)代化是一個(gè)很好的策略,即使是可選的,因?yàn)閺拈L(zhǎng)遠(yuǎn)來(lái)看,這樣做可以降低軟件維護(hù)成本。一旦構(gòu)建,遺留應(yīng)用程序理論上應(yīng)該永遠(yuǎn)存在,但它們很少這樣做,因?yàn)槿粘>S護(hù)最終會(huì)導(dǎo)致代碼庫(kù)惡化。維護(hù)舊代碼非常昂貴(每年高達(dá)初始開(kāi)發(fā)預(yù)算的 10%),因?yàn)樗婕靶扪a(bǔ)漏洞和提高可靠性。這通常由擁有罕見(jiàn)正確技能的昂貴開(kāi)發(fā)人員完成。相比之下,新代碼要便宜得多。盡管對(duì)代碼進(jìn)行現(xiàn)代化改造的前期成本較高,但這樣做通常更好,因?yàn)閺拈L(zhǎng)遠(yuǎn)來(lái)看,定期長(zhǎng)期維護(hù)舊代碼的成本更高。
遺留系統(tǒng)通常進(jìn)行現(xiàn)代化改造(但由于成本原因沒(méi)有完全被新單位取代),因?yàn)樵S多目前部署的軍事系統(tǒng)至少還有十年的計(jì)劃功能壽命。由于安全性和可靠性至關(guān)重要,因此必須在不影響先前質(zhì)量或超出預(yù)算的情況下對(duì)軟件進(jìn)行現(xiàn)代化改造以包含所需的新功能。靜態(tài)分析使此任務(wù)比其他任務(wù)更容易。
用于對(duì)舊代碼進(jìn)行現(xiàn)代化的靜態(tài)分析
修改遺留代碼以獲得新功能或使其符合新標(biāo)準(zhǔn)不應(yīng)輕易完成。由于遺留系統(tǒng)通常是關(guān)鍵任務(wù),并且已經(jīng)部署在現(xiàn)場(chǎng),因此修訂應(yīng)在現(xiàn)有代碼中引入最少的新編碼缺陷。隨著代碼庫(kù)變得越來(lái)越復(fù)雜,隔離和消除缺陷變得更加困難,因?yàn)橛懈嗟淖兞靠赡軙?huì)以不可預(yù)見(jiàn)的方式與其他缺陷交互并堆疊在上面。
雖然較舊的工具使用語(yǔ)法和基于樣式的測(cè)試,但現(xiàn)代靜態(tài)分析通過(guò)數(shù)據(jù)流分析與布爾滿足性結(jié)合使用路徑模擬。路徑模擬的工作原理是模擬程序在編譯并執(zhí)行其代碼庫(kù)中的每個(gè)函數(shù)后將執(zhí)行的操作。這允許增加對(duì)資源分配問(wèn)題、指針管理不善、緩沖區(qū)和字符串使用不當(dāng)以及污染數(shù)據(jù)處理的檢測(cè)。布爾滿足性將程序中的每個(gè)操作轉(zhuǎn)換為布爾變量,并使用此數(shù)據(jù)來(lái)測(cè)試潛在的運(yùn)行時(shí)問(wèn)題,如整數(shù)溢出。這些方法產(chǎn)生的假陽(yáng)性率低至 15%。
然而,要拯救的是靜態(tài)分析,它可以幫助開(kāi)發(fā)人員重構(gòu)和重組遺留程序的代碼庫(kù),以使其達(dá)到現(xiàn)代標(biāo)準(zhǔn)。靜態(tài)分析揭示了在創(chuàng)建遺留項(xiàng)目時(shí)執(zhí)行的步驟,以便開(kāi)發(fā)人員可以了解程序的當(dāng)前架構(gòu)和初衷。此功能創(chuàng)新減輕了在嘗試升級(jí)代碼時(shí)檢測(cè)資源分配問(wèn)題、指針管理不善、緩沖區(qū)使用不當(dāng)、字符串使用和受污染的數(shù)據(jù)處理等許多猜測(cè)。靜態(tài)分析工具,例如Coverity提供的分析工具,也能夠顯示有關(guān)任何有問(wèn)題的缺陷的信息,并顯示它如何對(duì)整個(gè)程序產(chǎn)生不利影響。
與其他依賴軟件的行業(yè)類似,國(guó)防不能允許其技術(shù)落后于時(shí)代。遺留代碼的現(xiàn)代化是不可避免的,但高級(jí)靜態(tài)分析提供了可靠的補(bǔ)救措施。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5068文章
19020瀏覽量
303311 -
移動(dòng)通信
+關(guān)注
關(guān)注
10文章
2600瀏覽量
69794
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論