作者:CHRIS TAPP,JAY THOMAS
經(jīng)過適當(dāng)測(cè)試和驗(yàn)證的安全編碼實(shí)踐有助于確保軍事系統(tǒng)的可靠和安全運(yùn)行。組織應(yīng)從頭開始,結(jié)合使用靜態(tài)和動(dòng)態(tài)分析、單元和集成測(cè)試以及需求可追溯性。
軍事系統(tǒng)中的安全漏洞可能是毀滅性的。具有嚴(yán)重后果的安全中斷的一個(gè)例子是據(jù)稱在2011年由中央情報(bào)局在伊朗上空捕獲的美國(guó)RQ-170無人機(jī)(UAV)。據(jù)伊朗稱,該飛船被伊朗網(wǎng)絡(luò)戰(zhàn)部隊(duì)安全降落,并設(shè)法接管了它。斷言是,無人機(jī)是通過干擾衛(wèi)星和陸地控制信號(hào)捕獲的,隨后是GPS欺騙攻擊,該攻擊向無人機(jī)提供虛假的GPS數(shù)據(jù),使其降落在伊朗,無人機(jī)認(rèn)為是其在阿富汗的大本營(yíng)。
雖然實(shí)際細(xì)節(jié)可能永遠(yuǎn)不清楚,但似乎無人機(jī)確實(shí)受到了損害,以至于它可以安全地降落在伊朗境內(nèi),并被敵人擁有以進(jìn)行可能的逆向工程。該無人機(jī)軟件中的某些內(nèi)容允許訪問系統(tǒng)的至少一部分,這顯然打開了對(duì)其重要內(nèi)部的訪問。
保護(hù)嵌入式系統(tǒng)
嵌入式系統(tǒng)現(xiàn)在滲透到軍隊(duì)中,從車輛控制、通信、武器控制和制導(dǎo)到自主和半自主系統(tǒng),包括無人機(jī)和類似飛行器。這些設(shè)備現(xiàn)在相互連接,用于控制和協(xié)調(diào)目的。為了人員安全、完成任務(wù)的能力以及通常的國(guó)家安全,這些設(shè)備必須對(duì)其操作員安全且操作可靠。此外,它們必須免受未經(jīng)授權(quán)的訪問和攻擊。如果它們不安全,則不能認(rèn)為它們是安全或可靠的。因此,對(duì)安全性、可靠性和安全性的要求是不可分割和相互依存的。
這些要求不能是事后的想法,而必須從頭開始構(gòu)建。它們還經(jīng)常要求軟件遵守某些編碼準(zhǔn)則,如MISRA或CERT C,并且必須遵循工業(yè)或政府規(guī)定的標(biāo)準(zhǔn),如DO-178C。隨著這些系統(tǒng)越來越受到認(rèn)證要求的約束,必須證明和記錄編碼和功能的正確性。
盡管有許多策略可用于實(shí)現(xiàn)安全性,但仍有必要確保這些策略也正確編碼 - 無論是在編碼標(biāo)準(zhǔn)方面還是在整個(gè)應(yīng)用程序中的正確功能方面。傳輸層安全性 (TSL) 等傳輸協(xié)議 – 這是對(duì)安全套接字層 (SSL)、安全文件傳輸協(xié)議 (SFTP) 和其他協(xié)議的改進(jìn) – 現(xiàn)在被廣泛使用,但通常從組織外部獲取。其他策略可能包括使用安全設(shè)備驅(qū)動(dòng)程序、遠(yuǎn)程實(shí)施安全和加密固件升級(jí)的過程,以及個(gè)人驗(yàn)證協(xié)議,如密碼、視網(wǎng)膜掃描和射頻識(shí)別 (RFID) 芯片,以確保訪問安全。其他分層安全策略僅允許對(duì)系統(tǒng)部分進(jìn)行選定訪問,但這些策略也可能引入漏洞,如果未檢測(cè)到,這些漏洞可能會(huì)被利用。
過去,組織可能已經(jīng)能夠通過手動(dòng)代碼審查和軟件演練來檢查其代碼。然而,當(dāng)今關(guān)鍵程序的規(guī)模和復(fù)雜性使得使用這種方法和手段無法確保完整的分析。需要一套新的測(cè)試和分析工具及方法來滿足當(dāng)今的安全要求。
建立和實(shí)施安全性
當(dāng)今全面的工具套件在單個(gè)開發(fā)環(huán)境中集成了用于測(cè)試、分析和驗(yàn)證的工具。使用工具環(huán)境還可以幫助在組織內(nèi)建立一種規(guī)范的方法,該方法可以幫助團(tuán)隊(duì)協(xié)作,即使他們可能在不同的位置工作。
為了滿足認(rèn)證或資格要求,實(shí)現(xiàn)雙向需求可追溯性的工具(從需求和設(shè)計(jì)到實(shí)施、驗(yàn)證活動(dòng)和工件)可以使組織與競(jìng)爭(zhēng)對(duì)手區(qū)分開來,并確保獲得設(shè)備批準(zhǔn)的最短路徑。需求管理工具允許團(tuán)隊(duì)處理單個(gè)活動(dòng),并將代碼和驗(yàn)證工件鏈接回更高級(jí)別的目標(biāo)。
需要基于需求文檔的雙向可追溯性,以確保一個(gè)或多個(gè)低級(jí)別需求涵蓋每個(gè)高級(jí)需求,并且每個(gè)低級(jí)別需求都可以追溯到高級(jí)需求。
除此之外,還需要這些工具來執(zhí)行基于靜態(tài)分析、動(dòng)態(tài)覆蓋分析和單元/集成測(cè)試的廣泛基礎(chǔ)測(cè)試。這些結(jié)果有助于確保安全性、功能安全性和符合編碼標(biāo)準(zhǔn),以及跟蹤需求并通過廣泛測(cè)試確保它們是否實(shí)際按預(yù)期運(yùn)行的能力。
靜態(tài)和動(dòng)態(tài)分析:安全合作伙伴
在確保安全方面,兩個(gè)主要問題是數(shù)據(jù)和控制。設(shè)計(jì)人員必須考慮誰有權(quán)訪問數(shù)據(jù)、誰可以從數(shù)據(jù)中讀取/寫入、數(shù)據(jù)如何流動(dòng)以及不同級(jí)別的訪問和控制。為了解決這些問題,靜態(tài)和動(dòng)態(tài)分析必須同時(shí)進(jìn)行。
在靜態(tài)分析方面,這些工具使用未編譯的源代碼來檢查代碼與所選規(guī)則,這些規(guī)則可以是支持的標(biāo)準(zhǔn)以及開發(fā)人員或公司可能指定的任何自定義規(guī)則和要求的任意組合。這些工具還可以查找可能危及安全性的軟件結(jié)構(gòu),檢查內(nèi)存保護(hù)以確定誰有權(quán)訪問內(nèi)存的哪些部分,以及跟蹤可能遍歷內(nèi)存位置的指針。為了獲得最佳結(jié)果,信息應(yīng)以圖形屏幕顯示,以便于評(píng)估,以確保符合編碼標(biāo)準(zhǔn)。
動(dòng)態(tài)分析測(cè)試編譯的代碼,該代碼使用編譯器生成的符號(hào)數(shù)據(jù)鏈接回源代碼。動(dòng)態(tài)分析,尤其是代碼覆蓋率分析,需要大量的測(cè)試。開發(fā)人員可能能夠手動(dòng)生成和管理自己的測(cè)試用例(生成測(cè)試用例的典型方法),從需求文檔開始工作,該過程可能會(huì)以不同程度的有效性刺激和監(jiān)視應(yīng)用程序的各個(gè)部分。然而,鑒于當(dāng)今代碼的大小和復(fù)雜性,這種方法通常不足以獲得某些必需的認(rèn)證。
圖1:LDRA 工具套件的動(dòng)態(tài)分析功能可生成基于當(dāng)前測(cè)試運(yùn)行的變量和參數(shù)使用情況報(bào)告。該報(bào)告突出顯示了文件中使用該變量的文件和位置,并使用自定義篩選器進(jìn)行了更精細(xì)的測(cè)試。

安全性需要對(duì)功能漏洞進(jìn)行嚴(yán)格而徹底的測(cè)試,以及遵守正在運(yùn)行的應(yīng)用程序中的編碼規(guī)則和指令。如果覆蓋率分析要求包括語句或分支/決策覆蓋率、過程/函數(shù)調(diào)用覆蓋率,或者在更嚴(yán)格的環(huán)境中,修改條件/決策覆蓋率 (MC/DC) — 則這些通常需要源代碼和目標(biāo)代碼分析。它還可能需要自動(dòng)生成測(cè)試,作為衡量測(cè)試有效性的一種手段(圖 1)。
自動(dòng)測(cè)試生成基于代碼的靜態(tài)分析,并在動(dòng)態(tài)分析期間使用此信息來確定對(duì)應(yīng)用程序中軟件組件的適當(dāng)激勵(lì)?;具吔缰禍y(cè)試的這一支柱可以通過從需求文檔手動(dòng)創(chuàng)建的功能測(cè)試輕松擴(kuò)展。這些應(yīng)包括任何功能安全測(cè)試,例如模擬嘗試訪問控制設(shè)備或向其提供會(huì)改變其任務(wù)的錯(cuò)誤數(shù)據(jù)。此外,基于創(chuàng)建的測(cè)試的功能測(cè)試應(yīng)包括穩(wěn)健性,例如測(cè)試不允許的輸入和異常條件的結(jié)果。
深入了解代碼
發(fā)現(xiàn)安全漏洞可能涉及更微妙的問題。例如,存在與“死”代碼區(qū)域相關(guān)的危險(xiǎn),這些代碼可能被黑客激活或系統(tǒng)中的模糊事件用于惡意目的。盡管從頭開始實(shí)現(xiàn)安全性是理想的,但大多數(shù)項(xiàng)目都包含預(yù)先存在的代碼,這些代碼可能沒有經(jīng)過與當(dāng)前項(xiàng)目相同的嚴(yán)格測(cè)試。靜態(tài)和動(dòng)態(tài)分析一起使用可以揭示死代碼區(qū)域,這些區(qū)域可能是危險(xiǎn)源或可能占用所需空間。
區(qū)分真正死代碼和很少使用的代碼的能力是雙向需求可追溯性很重要的另一個(gè)原因;為了能夠檢查應(yīng)用程序中的代碼是否滿足需求,還可以從實(shí)際代碼中將代碼追溯到實(shí)際需求。如果這些路由都沒有顯示連接,則代碼肯定不屬于那里。
因此,靜態(tài)分析的功能是分析源代碼以獲得正確的編程實(shí)踐,還可以幫助為覆蓋率測(cè)試、功能測(cè)試、控制和數(shù)據(jù)流分析設(shè)置動(dòng)態(tài)分析。后者對(duì)于突出和糾正潛在的問題領(lǐng)域并產(chǎn)生軟件質(zhì)量指標(biāo)至關(guān)重要。
為滿足機(jī)載或作戰(zhàn)系統(tǒng)的嚴(yán)格安全要求而開發(fā)的公司可能需要展示對(duì)數(shù)據(jù)流和控制流的分析,以進(jìn)行軟件認(rèn)證。在根據(jù)DO-178C認(rèn)證機(jī)載軟件和系統(tǒng)的情況下,需要在對(duì)象級(jí)別進(jìn)行驗(yàn)證。這涉及將源代碼級(jí)別的代碼覆蓋率與目標(biāo)代碼級(jí)別的代碼覆蓋率相關(guān)聯(lián)的能力。在某些情況下,可能還需要提供在匯編程序級(jí)別擴(kuò)展代碼覆蓋率的機(jī)制。此擴(kuò)展對(duì)于 DO-178C A 級(jí)認(rèn)證特別有用,其中軟件故障可能導(dǎo)致飛機(jī)損失和/或生命損失。
從單元測(cè)試開始并發(fā)展項(xiàng)目
除非可以從頭開始進(jìn)行測(cè)試,否則從頭開始考慮和開發(fā)安全性沒有多大幫助 - 這包括在目標(biāo)硬件可用之前在主機(jī)開發(fā)系統(tǒng)上進(jìn)行測(cè)試。在這個(gè)階段,沒有人在談?wù)擁?xiàng)目接近完成的階段,因此通??梢赃M(jìn)行早期單元測(cè)試,然后進(jìn)行集成測(cè)試,因?yàn)槿蝿?wù)來自不同團(tuán)隊(duì)或開發(fā)人員。
此方法也適用于可能從頭開始編寫、從其他項(xiàng)目引入、作為商業(yè)產(chǎn)品購(gòu)買或作為開源獲得的代碼部分。即使是內(nèi)部代碼也需要檢查,因?yàn)樗畛蹩赡軟]有經(jīng)過相同的分析。使用單元測(cè)試工具的決定歸結(jié)為商業(yè)決策:產(chǎn)品開發(fā)中發(fā)現(xiàn)缺陷的時(shí)間越晚,修復(fù)成本就越高(圖 2)。
圖2:在開發(fā)周期的后期,修復(fù)缺陷的成本急劇增加。

可以在不考慮硬件時(shí)序的情況下完成主機(jī)上的功能測(cè)試,在某些情況下,可以在具有模擬連接的外圍設(shè)備的基于主機(jī)的虛擬目標(biāo)上執(zhí)行。在主機(jī)上執(zhí)行的相同測(cè)試也必須在目標(biāo)硬件上執(zhí)行,以確保正確的功能測(cè)試。
將全面的測(cè)試和分析框架應(yīng)用于組織的開發(fā)過程,可以大大提高安全措施的徹底性和準(zhǔn)確性,以保護(hù)重要系統(tǒng)。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317616 -
RFID
+關(guān)注
關(guān)注
391文章
6448瀏覽量
242478 -
gps
+關(guān)注
關(guān)注
22文章
2986瀏覽量
169403
發(fā)布評(píng)論請(qǐng)先 登錄
直流充電安全測(cè)試負(fù)載方案解析
全面解析電動(dòng)汽車充電樁測(cè)試方案與自動(dòng)化測(cè)試系統(tǒng)
AI如何增強(qiáng)車輛安全性和用戶交互性
負(fù)載箱在電力系統(tǒng)測(cè)試中的應(yīng)用與優(yōu)勢(shì)
如何提高嵌入式代碼質(zhì)量?
斷路器的檢測(cè)方法
電氣安規(guī)分析儀的原理和應(yīng)用
電池的安全性測(cè)試項(xiàng)目有哪些?

電池安全性測(cè)試關(guān)鍵:圓柱與軟包電池測(cè)試設(shè)備指南

永磁同步電機(jī)的安全性分析
村田貼片電容的使用安全性
汽車?yán)走_(dá)回波發(fā)生器的技術(shù)原理和應(yīng)用場(chǎng)景
智能系統(tǒng)的安全性分析
MSPM0-高級(jí)控制計(jì)時(shí)器有助于實(shí)現(xiàn)更好的控制和更好的數(shù)字輸出

有助于提高網(wǎng)絡(luò)設(shè)備性能的FRAM SF25C20(MB85RS2MT)

評(píng)論