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,但在「装包即执行」这一环上,能明显缩短排查路径。

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

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

小夜