前言¶
在 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 形式混用。
- 作爲 DSH 插件(示例 profile 爲
web):
dsh plugin --profile web add @deepwhale-cn/dsh-dep-audit
- 不裝 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.jsonscripts 與發佈 tarball 行爲,結合白名單與業務必要性判斷,不要僅憑告警刪包。 - 需要 CVE、許可證全文、SBOM 時,應使用專門工具或其它 DSH 插件補全,不要指望本插件覆蓋全部 SCA。
- 純
npx運行會從 npm 拉取@deepwhale-cn/dsh-dep-audit指定版本,與任何 npx 工具一樣,請在可信網絡與鎖版本策略下使用。
結尾¶
dsh-dep-audit 把依賴樹裏與投毒、供應鏈攻擊常見手法相關的信號——裝包腳本、過寬版本、非 registry 來源、無 lockfile——收成一條命令可跑的檢查,並可選 HTML 報告。它不能代替人工對可疑腳本的判斷,也不查 CVE 與 typosquat,但在「裝包即執行」這一環上,能明顯縮短排查路徑。
- 目錄頁:https://www.skillhub.cn/plugins/feely0208/dsh-dep-audit
- GitHub:https://github.com/feely0208/dsh-dep-audit
- npm 包名:
@deepwhale-cn/dsh-dep-audit(0.1.1)