隨著5G、雲計算、人工智能、大數據、區塊鏈等技術的快速發展,數字化轉型的進程正在逐步推進,軟件已經成為日常生產生活必不可少的要素之壹,滲透到各個行業和領域。容器、中間件、微服務等技術的演進推動了軟件產業的快速發展,同時也帶來了軟件設計開發的日益復雜、軟件供應鏈的日益復雜、全鏈路安全防護的日益困難。近年來,軟件供應鏈安全事件頻發,對用戶的隱私、財產安全乃至國家安全構成極大威脅。自動化安全工具是保護軟件供應鏈安全的必要手段之壹。研究軟件供應鏈和工具的安全性意義重大,對維護國家網絡空間安全、保護用戶隱私和財產安全具有深遠的作用。
壹、軟件供應鏈安全概述
軟件供應鏈的定義是從傳統供應鏈的概念擴展而來的。業內普遍認為,軟件供應鏈是指通過軟件設計和開發的壹個或多個階段來編譯軟件,並通過軟件交付渠道將軟件從軟件供應商發送到軟件用戶的系統。軟件供應鏈的安全性是指來自供應鏈上遊的編碼過程、工具、設備或代碼、模塊和服務的安全性,以及軟件供應鏈中軟件設計和開發各階段軟件交付渠道的安全性。軟件供應鏈攻擊具有低成本、高效率的特點。根據其定義,相對於傳統的針對軟件本身安全漏洞的攻擊,對於軟件供應鏈而言,攻擊面從軟件本身擴展到軟件本身內部的所有代碼、模塊和服務以及與這些模塊和服務相關的供應鏈上遊供應商的編碼流程、開發工具和設備,顯著降低了攻擊者的攻擊難度。同時,任何由軟件設計和開發引起的安全問題都會直接影響到供應鏈中所有下遊軟件的安全,擴大攻擊的影響。
近年來,軟件本身的安全防禦不斷增強,攻擊者將攻擊目標從目標軟件轉移到軟件供應鏈中最薄弱的環節,導致軟件供應鏈安全事件頻發,對用戶隱私、財產安全乃至國家安全構成重大威脅。最典型的例子是,2020年6月5438+2月,美國網絡安全管理軟件提供商網絡安全管理軟件產品遭到由國家APT組織的高度復雜的供應鏈攻擊,直接影響了超過18000客戶,包括美國關鍵基礎設施、軍隊和政府,完全被攻擊者控制。
軟件供應鏈的安全影響巨大,各國高度重視,紛紛實施政策法規促進軟件供應鏈的安全保護。2021 05月12日,美國總統拜登簽署發布了《提高國家網絡安全的行政命令》,明確提出要提高軟件供應鏈的安全性,要求對出售給政府的軟件開發建立基線安全標準,不僅要提供應用程序,還要提供軟件材料清單,以增強組成應用程序的組件的透明度,構建更加靈活安全的軟件供應鏈環境,確保美國的國家安全。同年7月,美國國家標準與技術(NIST)發布了《開發者軟件驗證最低標準指南》。為了加強軟件供應鏈的安全性,明確提出了軟件驗證的11建議,包括自動壹致性測試、最大限度減少人工測試、利用靜態靜態代碼分析發現重要漏洞、解決包含代碼(庫、包、服務)。
中國也非常重視軟件供應鏈的安全。2065438+2007年6月,我國發布實施了《網絡產品和服務安全審查辦法》,重點關註軟件產品測試、交付和技術支持過程中的供應鏈安全風險。2019 12 1《信息安全技術網絡安全等級保護基本要求》2.0版正式實施,在通用要求和雲計算擴展中明確要求選擇服務提供商和供應鏈管理。
二,軟件供應鏈安全挑戰
目前,軟件供應鏈的安全性受到高度重視,但仍面臨多重現實挑戰,可歸納為以下五類。
1.軟件設計和開發的復雜化已經成為壹種必然趨勢。
隨著容器、中間件、微服務等新技術的演進,軟件行業發展迅速,對軟件功能和性能的要求也在不斷提高。軟件設計和開發的復雜化已經成為壹種必然趨勢。同時,這種情況帶來了軟件設計、開發和維護難度的急劇增加,不可避免地導致設計和開發過程中出現安全漏洞,為軟件供應鏈的安全埋下隱患。
2.開源成為主流開發模式。
目前,開源已經成為主流的開發模式之壹。軟件的源代碼多為混合源代碼,由企業自主開發的源代碼和開源代碼組成。據信思科技《2021開源安全與風險分析》報告顯示,近五年來,開源代碼在應用中的占比從40%上升到70%以上。開源的引入加速了軟件研發的效率,但同時也將開源軟件的安全問題引入了軟件供應鏈,導致了軟件供應鏈安全問題的多樣化。
3.快速交貨是第壹要務。
由於行業競爭環境激烈,相對於安全性而言,功能的快速實現,軟件的快速交付仍然處於第壹位。雖然軟件通常滿足安全的基本功能需求,如身份認證、加解密、日誌安全審計等。,整體安全防護機制相對滯後,後期防護為主。自身安全的前期同步建設往往被忽視,軟件本身安全漏洞的早期清除也存在短板。
4.軟件交付機制面臨安全風險。
軟件交付是指軟件從軟件供應商轉移到軟件用戶的過程。傳統的軟件交付基於CD-ROM和其他存儲設備。隨著互聯網等技術的發展,通過網絡快速分銷軟件已經成為壹種基本模式,不安全的分銷渠道也會對軟件供應鏈的安全產生重大影響。
5.軟件補丁網站攻擊時使用
針對軟件供應鏈的安全保護,軟件生命周期不是在軟件交付後結束,而是直到軟件停止工作下線。安全缺陷是軟件設計和開發過程中不可避免的,補丁分發和部署是修復軟件缺陷和漏洞最常見的方式。軟件補丁的分發和部署也受到分發渠道的影響,被汙染的補丁下載網站也會造成軟件供應鏈的安全問題。
三、軟件供應鏈安全防護工具
軟件供應鏈的安全涉及許多要素和環節。參考業內常見的劃分,軟件供應鏈的環節可以抽象為開發、交付、使用三個部分。對於配送和使用的安全保護,主要是通過保障配送場所和傳輸渠道的安全。開發過程與軟件源代碼密切相關,安全保護復雜,包括編碼過程、工具、設備以及供應鏈上遊的代碼、模塊和服務的安全,涉及四類安全工具,包括軟件生產過程中的工具和軟件供應鏈管理工具。
1.靜態應用程序安全測試工具
靜態應用安全測試(static application security testing,SAST)是指在不運行程序本身的情況下,僅通過分析或檢查源程序的語法、結構、過程和接口來檢查程序的正確性。源代碼靜態分析技術的發展與編譯技術和計算機硬件設備的進步密切相關。源代碼的安全性分析技術大多是在編譯技術或程序驗證技術的基礎上提出的。通過使用該技術,可以自動發現代碼中的安全缺陷和違反安全規則的行為。目前主流的分析技術有:(1)詞法分析技術,僅將代碼的文本或令牌流與已知的總結缺陷模式進行匹配,並不深入分析代碼的語義和代碼上下文。詞法分析檢測效率高,但只能發現簡單缺陷,誤報率高。(2)抽象解釋技術用於證明某個代碼沒有錯誤,但不保證所報告錯誤的真實性。該技術的基本原理是將程序變量的值映射到更簡單的抽象域,模擬程序的執行。因此,該技術的準確性和性能取決於抽象域對真實程序值域的逼近。(3)程序模擬技術,模擬程序的執行得到所有的執行狀態,分析結果更加準確。主要用於查找邏輯復雜、觸發條件苛刻的缺陷,但很難提高性能。主要包括兩項技術:模型檢查和符號執行。模型檢查將軟件構造為狀態機或有向圖等抽象模型,使用模態/時態邏輯公式等形式表達式來描述安全屬性,並遍歷模型來驗證這些屬性是否滿足。符號執行用符號值表示程序變量值,模擬程序執行尋找符合漏洞檢測規則的情況。(4)定理證明技術,將程序出錯的前提和程序本身描述為壹組邏輯表達式,然後基於可滿足性理論,利用約束求解器尋找可能導致程序出錯的執行路徑。該方法靈活,可以方便地使用邏輯公式描述軟件缺陷,並可以根據分析性能和精度的不同要求調整約束條件,對於大型工業軟件的分析是有效的。(5)數據流分析技術,以控制流圖為基礎,以壹定的方式掃描控制流圖中的每壹條指令,試圖理解指令行為,從而判斷程序中的威脅漏洞。數據流分析的壹般方法是在控制流圖上定義壹組方程並叠代求解,壹般分為前向傳播和後向傳播。前向傳播是指狀態沿控制流路徑向前傳遞,前壹個塊的值傳遞給後壹個塊;反向傳播意味著後續塊的值逆著控制流路徑傳輸回前壹個塊。
2.動態應用安全測試工具
動態應用安全測試(DAST)技術在測試或運行階段分析應用的動態運行狀態。它模擬黑客動態攻擊應用程序的行為,分析應用程序的反應來判斷應用程序是否容易受到攻擊。以網站測試為例,介紹動態應用安全測試,主要包括三個方面:(1)信息收集。測試開始前,收集待測網站的所有URL,包括靜態資源和動態界面,每個URL都需要包含路徑和完整的參數信息。(2)測試流程。測試人員將測試所需的URL列表導入到測試工具中。測試工具提供了“檢測風險項”的選擇列表,測試人員可以根據測試計劃選擇不同的風險檢測項。在測試過程中,測試工具控制訪問目標網站的速度,以確保目標網站不會因同時請求數量過多而變慢或崩潰。測試人員在設置測試任務的基本信息時,根據目標網站的性能填寫“每秒請求數”的最大值。測試工具確保在測試過程中每秒發送的請求總數不超過該值。(3)測試報告。安全測試的所有步驟完成後,輸出測試報告。測試報告壹般包括概覽頁面,包括根據測試過程中產生的各種數據,輸出對目標網站安全性的總結結論;測試過程中發現的漏洞總數,以及按照不同安全級別維度的漏洞數據。
3.交互式應用安全測試工具
交互式應用安全測試(interactive application security testing,IAST)可以基於對請求和運行時上下文的綜合分析,通過插樁技術高效、準確地識別安全缺陷和漏洞,並確定安全缺陷和漏洞的代碼位置。它主要工作在三個方面:流量采集、代理監控和交互掃描。(1)流量收集是指應用測試過程中HTTP/HTTPS請求流量的收集,可以通過代理層收集,也可以通過服務器代理收集。采集的流量是測試人員提交的帶有授權信息的有效數據,可以最大程度的避免傳統掃描中測試目標的權限問題和多步問題導致的無效掃描;同時,流量采集可以保存爬蟲的功能,避免測試目標爬蟲爬行失敗導致的掃描漏水問題。(2)代理監控是指部署在Web服務器上的代理程序,壹般是Web服務編程語言的擴展。代理通過擴展監控Web應用程序編程運行過程中的函數執行,包括SQL查詢函數、命令執行函數、代碼執行函數、反序列化函數、文件操作函數、網絡操作函數、XML解析函數以及其他可能觸發漏洞利用的敏感函數。(3)交互式掃描是指Web應用漏洞掃描器在代理監控的輔助下,只需要重放少量收集到的請求流量,重放時就可以完成對Web應用漏洞的檢測。比如檢測SQL註入漏洞時,單參數檢測,知名的開源SQL註入檢測程序SQLMAP需要發送上千個HTTP請求包;交互掃描只需要用壹個scanner標簽來重放壹個請求,Agent可以在SQL查詢函數中監控scanner標簽來判斷是否有漏洞,大大減少了掃描包。
4.軟件組成分析
(SCA)主要針對開源組件,可以掃描識別,獲取組件的安全漏洞信息、許可證等信息,規避安全和法律法規風險。現有五種開源掃描技術。(1)通過比較源代碼片段來識別組件和許可類型。(2)從文件級提取哈希值,比較文件級哈希值,如果所有文件哈希值都匹配成功,則識別開源組件。(3)通過掃描包配置文件讀取信息,識別組件以識別組件和許可證類型。(4)分析開源項目的文件目錄和結構,分析開源組件的路徑和依賴關系。(5)通過編譯開源項目並分析編譯後的開源項目的依賴性,可以識別開源項目中使用的開源組件的信息。
四、軟件供應鏈安全研究建議
1.開發軟件安全工具的相關技術。
軟件供應鏈的安全保護離不開安全工具的開發和使用。大力發展軟件安全工具技術,解決安全開發難點需求,進行安全預定位,實現安全防護措施與軟件設計開發同步推進。
2.提高軟件供應鏈中保護、檢測和響應安全事件的能力。
軟件供應鏈的安全保護需要壹個事前、事中、事後全方位的安全防禦體系。軟件供應鏈中的安全攻擊具有隱蔽性高、傳播性強、影響深的特點。作為壹個復雜而龐大的系統,軟件供應鏈不可避免地存在脆弱節點。因此,應該提高軟件供應鏈中保護、檢測和響應安全攻擊的能力,以避免安全事件的重大影響。
3.建立和完善軟件供應鏈安全相關標準體系。
通過科研院所和標準機構完善軟件供應鏈安全標準體系,普及軟件供應鏈安全意識,提升企業組織對軟件供應鏈安全的重視程度,投入軟件供應鏈安全,推動安全建設的實施。
4.建立安全可信的軟件供應鏈生態系統。
實現軟件供應鏈的安全需要各領域企業的共同努力。企業* * *構建安全可信的生態系統,將滿足不同用戶、不同行業、不同場景的需求,提升行業整體軟件供應鏈的安全水平。
(本文發表於《中國信息安全》雜誌,第10期,2021)。