雖然連接的系統(tǒng)為更容易監(jiān)控、升級和增強帶來了新的機會,但它們也帶來了更易受攻擊的攻擊面。不幸的是,連接系統(tǒng)的任何單一防御都不能保證不可穿透性。幸運的是,有多個級別的安全性可以確保如果一個級別失敗,其他級別就會站穩(wěn)腳跟。
這些縱深防御方法可以包括安全啟動,以確保正確的圖像加載;域分離;多個獨立的安全級別 (MILS) 設(shè)計原則,例如最小權(quán)限;攻擊面減少;以安全為中心的測試,例如靜態(tài)和動態(tài)分析,以及最后但并非最不重要的安全編碼技術(shù)。
雖然如果底層架構(gòu)不安全,安全應(yīng)用程序代碼對保護連接的嵌入式系統(tǒng)幾乎沒有作用,但它確實在考慮安全性的系統(tǒng)中發(fā)揮了關(guān)鍵作用。
縱深防御和 V 模型
傳統(tǒng)上,安全代碼驗證的實踐在很大程度上是被動的。代碼是按照有些松散的準(zhǔn)則開發(fā)的,然后進行性能、滲透、負載和功能測試以發(fā)現(xiàn)漏洞,這些漏洞稍后會修復(fù)。
更好、更主動的方法可確保代碼在設(shè)計上是安全的——沿著時間線“左移”。這意味著一個系統(tǒng)的開發(fā)過程,其中代碼是根據(jù)安全編碼標(biāo)準(zhǔn)編寫的,可追溯到安全要求,并經(jīng)過測試以證明隨著開發(fā)的進展符合這些要求。
這種主動方法將與安全相關(guān)的最佳實踐集成到功能安全領(lǐng)域的開發(fā)人員熟悉的 V 模型軟件開發(fā)生命周期中。由此產(chǎn)生的安全軟件開發(fā)生命周期 (SSDLC) 代表了以安全為中心的應(yīng)用程序開發(fā)人員的左移,并提供了一種實用的方法來確保在系統(tǒng)之外設(shè)計漏洞或及時徹底地解決漏洞。
相同的原則可以應(yīng)用于 DevOps 生命周期,從而產(chǎn)生所謂的 DevSecOps。盡管 DevSecOps 和 SSDLC 的上下文有所不同,但左移因此對兩者來說意味著相同的事情——即對安全性的早期和持續(xù)考慮。
盡早并經(jīng)常測試
此處描述的所有與安全相關(guān)的工具、測試和技術(shù)在每個生命周期模型中都占有一席之地。在 V 模型中,它們在很大程度上類似于和補充通常與功能安全應(yīng)用程序開發(fā)相關(guān)的流程(圖 1)。

圖 1:在基于 V 模型的安全軟件開發(fā)生命周期 (SSDLC) 中使用安全測試工具和技術(shù)
在 DevSecOps 模型中,DevOps 生命周期與整個持續(xù)開發(fā)過程中的安全相關(guān)活動疊加(圖 2)。

圖 2:在 DevSecOps 流程模型中使用安全測試工具和技術(shù)
在 V 模型的情況下,需求可追溯性在整個開發(fā)過程中得到維護,在 DevSecOps 模型的情況下,需求可追溯性在每個開發(fā)迭代中得到維護(在每個圖中以橙色顯示)。
一些 SAST(靜態(tài))工具用于確認遵守編碼標(biāo)準(zhǔn),確保將復(fù)雜性保持在最低限度,并檢查代碼是否可維護。其他用于檢查安全漏洞,但僅限于在沒有執(zhí)行環(huán)境上下文的情況下對源代碼進行此類檢查的范圍內(nèi)。
白盒 DAST(動態(tài))使編譯和執(zhí)行的代碼能夠在開發(fā)環(huán)境中進行測試,或者更好的是,在目標(biāo)硬件上進行測試。代碼覆蓋有助于確認代碼滿足所有安全和其他要求,并且所有代碼都滿足一個或多個要求。如果系統(tǒng)的關(guān)鍵性需要,這些檢查甚至可以達到目標(biāo)代碼級別。
可以在單元測試環(huán)境中使用健壯性測試來幫助證明特定功能是有彈性的,無論是在其調(diào)用樹的上下文中隔離。
傳統(tǒng)上與軟件安全相關(guān)的模糊和滲透黑盒測試技術(shù)仍然具有相當(dāng)大的價值,但在這種情況下,用于確認和證明在安全基礎(chǔ)上設(shè)計和開發(fā)的系統(tǒng)的穩(wěn)健性。
提供雙向追溯
IEEE 軟件工程術(shù)語標(biāo)準(zhǔn)詞匯表將可追溯性定義為“在開發(fā)過程的兩個或多個產(chǎn)品之間可以建立關(guān)系的程度,尤其是彼此之間具有前繼或主從關(guān)系的產(chǎn)品。” 雙向可追溯性意味著追溯路徑既向前又向后(圖 3)。
自動化使在不斷變化的項目環(huán)境中維護可追溯性變得更加容易。

圖 3:雙向追溯
前向可追溯性表明所有需求都反映在開發(fā)過程的每個階段,包括實施和測試。可以通過應(yīng)用影響分析來評估對需求或失敗的測試用例的任何更改的影響,然后可以解決這些影響。然后可以重新測試生成的實施,以提供繼續(xù)遵守雙向可追溯性原則的證據(jù)。
同樣重要的是向后可追溯性,它突出顯示不滿足任何指定要求的代碼。疏忽、錯誤的邏輯、特征蔓延以及惡意后門方法的插入都可能引入安全漏洞或錯誤。
必須記住,安全嵌入式工件的生命周期一直持續(xù)到該領(lǐng)域的最后一個示例不再使用。對此類工件的任何妥協(xié)都需要響應(yīng)、更改的或新的需求,并且需要立即響應(yīng)——通常是開發(fā)工程師很長時間沒有接觸過的源代碼。在這種情況下,自動可追溯性可以隔離所需內(nèi)容并僅對受影響的功能進行自動測試。
實踐中左移
左移原則所包含的概念對于開發(fā)安全關(guān)鍵型應(yīng)用程序的個人和團隊來說是很熟悉的。多年來,功能安全標(biāo)準(zhǔn)要求采用類似的方法。因此,在功能安全領(lǐng)域證明的許多最佳實踐適用于前面討論的安全關(guān)鍵型應(yīng)用程序,包括在開始時(V 模型)或每次迭代之前(DevSecOps)建立功能和安全要求,及早和經(jīng)常測試,以及應(yīng)用雙向跟蹤需求到開發(fā)的所有階段。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5196文章
20316瀏覽量
332189 -
代碼
+關(guān)注
關(guān)注
30文章
4959瀏覽量
73580
發(fā)布評論請先 登錄
嵌入式系統(tǒng)安全設(shè)計原則
什么是嵌入式應(yīng)用開發(fā)?
arm嵌入式主板優(yōu)缺點
系統(tǒng)嵌入式的學(xué)習(xí)路線
嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域
嵌入式開發(fā)的關(guān)鍵點介紹
嵌入式實時操作系統(tǒng)的特點
如何采用SAFERTOS和ESM保護嵌入式系統(tǒng)安全
Linux嵌入式和單片機嵌入式的區(qū)別?
運行在嵌入式系統(tǒng)上的emApps
飛凌嵌入式「2025嵌入式及邊緣AI技術(shù)論壇」議程公布
Python在嵌入式系統(tǒng)中的應(yīng)用場景
嵌入式系統(tǒng)開發(fā)圣經(jīng)【干貨】
使用Lattice mVision打造嵌入式視覺系統(tǒng)解決方案
盤點無風(fēng)扇嵌入式主板應(yīng)用優(yōu)勢
左移以保護連接的嵌入式系統(tǒng)
評論