雖然連接的系統為更容易的監控、升級和增強帶來了新的機會,但它們也帶來了更容易受到攻擊的攻擊面。不幸的是,沒有一個連接系統的單一防御可以保證不可穿透性。幸運的是,有多個安全級別可以確保如果一個級別失敗,其他級別將保持警惕。
這些縱深防御方法可以包括安全啟動,以確保正確的映像加載;域分離;多個獨立的安全級別 (MILS) 設計原則,例如最小特權;攻擊面減少;以安全為中心的測試,如靜態和動態分析,最后但并非最不重要的一點是,安全編碼技術。
雖然如果底層架構不安全,安全的應用程序代碼在保護連接的嵌入式系統方面幾乎無能為力,但在設計時考慮了安全性的系統,它確實起著關鍵作用。
縱深防御和 V 型模型
傳統上,安全代碼驗證的做法在很大程度上是被動的。代碼是通過遵循一些松散的指南來開發的,然后進行性能,滲透,負載和功能測試以查找漏洞,這些漏洞稍后會修復。
更好、更主動的方法可確保代碼在設計上是安全的 — 沿時間線“向左移動”。這意味著一個系統的開發過程,其中代碼是根據安全編碼標準編寫的,可追溯到安全要求,并隨著開發的進展進行測試以證明符合這些要求。
這種主動方法將與安全相關的最佳實踐集成到功能安全領域開發人員所熟悉的 V-model 軟件開發生命周期中。由此產生的安全軟件開發生命周期(SSDLC)代表了以安全為中心的應用程序開發人員的左轉,并提供了一種實用的方法,以確保漏洞被設計出來或及時徹底地解決。
相同的原則可以應用于 DevOps 生命周期,從而產生所謂的 DevSecOps。盡管 DevSecOps 和 SSDLC 之間的上下文不同,但左移對兩者意味著同樣的事情,即早期和持續地考慮安全性。
盡早并經常測試
此處介紹的所有與安全相關的工具、測試和技術在每個生命周期模型中都有一席之地。在 V 模型中,它們在很大程度上類似于通常與功能安全應用程序開發相關的過程(圖 1)。

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

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

圖 3:雙向可追溯性
前向可追溯性表明,所有需求都反映在開發過程的每個階段,包括實現和測試。可以通過應用影響分析來評估對需求或失敗測試用例的任何更改的影響,然后可以對其進行處理。然后可以重新測試由此產生的實現,以提供繼續遵守雙向可追溯性原則的證據。
同樣重要的是向后可追溯性,它突出顯示了不滿足任何指定要求的代碼。疏忽、錯誤邏輯、功能蠕變以及惡意后門方法的插入都可能引入安全漏洞或錯誤。
必須記住,安全嵌入式工件的生命周期將一直持續到該領域的最后一個示例不再使用為止。對此類工件的任何妥協都需要響應、更改或新要求,并且需要立即響應 — 通常是開發工程師長時間未接觸的源代碼。在這種情況下,自動可追溯性可以隔離所需的內容,并僅對受影響的功能進行自動測試。
在實踐中向左移動
左移原則所采用的概念對于開發安全關鍵型應用程序的個人和團隊來說很熟悉。多年來,功能安全標準要求采用類似的方法。因此,在功能安全領域經過驗證的許多最佳實踐適用于前面討論的安全關鍵型應用程序,包括在開始時(V模型)或每次迭代(DevSecOps)之前建立功能和安全要求,盡早和經常進行測試,以及將雙向跟蹤需求應用于開發的所有階段。
審核編輯:郭婷
-
嵌入式
+關注
關注
5199文章
20454瀏覽量
334233 -
代碼
+關注
關注
30文章
4968瀏覽量
73999
發布評論請先 登錄
嵌入式系統安全設計原則
arm嵌入式主板優缺點
系統嵌入式的學習路線
什么是嵌入式操作系統?
嵌入式實時操作系統的特點
如何采用SAFERTOS和ESM保護嵌入式系統安全
Linux嵌入式和單片機嵌入式的區別?
運行在嵌入式系統上的emApps
嵌入式開發入門指南:從零開始學習嵌入式
飛凌嵌入式「2025嵌入式及邊緣AI技術論壇」議程公布
向左移動以保護連接的嵌入式系統
評論