軟體供應鏈包含多個環節,如開發人員、基礎設施元件、GitHub儲存庫等。而企業的軟體供應鏈是否安全,取決於其最薄弱的環節。隨著構建的軟體複雜性以及對第三方元件的依賴增加,軟體供應鏈中的潛在風險也在逐漸增大。一旦其中包含漏洞或缺陷就可能帶來重大風險。
軟體供應鏈風險的型別
第三方元件和開源庫中的漏洞:使用第三方元件可以加快開發速度,但單個缺陷可能會影響多個應用程式。
構建和開發工具受損:如果構建工具受損,即使原始程式碼是安全的,應用程式也將面臨風險。
惡意程式碼注入:攻擊者可以透過第三方元件將有害程式碼插入軟體中,從而可能竊取資料或建立後門。
內部威脅:內部人員的不安全行為可能會引入漏洞,由於他們可以訪問關鍵的開發流程,因此會帶來重大風險。
供應鏈中缺乏安全的實踐:不安全的程式碼、訪問控制不足和審查不當的第三方元件可能造成薄弱環節,威脅到整個供應鏈。
實現安全 SDLC 的步驟
一:識別和盤點軟體元件
隨著今天的軟體變得越來越複雜,開發人員需要了解他們所依賴的外部元件的數量。因此,確保軟體供應鏈安全的第一步是識別和盤點整個開發過程中使用的所有元件。瞭解每個軟體元素對於管理潛在風險或漏洞都至關重要。
關鍵元件包括第三方庫、開源元件、商用現貨(COTS)軟體和定製開發的程式碼。使用軟體元件分析 (SCA)等自動化工具可以檢測程式碼庫和依賴項。
二:評估供應商的安全狀況
在將第三方元件整合到軟體之前,對潛在的供應商和銷售商進行盡職調查。透過審查特定的安全認證,例如ISO 27001,瞭解企業的安全標準。另外需要考慮的關鍵方面包括漏洞披露程式、事件響應功能以及來自其他客戶的參考資料。
三:分析並確定風險的優先順序
確定軟體供應鏈中的潛在風險後,下一步是根據其潛在影響和發生的可能性對其進行分析和排序。可以使用已建立的風險評估方法或標準。在進行風險分析時,需要考慮的一些因素包括受影響元件的重要性,即該元素對軟體功能有多重要,成功攻擊的潛在影響,以及發生攻擊的可能性。
四:實施安全控制和緩解措施
在確定風險的優先順序後,需要加強安全性來提高軟體供應鏈安全等級。透過實施多種安全控制和緩解措施,來使攻擊者更難破壞您的系統。其中包括:程式碼安全審查、使用最低許可權原則、定期打補丁及定期進行安全測試。
五:監控並持續改進
安全需要持續的監控和改進,使用威脅情報隨時瞭解新出現的漏洞。軟體在不斷更新,同時要定期審查和更新風險評估及緩解計劃。安排定期審計以重新評估風險並調整安全措施,包括定期漏洞評估和滲透測試,以主動識別和解決系統中的潛在弱點。培養組織成員的安全意識和安全文化,並確保軟體供應鏈的持續改進和警惕。
六:建立軟體物料清單(SBOM)
軟體物料清單(SBOM)是一份正式的、機器可讀的清單,其中列出了所涉及的軟體元件,包括依賴項及其之間的關係。是所有軟體供應鏈元件(包括所有第三方軟體和開源庫)的描述性文件。
SBOM 為軟體生產商和客戶提供了便利。對於生產者來說,SBOM 表明他們致力於安全性和合規性。客戶可以使用 SBOM 瞭解所涉及的潛在風險和依賴關係。
七:將安全性整合到 DevOps 中
DevOps是一組文化實踐,旨在統一軟體開發(Dev)和IT運營(Ops)。將安全(Sec)實踐整合到DevOps工作流中稱為DevSecOps。
DevSecOps 將安全性左移。這意味著從一開始就考慮了安全注意事項,而不是事後才考慮。這種方法確保安全性是持續貫穿到整個軟體開發生命週期的每個階段。
在開發工作流程中實施 DevSecOps 的方法是依靠自動化安全工具,如 SAST、DAST 和 IAST 工具。這些工具在不同的時間間隔提供程式碼的安全測試。
八:事件響應和恢復
如果發生攻擊,則需要制定完善的響應策略,這可以在人工智慧和機器學習的幫助下進行改進。使用結構化方法可以確保在發生攻擊時快速檢測、遏制任何安全事件並從中恢復,從而最大限度地減少其對組織的影響。
建立此計劃時需要考慮的有:
檢測和分析:定義正常操作並使用監控系統來識別和分析異常情況。
遏制和根除:隔離受影響的系統,刪除惡意程式碼,並解決漏洞以防止進一步的損害。
恢復和還原:從備份中還原系統和資料,確保在恢復操作之前沒有漏洞。
事件後分析和經驗教訓:進行徹底的分析瞭解事件,確定響應差距,並記錄吸取的教訓。
定期進行事件響應演習,隨時做好準備。這些模擬可幫助團隊練習和完善響應策略,同時讓每個人都瞭解自己的角色,並能在實際事件中迅速採取行動。
參讀連結:
https://spectralops.io/blog/software-supply-chain-risk-assessment-8-steps-to-a-secure-sdlc/