Software Bill of Materials,SBOM
軟體物料清單
是一份用來記錄軟體由哪些元件組成、各元件的版本、相依關係等等的資訊結構化清單
為什麼需要SBOM?
假設今天一間餐廳中的義大利麵食譜,會用到:
- 麵條
- 番茄
- 起司
- 橄欖油
- 調味料
這些是製造義大利麵的原料
如果有一天起司的供應商宣布公告:
某一批的起司存在食品安全問題,必須停止使用這時我就需要知道:
我的哪些食品有用到起司並且又是這個供應商供應的?如果事前沒有建立原料清單來記錄,就要一個一個食譜去查
而軟體也是:
如果連軟體裡面的元件有哪些都不知道,就很難判斷新公布的漏洞會不會影響自己
SBOM就是為了解決這個問題
Component(元件)
組成一個軟體的一部分
例如:
用別人寫好的程式套件,處理網站的圖片
這個圖片處理套件=一個元件
而這些元件有時候也需要依賴其他元件,才能完成相關功能
這就叫:相依套件/相依關係
資產盤點=先搞清楚組織擁有哪些資產
SBOM更深入是這些資產中軟體的部分由哪些元件組成
| 名詞 | 資產盤點 | 軟體物料清單 |
|---|---|---|
| 目的 | 知道組織有哪些資產 | 知道軟體由哪些元件組成 |
| 例子 | 一台伺服器、一個購物系統 | 這個購物系統中有哪些函式庫、套件、版本 |
| 關注什麼? | 組織資產 | 軟體組成與相依關係 |
整個關係鏈會是:
資產盤點->
發現公司有一套購物系統->
SBOM軟體物料清單->
知道購物系統包含哪些元件以及版本->
通常會記錄四種核心資訊:
以上面的購物網站為例:
簡化的SBOM可能會是
| 元件名稱 | 版本 | 來源 | 相依關係 |
|---|---|---|---|
| 購物網站 | 2.0 | 公司自行開發 | 使用A、B |
| 登入元件A | 1.5 | 外部供應商 | 無 |
| 付款元件B | 1.0 | 外部供應商 | 使用C |
| 加密元件C | 1.1 | 外部供應商 | 無 |
有了這份SBOM清單,就能回答出:
這只是簡化說明的版本,真正的SBOM會記錄更複雜
假設某個軟體供應商公布
加密元件C的某個版本出現安全漏洞
這時公司的資安人員就可以:
簡單來說就是:
讓資安團隊可以更快找出哪些系統可能受到影響,再進行確認與處理