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