回到靈感庫列表
通用議題語言繁體中文科學科技

node_modules 藏了什麼?專案「軟體物料清單(SBOM)與依賴漏洞防禦」實踐

難度
進階
期程
4 週
建議人數
個人或 2–3 人
每週投入
6 小時
進行方式
線上

背景與動機

一個看似簡單的 Web 應用,往往在背後靜默引入數百個跨層級的第三方開源套件。挑選一個 Node.js 專案,結合金管會資安藍圖與開源供應鏈安全指引,自動化生成標準 SBOM(軟體物料清單),深度剖析依賴樹狀結構、開源授權衝突與已知 CVE 弱點,並完成一次防禦性套件升級驗證。

為什麼是現在

美國白宮行政命令與歐盟 CRA 相繼推動「軟體供應鏈安全」與 SBOM 透明化,金管會亦鼓勵金融機構產出 SBOM。本專案將基礎套件管理升級為「DevSecOps 資安工程實務」,帶你掌握 CycloneDX 標準規範、依賴弱點檢測(CVE Analysis)與開源授權合規審查,產出具備企業資安防禦思維的 GitHub 開源作品集。

目標

針對一個 Node.js 專案生成標準 CycloneDX 格式之 SBOM 清單,完成依賴樹(Dependency Tree)深度與授權合規盤點,抓出至少 1 項高風險 CVE 弱點或過期依賴,完成相容性回歸測試與一份開源治理報告。

成果產出

成果 01標準 CycloneDX / SPDX 格式之專案軟體物料清單(SBOM JSON)與依賴分析表資安工程清單
成果 02軟體供應鏈安全體檢與依賴升級技術報告(含 CVE 弱點分級、授權衝突檢查與 Git 回歸驗證)技術報告

執行期程

  1. 第 1 週選定具備 15 個以上依賴之 Node.js 小型專案,使用 Git 保存初始環境;運用 CycloneDX CLI 或 @cyclonedx/cyclonedx-npm 生成標準 SBOM 檔案,解析 package-lock.json 形成的巢狀依賴樹。完成標準專案在本機可正常編譯執行,產出第 1 版標準 CycloneDX SBOM JSON 檔。佐證資料Git 專案庫連結、初始 SBOM 檔案與依賴樹深度統計筆記。
  2. 第 2 週進行依賴合法性與授權條款盤點:利用 license-checker 檢視直接與間接套件之開源授權(MIT, Apache-2.0, GPL),標註具傳染性授權(GPL)對專案商業閉源之潛在法律風險,繪製依賴引入鏈條路徑圖。完成標準完成全依賴授權盤點,並至少追溯 3 個代表性底層套件的完整引用鏈條。佐證資料開源授權盤點清單與套件引入鏈條架構圖(Dependency Chain)。
  3. 第 3 週執行漏洞掃描(npm audit 或 Snyk CLI),識別專案中帶有已知 CVE 漏洞之依賴;挑選 1 個存在修復版本之套件建立 Git 分支進行升級,設計回歸測試驗證核心功能是否跑版或崩潰。完成標準完成 CVE 漏洞鑑別、升級分支建立與核心功能自動化/手動回歸驗證。佐證資料npm audit 掃描日誌、Git 升級 Commit 差異(Diff)與測試輸出截圖。
  4. 第 4 週整合修復決策理由(保留或回退之權衡),撰寫符合金管會供應鏈安全架構之「專案開源依賴治理報告」,並在 GitHub Actions 建立輕量 SBOM 自動生成工作流(CI Workflow)。完成標準完成技術報告定稿、CI 自動化腳本驗證與開源成果複盤。佐證資料GitHub Actions 綠燈截圖、完整技術報告(Markdown/PDF)與專案總結。

需要的佐證資料

  • 專案 Git 倉庫與初始環境建置紀錄。
  • CycloneDX 標準 SBOM JSON 檔案與依賴解析表。
  • 套件授權合規性清單與 CVE 弱點分析日誌。
  • Git 升級差異(Diff)、回歸測試結果與供應鏈治理技術報告。

核心實作技能

程式開發軟體測試版本控制Node.jsGit

建議具備的基礎技能

Node.js 與 npm / yarn 基本命令操作Git 分支管理(branch, checkout, merge)與終端機指令

特別適合這樣的你

對軟體資安(AppSec)、DevSecOps、後端工程(Backend)、開源治理與軟體供應鏈安全感興趣的學生與工程師。

建議規模與分工

AI 草擬 · 已人工審閱
建議人數個人或 2–3 人每人每週投入6 小時

1 人獨立完成能全盤經歷資安合規與工程升級;若 2 人合作,一人負責 SBOM 生成與授權法律風險盤點,另一人負責 CVE 漏洞掃描、升級回歸測試與 GitHub Actions CI 搭建。

分工
成員角色負責的事
A軟體供應鏈資安工程師負責 SBOM 規格導出、依賴樹路徑解析、授權合規審查、CVE 弱點識別與治理報告撰寫。
B版本維護與測試工程師選填負責升級分支維護、回歸測試案例設計、破壞性變更相容性驗證與 CI 自動化腳本配置。

人數與分工可於建立時調整

執行條件

地區與建議使用語言

地區
通用議題
主要建議語言
繁體中文
其他建議語言
語言使用說明
以繁體中文撰寫技術報告;資安專有名詞保留國際通用英文縮寫(如 SBOM, Transitive Dependency, CVE, CycloneDX, CI/CD)。

建議語言非參與條件

語言與資料獲取
個人擁有原始碼之 Node.js 開源或練習專案、公開之 npm 套件庫與開源漏洞資料庫。
實施邊界
為單一專案之依賴管理與合規實務,非滲透測試或商業安全認證背書,不侵入未授權系統。
場域/資料權限
本機開發環境(VS Code / Terminal)與 GitHub。
預估費用
約 NT$ 0(全數使用開源 CLI 工具與 GitHub 免費功能)
工具設備
Node.js、npm、CycloneDX CLI、Git / GitHub Actions、VS Code。

不在範圍內

  • 不對未獲授權之第三方生產系統進行主動攻擊或弱點掃描
  • 不洩漏任何專案環境變數(.env)或私鑰憑證
  • 不宣稱提供法律訴訟等級之正式智財權合規保證

參考資料

  1. 金融監督管理委員會,金管會發布「金融資安韌性發展藍圖」,強化金融資安生態系與營運韌性,2025,https://www.fsc.gov.tw/ch/home.jsp?id=96&parentpath=0%2C2&mcustomize=news_view.jsp&dataserno=202512300002&dtable=News
  2. OWASP Foundation,CycloneDX Bill of Materials Standard,https://cyclonedx.org/
  3. CISA,Software Bill of Materials (SBOM),https://www.cisa.gov/sbom
準備好開始了嗎?目標、範圍、期程、分工都可以在下一步進行調整
從這個靈感開始
node_modules 藏了什麼?專案「軟體物料清單(SBOM)與依賴漏洞防禦」實踐 · Project 專案作品集