跳至主要内容

SBOM

數位韌性教材專區

SBOM 簡介

  • 名詞解釋 :
    • SBOM : Software Bill of Materials/軟體物料清單,指的是軟體中的函式庫與元件清單。
    • OSV : Open Source Vulnerability,是一個公開的軟體漏洞資料庫,由 SBOM 搭配 OSV 可以了解軟體目前可能存在的漏洞。OSV 另提供函式庫與元件漏洞的修補版本資訊。

SBOM 清單建立基本流程

  1. 先以輔助工具建立 SPDX 檔,通常以 Json 格式為主流。
    • 不同工具所產生的 SPDX 內容可能會有所差異,但物料名稱清單部分則幾乎都相同。
  2. OSV-Scanner 工具查詢 OSV 紀錄中,相關物料目前所面臨的風險與相關 CVS 等級。
    • OSV-Scanner 可輔助產生可閱讀的 CSV 或 excel 報表。

SBOM 相關產生工具 

  • Microsoft sbom-tool
  • CycloneDX Generator
  • Trivy
  • Syft
  • parlay
  • OSV-Scanner

Syft

  • Syft 適用於 Windows、Linux 環境下

Syft Windows 使用紀錄

  • Syft 有封裝 exe 工具可直接於 Windows 下執行並產生 SBOM。
  • 準備資訊
    • syft.exe 工具下載
    • osv-scanner\osv-scanner_windows_arm64.exe 工具下載
    • 專案路徑
    • 輸出檔路徑: 建議輸出檔附檔名以 .cdx.json 結尾,範例: syft.cdx.json
    • windows cmd

Syft SBOM 建立指令

  • CycloneDX format
-- SBOM 建立指令: cmd 下先進入 syft.exe 所在資料夾

set "SYFT_FORMAT_PRETTY=true" && syft "D:\path\to\my\project" -o cyclonedx-json@1.5=D:\path\of\sbom\output\folder\syft.cdx.json

SPDX 連結 OSV 資料庫

Trivy

  • Trivy 適用於 Windows、Linux 環境下
  • Windows 下似乎只能在 cmd 下成功執行指令,其他 Bash 模擬套件有時會無法產出報告檔。
  • WIndows cmd 下執行時,路徑相關資料內容可以用雙引號封住。

Trivy Windows 使用紀錄

  • Trivy 下載位置
  • Trivy Linux 下安裝方式: Windows 下已經封裝成為 exe 檔可直接在 cmd 下呼叫指令。
  • 準備資訊
    • trivy.exe 工具下載
    • osv-scanner\osv-scanner_windows_arm64.exe 工具下載
    • 專案路徑
    • 輸出檔路徑: 建議選用 CycloneDX format 輸出檔附檔名以 .cdx.json 結尾,範例: trivy.cdx.json。也可選則 SPDX format。
    • windows cmd

Trivy SBOM 建立指令 -- SBOM 建立指令: cmd 下先進入 trivy.exe 所在資料夾

  • CycloneDX format
trivy repo --format cyclonedx --output "D:\path\to\output\report\trivy.cdx.json" "D:\path\to\my\project"

trivy repo --format cyclonedx --output ./sbom/trivy.cdx.json ./path/to/repo
  • SPDX format
trivy repo --format spdx-json --output ./sbom/trivy.spdx.json ./path/to/repo

SPDX 連結 OSV 資料庫  

  • forrmat 有多種可選: table、markdown 等等
    • --format: 參數 table、markdown
    • 別忘的輸出副檔名要修改,以方便工具開啟。
    • 建議搭配 Browser plugin 直接瀏覽 md 檔,方便快速連結到 OSV 查看 CSV 詳細細節。
-- osv-scanner 連結 OSV 資料庫: cmd 下先進入 osv-scanner_windows_arm64.exe 所在資料夾

osv-scanner --sbom="D:\path\of\sbom\output\folder\trivy.cdx.json" --format=markdown --output=D:\path\of\osv\output\folder\osv.md