美國開源軟件安全評價方法體系分析
近日,微軟發布“安全供應鏈消費框架(Secure Supply Chain Consumption Framework,簡稱S2C2F)”1.1版本。該框架已被OpenSSF供應鏈完整性工作組采用。至此,OpenSSF開源軟件評價相關的項目和指南已覆蓋使用安全、關鍵性、基礎設施安全、漏洞披露機制等多個方面,它們公布出的相關框架流程、指標條目、實踐工具等內容對我國的開源軟件安全工作有一定的借鑒作用。
一、S2C2F V1.1解讀
S2C2F自2019年提出后,一直作為微軟的一項內部倡議,直至此次被OpenSSF采用,它專注于開發集成人員對開源軟件(OSS)使用的安全。與其他開源軟件安全框架或指南相比,S2C2F具有三個主要特點:
1、框架實踐面向威脅且覆蓋使用全過程
S2C2F V1.1共包含8項實踐,即引入、掃描、庫存、更新、審計、執行、重構建、修復(并通知上游),涵蓋了組織在使用OSS過程中各個環節上的治理工作,每個實踐又包括若干條具體的“要求”,例如,“掃描”實踐的“要求”共有5條,如下表所示。

S2C2F的實踐和要求是基于已知OSS安全威脅而設計的,包括戰術和技術兩方面的威脅,如漏洞、后門、惡意代碼植入和欺騙、惡意依賴項、編譯器破壞、依賴混淆、包完整性篡改、上游源代碼刪除、OSS組件停止修復、未按時修復漏洞、包管理器惡意代碼上傳等。
針對每種威脅類型,框架都列出了相應的可用來緩解的“要求”。例如,針對“構建惡意OSS包欺騙使用者”的威脅,框架建議采用的要求包括:驗證OSS的來源(AUD-1)、強制使用策劃的OSS入口控制器以增強對OSS的信任(ENF-2)、掃描OSS中的惡意軟件(SCA-4)等。
2、成熟度等級便于組織建立進階路線圖
S2C2F是一個成熟度模型,將針對OSS使用安全的25條要求劃歸4個不同的成熟度等級,組織可以對照評價自己當前所處的等級,并明確未來改進的方向。下表是各等級的主要描述及對應的要求,其中L4被定義為理想級,實現成本較高,估計難以在整個組織中大規模實施,但可以考慮在關鍵項目中的關鍵依賴項上應用。

3、各條要求對應的工具列表展現實操性
S2C2F還有一大特點是聚焦OSS安全治理的落地,框架針對各成熟度等級中對應的具體實踐和每條要求,列出了自動化免費工具和付費工具,供開發集成人員參考。例如,針對L1中的要求SCA-1(需掃描依賴的已知漏洞。選擇一款可從更多渠道而不僅僅是CVE獲取漏洞的工具,對于確保從多個漏洞來源獲得信息非常重要),S2C2F推薦的工具包括:免費工具GitHub Dependency Graph和付費工具Snyk Open Source、Mend SCA。
當然,由于微軟的背景,S2C2F推薦的工具以美國廠商生產的產品為主。國內用戶在參考時可考慮使用相同功能的國產工具,例如,在OSS已知漏洞掃描、許可證風險掃描等方面,奇安信開源衛士可提供同等優良的能力。
此外,S2C2F每條要求的制定也充分參考了NIST SP 800-161、SSDF、CIS軟件供應鏈安全指南、OWASP SCVS、SLSA、CNCF軟件供應鏈最佳實踐等已有框架指南的內容。
二、OpenSSF開源軟件安全評價方法體系分析
1、開源軟件安全評價方法體系
OpenSSF單獨或聯合其成員發布的項目、指南、框架已覆蓋開源軟件的使用安全、關鍵性、基礎設施安全、漏洞處理等多個方面,形成了針對開源軟件的安全評價方法體系,如下圖所示。基礎設施安全包括網站、版本控制、構建、加密、包管理器等涉及OSS開發、存儲、發布等環節設施的安全。部分指南內容可參見https://mp.weixin.qq.com/s/NyVxcJmUol-2X1kH5r_pvA。

上述分類僅反映這些項目、指南、框架的側重點,并不代表它們之間是完全沒有交集的。例如,OpenSSF記分卡中有一個指標是“被維護的”,其中重要的一項是考慮OSS項目每周的提交次數,而OpenSSF開源項目關鍵性評分中也有類似指標。《評估開源軟件的簡明指南》(以下簡稱《簡明指南》)中也有“持續維護”方面的內容。
2、開源軟件的使用安全
作為軟件開發中最重要的第三方原材料之一,OSS的使用安全對于使用者來說,無疑是最值得關注的。OpenSSF記分卡、S2C2F和《簡明指南》雖然都側重于OSS的使用安全,但它們之間也有明顯的差異。
· 關聯關系
OpenSSF記分卡是一款基于19項評價指標的OSS項目安全指數自動生成工具。S2C2F為“掃描”實踐的SCA-3要求(掃描OSS生命是否已終結)推薦的免費工具就是OpenSSF記分卡;《簡明指南》中“開發者增強安全性的證明”方面的評價也包括“是否檢查了開源軟件的OpenSSF記分卡值和已知漏洞”的指標。因此,記分卡可以看做是基礎。
另一方面,三種評價方法中的指標有許多也是相同的。例如,三者都有“掃描已知漏洞”的指標或要求,這也是OSS使用安全中最核心的內容之一,可借助軟件成分分析(SCA)工具方便的實現。
· 主要差異
首先,OpenSSF記分卡是從OSS自身的角度考慮的,而S2C2F和《簡明指南》則是從開發集成人員的操作層面考慮的。
在具體指標方面,三者也存在不小的差異,主要體現在兩個方面。一是名稱或技術內涵相同但實施環節或方式不同的指標,例如,OpenSSF記分卡和《簡明指南》中都有代碼審計的指標,但記分卡中指的是“合并之前,項目是否要求代碼審計”,而《簡明指南》中的代碼審計指開發集成人員使用靜態分析工具發現首要問題;二是各自特有的指標,如OpenSSF記分卡的“項目是否有分支保護”、《簡明指南》的“是否盡量減少依賴的數量(使用現有的依賴關系,不再增加)”、S2C2F的“強制使用策劃的OSS入口控制器(ENF-2)”,這些都是各自特有的。
總體而言,三者各有優勢。OpenSSF記分卡的優勢在于其自動化工具的屬性,有助于使用者對OSS的安全狀況進行自動化分析和信任決策;S2C2F的優勢是其框架結構和成熟度等級,符合使用者的理解邏輯,針對性的指導作用較強;《簡明指南》給出了OSS使用安全9個方面的內容,可看做是一些基本原則,某些方面也列出了具體的示例。
三、對我國開源軟件安全工作的啟示
2021年10月,中國人民銀行、中央網信辦等五部門聯合發布了《關于規范金融業開源技術應用與發展的意見》,就規范金融機構合理應用開源技術,提高應用水平和自主可控能力等方面提出了原則性要求,開源軟件安全是其中的重要內容;2022年11月初,國家標準《信息安全技術 軟件產品開源代碼安全評價方法》完成立項。
這些都說明國家層面已意識到開源軟件安全的重要性,并著手規范應對此類問題。結合前面的相關研究,本文建議可從以下三個方面考慮開源軟件的安全評價方法:
· 從開源軟件使用者角度確立指標體系框架。
S2C2F給出了一個很好的示范,該框架從開源軟件使用者的角度梳理出8項安全實踐,對應于使用過程中的8個環節。因為開源軟件使用者同樣也是評價方法的使用者和評價結果的決策者,所以從這個角度設計的框架更符合廣泛的理解邏輯,能夠產生更好的指導效果。
· 兼顧開源軟件的自身安全和基礎設施安全。
對于開源軟件安全性的評價,既要考慮安全漏洞、后門、惡意代碼、數字簽名、SBOM等自身的安全因素,同時也應該兼顧諸如OpenSSF最佳實踐徽章和《NPM最佳實踐指南》之中明確的官方發布網站、版本控制、構建、加密、包管理器、漏洞共享披露機制等基礎設施的安全。
· 統籌開源軟件安全評價的指導性和落地性。
一方面,可參考目前已有的標準、指南和框架,并結合我國開源軟件使用組織的實際狀況,制定兼具指導性和完備性的開源軟件安全評價指標體系;另一方面,可借鑒S2C2F工具列表的做法,推薦相關的自動化工具,并將國產優秀工具作為首選,以增強評價方法的落地性和實操性。