一句話摘要:
現代軟體開發幾乎完全建立在開源套件的地基上,但多數企業連自己用了哪些套件、哪個版本都說不清楚;SBOM(軟體物料清單)不是合規文件,是在供應鏈攻擊發生的那一刻,決定你能不能在幾分鐘內回答「我們中了沒」的關鍵基礎設施。
現代應用程式的程式碼,往往有八成以上來自開源套件與第三方函式庫,而這些套件本身又會引用其他套件,形成層層疊疊的依賴關係。軟體供應鏈 Poisoning(下毒)攻擊正是利用這種複雜性,攻擊者入侵一個廣泛被使用的開源套件維護者帳號,在新版本中植入惡意程式碼,只要有企業自動更新依賴套件,惡意程式碼就會被悄悄帶入生產環境。這正是重大 CVE 應變情境中,最棘手的一種,因為你甚至不知道自己「用了」這個套件,因為它是依賴的依賴的依賴。
第一線 IT/SecOps 心聲: 「上次那個知名開源套件被爆出植入惡意程式碼,主管問我們有沒有用到,我們光是要確認『到底有沒有間接引用』,就翻了老半天的 package.json 跟建置紀錄,最後還是不太確定有沒有漏查。」
決策層 / 業務單位迷思: 「我們的軟體都是自己開發的,應該不會有開源套件的風險吧?」(實際上幾乎不存在完全不使用任何開源元件的現代應用程式)
當企業無法即時回答「我們的系統裡到底用了哪些套件、哪個版本」,供應鏈攻擊發生時,應變速度會被這個基本問題徹底拖垮,而攻擊者不需要打穿你的城牆,只需要在你信任的地基裡埋一顆種子。
SBOM(Software Bill of Materials)的概念類似食品的成分標示,清楚列出一個軟體產品由哪些元件、哪些版本組成,並且能追蹤這些元件的依賴關係。SBOM 治理的核心價值,是把「我們用了什麼」這個問題,從事後臨時盤查,變成隨時可查詢的即時資訊:
【SBOM 供應鏈事件即時應變流程】
要讓 SBOM 真正發揮價值,關鍵在於自動化產生與持續更新,而不是每年做一次性的人工盤點文件。以下是 SBOM 治理成熟度的階段對照:
| 成熟度階段 | 樣貌 | 應變速度影響 |
|---|---|---|
| 無 SBOM | 依賴關係僅存在於建置設定檔中,無中央化管理 | 重大漏洞應變需數小時到數天人工盤查 |
| 靜態 SBOM | 每次發版產生一次,但未持續更新或集中管理 | 部分系統可快速查詢,但可能與現況脫節 |
| 動態 SBOM | CI/CD 自動產生並同步至中央資產庫,即時查詢 | 重大漏洞公告後,數分鐘內可定位受影響範圍 |
實務追蹤範例(去識別化 SBOM 供應鏈事件應變查詢紀錄):
【SBOM 供應鏈事件應變查詢紀錄】
- 事件: 知名開源套件 XYZ-lib 被證實植入惡意程式碼(v3.2.1-v3.2.4)
- 查詢耗時: 事件公告後 12 分鐘
- 發現受影響系統數: 4 台
【受影響系統細節】
- 訂單處理服務:
- 依賴路徑: app -> logging-framework -> XYZ-lib v3.2.3
- 暴露狀態: 直接依賴,已確認受影響版本。
- 處置行動: 緊急降版至 v3.1.9,已於 2 小時內完成。
- 內部報表工具:
- 依賴路徑: reporting-tool -> util-pkg -> XYZ-lib v3.2.2
- 暴露狀態: 間接依賴(三層深),已確認受影響版本。
- 處置行動: 評估影響範圍後,排入當日修補排程。
- 未受影響系統: 其餘系統經查詢均使用 v2.x 或 v3.3.0 以上版本,排除風險。
【總結結論】
透過 SBOM 中央查詢系統,於 12 分鐘內完成全公司受影響範圍確認,較過去人工盤查方式(平均需 2-4 小時)大幅縮短應變關鍵時間。
這份紀錄清楚展示了 SBOM 的實際效益:從過去需要 2-4 小時的人工盤查,縮短到 12 分鐘的自動化查詢,這正是重大漏洞應變黃金時間中,最關鍵的槓桿改善點。
實戰行動清單:
你信任的不是某一家開源套件的維護者,你信任的,是一整條你可能從未真正看清楚的依賴鏈。SBOM 治理的意義,不是為了應付稽核而產出一份文件,而是在下一次供應鏈攻擊發生的那個瞬間,讓你有能力在幾分鐘內說出「我們中了沒」,而不是花上一整夜在建置紀錄裡大海撈針。工具會換,開源生態會持續演化,但看清楚自己軟體地基的能力,永遠是供應鏈韌性的起點。
如果現在有一個知名開源套件被爆出植入惡意程式碼,你有信心在多久之內查出公司哪些系統受影響?如果答案是「不確定」,你覺得問題出在缺乏 SBOM,還是依賴關係太複雜難以追蹤?
【明日 DAY 20 痛點預告】
攻擊者視角下的隱藏資產,但影子 IT 從來不是一次性掃描就能解決的問題,它是每天都在新增、每天都在被遺忘的動態戰場。明天用全域資產動態監測(EASM 治理實務延伸),拆解如何把一次性掃描,升級成持續運作的治理機制。