dsh-dep-audit:依賴樹投毒與供應鏈風險檢查

前言

在 Node 項目裏,npm install 會拉整棵依賴樹,不少包在 install / postinstall 階段就會跑腳本。若版本約束過寬、或依賴指向 git / http 而非 registry,你在業務代碼裏從未 import 某個包,也可能在裝包瞬間已經執行過第三方腳本。公開資料裏常提到的 npm 供應鏈事件(如 event-stream、ua-parser-js、node-ipc、colors/faker 等)多與這類路徑有關。

單靠人工翻每個 package.json 和 lockfile 成本高,也不適合每次改依賴都重複做一遍。dsh-dep-audit(npm 包名 @deepwhale-cn/dsh-dep-audit)面向當前目錄的 manifest 與 lock 信息,按規則標出 install 腳本、過寬版本、非 registry 來源等風險面,供安裝前或 CI 裏做一次快速覈對。它屬於 DSH(DeepSeek Harness)生態下的 admin-security 類插件,維護者爲 feely0208;社區目錄見 skillhub 插件頁,源碼在 GitHub。

這是什麼

一句話:檢查依賴樹的投毒與風險面——裝包即執行的腳本、過寬版本、非 registry 來源。

插件通過 CLI dsh-dep-audit 或接入 DSH 使用;底層依賴 @deepwhale-cn/dsh-guard-core,要求 Node >= 18,DSH >= 0.1.0-rc.6(見 package.json)。當前發佈版本爲 0.1.1,許可證 MIT。

它不替代完整 SCA 平臺:README 明確 不查 CVE 漏洞庫,也 不做包名相似度(typosquat)檢測(誤報率高)。定位是供應鏈「行爲與來源」上的輕量審計,與許可、SBOM、CI 防護等插件可組合使用(同系列見 README 中的「供應鏈與構建」條目)。

核心功能:查什麼

官方 README 將檢出項按級別歸納如下(含義以文檔爲準):

級別 內容
高 依賴帶 install / postinstall 腳本
中 沒有 lockfile;版本使用 * / latest;git / http 來源
低 >=x.y.z 無上界

高 類項對應「裝包即執行」面:腳本在 npm install 生命週期運行,與是否在應用代碼中引用無關。

中 類項對應可重複安裝與來源不可控:無 lockfile 時解析結果易漂移;* / latest 會放大被投毒版本落入樹中的概率;非 npm registry 的 git / http 依賴缺少與 registry tarball 同等的審計習慣。

低 類項對應 semver 上界缺失,長期可能靜默升級到未預期的次要 / 補丁版本。

報告形態上,除終端輸出外,支持導出 HTML(見下文用法)。README 提供了報告、演示模式、規則說明的截圖鏈接(deepwhale.org.cn 插件資源路徑)。

邊界與人工確認

README 強調:帶 install 腳本不等於惡意。esbuild、sharp、puppeteer 等常見原生或下載型依賴必須有 install 步驟,插件側有白名單;報出項仍需人工判斷是否可接受。

使用者須自行遵守所在地區法律法規;README 聲明對使用本項目造成的後果自行承擔責任。

安裝與啓用

下面兩條路徑來自 README 原文,不要與 dsh plugin add github:owner/repo 形式混用。

  1. 作爲 DSH 插件(示例 profile 爲 web):
dsh plugin --profile web add @deepwhale-cn/dsh-dep-audit
  1. 不裝 DSH、僅 CLI:
npx @deepwhale-cn/dsh-dep-audit

安裝 DSH 插件前,建議像對待任意第三方插件一樣:查看源碼與 LICENSE,確認將以 當前 dsh 進程的用戶權限 運行;該權限可讀寫其能訪問的工作區與依賴目錄,執行掃描邏輯。

典型用法

在待檢查項目根目錄(含 package.json,若有則含 lockfile)執行:

dsh-dep-audit

掃當前目錄,在終端列出規則命中項。

想先看規則在長什麼樣、輸出格式如何,可用演示模式:

dsh-dep-audit --demo

需要留檔或給非 CLI 同事查看時,可生成 HTML 報告:

dsh-dep-audit --html r.html

將 r.html 換成你需要的路徑即可。具體字段與樣式以當前版本 CLI 輸出爲準。

適用場景與注意

適合誰

  • 維護 Node / 前端 monorepo 的開發者,在合併依賴變更或發佈前做一道供應鏈習慣檢查。
  • 在 CI 里加一步輕量 gate(與 lockfile 策略、私有 registry 並用),先攔 install 腳本與非 registry 來源,再交給漏洞掃描工具。
  • 已使用 DSH 做工程化 / Agent 工作流的團隊,把 @deepwhale-cn/dsh-dep-audit 與同系列的 license-guard、ci-guard、sbom 等插件按 README 建議組合。

注意

  • 命中 install / postinstall 時,應打開對應包的 package.json scripts 與發佈 tarball 行爲,結合白名單與業務必要性判斷,不要僅憑告警刪包。
  • 需要 CVE、許可證全文、SBOM 時,應使用專門工具或其它 DSH 插件補全,不要指望本插件覆蓋全部 SCA。
  • 純 npx 運行會從 npm 拉取 @deepwhale-cn/dsh-dep-audit 指定版本,與任何 npx 工具一樣,請在可信網絡與鎖版本策略下使用。

結尾

dsh-dep-audit 把依賴樹裏與投毒、供應鏈攻擊常見手法相關的信號——裝包腳本、過寬版本、非 registry 來源、無 lockfile——收成一條命令可跑的檢查,並可選 HTML 報告。它不能代替人工對可疑腳本的判斷,也不查 CVE 與 typosquat,但在「裝包即執行」這一環上,能明顯縮短排查路徑。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜