

★
★
★
軟件供應商手冊:
SBOM的生成和提供
董國偉 奇安信科技集團股份有限公司



摘要:
本手冊由美國國家電信和信息管理局(NTIA)格式化與工具工作組於2021年11月27日發布,旨在為軟件供應商提供軟件物料清單(SBOM)生成和交付方面的指導。手冊以SBOM生成的四步驟流程為主線,重點說明了在軟件構建(Build)前、構建中和構建後等各階段構造SBOM時的特點或應注意事項,以及目前常用的SBOM驗證方法。整體流程的完整性和對各階段應重點關注問題的討論是本手冊的主要亮點。手冊可為我國軟件生產企業或個人在SBOM生成和構造等方面提供一定的指導和借鑑。
背景解讀:
近年來,全球軟件供應鏈安全攻擊事件持續高發,且危害越來越大,特別是2020年底爆發的太陽風(SolarWinds)攻擊事件,使得美國更加重視自身的供應鏈安全防護。2021年5月12日,美總統拜登簽署了「關於改善國家網絡安全(EO 14028)」的行政命令,其中的第4節針對「加強軟件供應鏈安全」提出了一系列具體要求,旨在迅速改善美國軟件供應鏈的安全性和完整性,而其第(f)條要求,NTIA於同年7月11日前發布SBOM的最低要求。
對此,NTIA於2021年7月12日發布了《SBOM最小要素》,規定了最小要素應包括數據字段、自動化支持、實踐和過程等三個方面,其中的實踐和過程指為了將SBOM集成到安全開發生命周期操作中而需定義其請求的操作、生成和使用等內容,包含頻率、深度、已知的未知情況(known unknowns)、分發和交付、訪問控制和容錯等。可以看出,SBOM的生成是將其集成到安全開發生命周期的重要一環。
11月27日發布的《軟件供應商手冊:SBOM生成和提供》是對最小要素中SBOM生成的進一步細緻討論和在實施層面的補充,給出了SBOM生成的一般性流程及每一步中應關注的重點。手冊中關於SBOM三種數據格式(SPDX、CycloneDX、SWID)和特定名詞(如「已知的未知情況」)的規定均與最小要素一脈相承。另外,根據手冊中的說明,這裡的軟件供應商指的是商用軟件、開源軟件、外包軟件等廣義的供應商。

正文解讀
★
★
★
通過對手冊內容進行分析,作者歸納出其參考價值和指導作用主要體現在4個方面。
01
以有效性為最終目標,總結了SBOM生成的工作流程
儘管各類組織用來生成SBOM的工具和過程多種多樣,但手冊歸納出了這一過程的一般性工作流程模型,即通過「識別組件-獲取數據-構造SBOM-驗證SBOM」4個步驟,最終得到格式有效、屬性合規的SBOM文件。
在上述過程中,每個步驟均有相應的技術、自動化工具、標準等進行輔助和支持,手冊介紹了它們中的代表性內容,例如軟件組成分析(SCA)工具、代碼分析工具、SBOM格式驗證工具、軟件包數據交換(SPDX)標準、OWASP CycloneDX和軟件組件驗證(SCVS)標準等。
總體而言,本手冊對於SBOM的構造和生成具有一定的指導作用,可基於其描述的流程、標準和工具等開展相關的研究工作,以增強軟件產品透明度,便於進行安全分析和保障。
02
以構建為階段劃分點,討論了SBOM構造的主要方法
手冊描述了在軟件構建(Build)之前、構建時和構建以後的不同時間階段,構造SBOM時可使用的方法工具、應考慮的信息類型、相應的特點和注意事項等內容,如表1所示。
表1 不同階段SBOM生成的對比
生成階段
生成方法
特點/注意事項
構建前
作為版本控制系統一部分,或由挖掘產品構建管道輸入的工具創建源碼級SBOM
有助於關鍵組件的識別及在創建產品之前查找漏洞;便於構建到源文件的追溯;可能會呈現並不包含在最終可執行文件中的脆弱源碼
構建時
作為構建工件自動化生成SBOM
包含更權威的組件特徵、無人工輸入錯誤、自動化SBOM簽名;必須確定構建過程中生成的SBOM的格式(列舉了SPDX等3種)
在構建管道或軟件工廠中生成SBOM
構建管道方法容易使用,但可能需要額外的資源集成管道;軟件工廠方法可解決多個開發生態系統沒有一致SBOM支持的問題
從容器化過程中導出容器鏡像SBOM
應匯總並識別來自所有層的所有軟件的信息;應包括容器間依賴關係、構建時間、簽名等
構建以後
(SBOM應包括生成時間、SBOM版本、簽名等)
舊系統中使用功能;來自不同的供應商、過程和工具等的SBOM信息的生成
應補充接近工程過程的組件數據、已知的未知情況等;代碼分析工具可掃描上游供應商組件的SBOM,但識別商業組件方面能力不足
非自動化系統和過程的SBOM生成
應理解SBOM中列出的組件的來源和軟件標識,以及如何獲取這些信息
手冊對每個階段中SBOM生成的特點或應注意方面進行了一些點上的描述,包括舉例等方式,多以說明性為主,缺少統一的描述邏輯。儘管如此,通過對表中內容的分析依然可以發現:
收集信息的全面性是SBOM構造的基礎。識別和收集軟件組件信息的全面性是首先要考慮的。手冊明確了,在構建過程中生成SBOM的,需提前確定格式,即使用標準來規範待收集的內容,並且在構建後還要補充必要的信息(例如無法通過自動化手段得到的)。
三個階段的SBOM生成工作各有側重。構建時的自動化信息收集是SBOM生成的主要方式;源碼級SBOM可以作為輔助;構建之後階段對SBOM的構造以信息(特別是來源信息)的補充和集成(多供應商SBOM)為主。
自動化工具提高了SBOM構造的效率和可操作性。手冊提到的工具包括:構建前使用的版本控制系統,挖掘構建管道輸入的工具;構建時使用的Git,與構建系統、包管理器和持續集成(CI)服務器集成的工具,構建管道和軟件工廠;構建後使用的代碼分析工具等
03
以安全性為出發點,分析了SBOM應包含的內外依賴
為了使運行時依賴關係等引入漏洞的情況不成為消費者和供應商的盲點,手冊強調SBOM應避免缺失對應用程序所安裝的運行時依賴項、操作系統、動態鏈接庫(DLL)、升級程序、共享庫或其他包含項的描述,且描述時應避免存在歧義;另外,為了提高供應商解決相關安全問題的效率,手冊明確當軟件功能執行依賴於對外部服務調用時,可使用SBOM列出軟件交付所需的外部服務。
內外部依賴關係是應用程序引入安全問題的重要來源之一,手冊將應用的內部依賴項和外部依賴的服務作為SBOM的重要組成部分,能夠幫助消費者和供應商更全面的了解應用程序,進而掌握可能引入安全問題的途徑,及時採取相應緩解措施,這有利於提高軟件安全防護的效率和準確性。
04
以可操作性為目的,列舉了SBOM驗證的工具和標準
針對SPDX、CycloneDX和SWID三種SBOM的格式正確性和完整性的檢驗,手冊列出了相應自動化工具的鏈接;針對SBOM信息中聲明的相關組件的識別、驗證和評估等,手冊提到了標準OWASP SCVS、OpenChain和軟件組成分析(SCA)工具。
目前SCA工具在識別軟件組成、分析軟件成分、統計軟件資產等方面功能明顯,可有效輔助SBOM中聲明組件和依賴信息的驗證。但SBOM文件自身驗證的工具還比較初級,並且都與特定的SBOM格式相綁定。例如手冊中提到的SBOM格式驗證工具,僅能夠對格式的正確性和完整性進行檢查,而不能檢查填充SBOM字段的數據質量或準確性。相信隨着SBOM相關技術的不斷發展,未來此類工具的功能也會有較大的提升。

影響及趨勢預判
★
★
★
美行政令EO 14028雖然對《SBOM最小要素》的制定進行了要求,但並未對它的使用進行強制規定。最小要素和本手冊可更多的被看作是對SBOM相關方,特別是美國軟件供應商的規範建議。
但另一方面,隨着全球網絡信息領域對軟件供應鏈安全、SBOM重要性認知的不斷提升,以及SPDX成為國際標準、《SBOM最小要素》的出台等,軟件供應企業(如商用軟件、外包軟件)和個人(如開源軟件)會越來越多主動或被動的構造並提供SBOM,本手冊可以在這一方面提供流程的規範和指導,具有積極的促進作用。無論美國廠商還是全球廠商都可以從中得到啟示,但手冊介紹的粒度較粗,供應商應根據自身狀況進一步細化後使用。
SBOM生成的自動化是構造SBOM的最終目標和提高效率的有效手段,但從手冊中可以看出,目前一些類型信息的收集還難以做到,例如「已知的未知情況」、遺留系統的相關信息等,並且手冊也缺少對這些的詳細方法介紹;此外,依賴項漏洞是軟件供應鏈安全風險的主要成因之一,手冊中列舉了幾類需在SBOM中重點關注的內外部依賴關係,但並未展開系統闡述。未來應對這些問題進行進一步的研究,進而為軟件供應商提供更加明確的指導。

總結及對策建議
★
★
★
手冊歸納了SBOM生成的一般工作流程,包括「識別組件-獲取數據-構造SBOM-驗證SBOM」4個步驟,並以構建為階段劃分點,討論了SBOM構造的主要方法,還重點分析了SBOM應包含的內外部依賴關係、列舉了針對SBOM的驗證工具和標準。基於上述情況,本文對我國的SBOM構造工作建議如下:
建議國家或行業監管部門指導制定軟件SBOM格式、生成和使用等方面的標準和指南,以規範該項工作;並建立有效的機制推動標準的落地、使用,引導相關自動化輔助工具的研發。
建議軟件供應商提高安全責任意識,根據已有的SBOM要素、生成、使用等參考資料制定滿足自身和使用者需求的SBOM規範,包括但不限於組件供應者、組件名稱、組件版本、依賴關係等信息內容,並在軟件研發和供應過程中嚴格執行。
建議軟件使用者將SBOM列為供應商必須提供的內容,並對其提交的軟件產品和SBOM進行驗證,以確保兩者的對應關係,從而提升軟件產品的透明度,提高軟件安全維護的效率和使用的安全性。
手冊原文可參考:https://www.ntia.gov/files/ntia/publications/software_suppliers_sbom_production_and_provision_-_final.pdf
SBOM系列政策文件研究由中國信通院、中國聯通聯合牽頭,籌建單位奇安信、會員單位懸鏡安全、綠盟、高偉達、比瓴、盈高科技、亞信、北銀金科、孝道科技、南陽理工大學、華為支持開展,包含13篇政策文件的翻譯、解讀,涵蓋了SBOM整體內容概述,SBOM的生成、獲取、交換、共享、管理、使用等全生命周期過程,回答了關於SBOM的常見問題,以期助力社區的安全研究研討,加速推進提升國內供應鏈的安全管理水平。
題圖:Pixabay License


作者丨奇安信 董國偉
校審丨中國信通院 楊文鈺
中國聯通 賈倩倩
排版丨比瓴科技 駱玥辰
轉載請註明「轉自奇安信代碼衛士 https://codesafe.qianxin.com」。


奇安信代碼衛士 (codesafe)
國內首個專注於軟件開發安全的產品線。
覺得不錯,就點個「在看」 或 "贊」 吧~