前言¶
在 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)