Eligahyu/dsh-sentinel-scanner:为 DSH 插件做只读安全扫描

前言

DSH 环境里常见的一种场景是:一个插件要加入某个 profile,或者要作为 Agent Tool 提供给智能体使用。此时开发者需要先判断插件是否包含命令执行、凭据访问、数据外传、混淆、不安全安装脚本等行为。

下面介绍 Eligahyu/dsh-sentinel-scanner。它是一个面向 DeepSeek Harness(DSH)插件的只读安全、供应链和健康扫描工具,适用于插件源码树、已发布的 npm 包、DSH profiles 和 CI pipelines。

这是什么

Eligahyu/dsh-sentinel-scanner 是一个 read-only security, supply-chain, and health scanner for DeepSeek Harness plugins,由 Eligahyu 维护,MIT license。

它的核心定位是:在运行插件代码之前,对插件做静态检查,并输出结构化报告。扫描结果包含 0-100 risk score,以及 safe / review / risky / dangerous verdict。

同一套能力可以提供为以下形式:

  • DSH Agent Tool plugin:sentinel_scansentinel_scan_profilesentinel_audit_package
  • 独立 CLI:npm package deepseek-harness-sentinel,可执行命令为 dsh-sentinel
  • GitHub Action,支持 SARIF upload
  • JavaScript API,用于程序化集成

它不是运行时 sandbox,也不是插件执行器。已核实说明中写明:scanned code is never executed。

核心能力

下面列出本文要覆盖的能力。

静态检测规则

它使用 51 heuristic rules with AST-based taint analysis。

可检测的问题类型包括:

  • command execution
  • dynamic code evaluation
  • credential access
  • data exfiltration
  • obfuscation
  • unsafe lifecycle scripts
  • persistence
  • native binaries
  • manifest escape paths
  • package drift

扫描模式

提供三种 scan modes:

  • source
  • package
  • profile

其中 profile 用于 DSH profile 场景,package 用于包级场景,source 用于源码树场景。

Pre-install quarantine

对于 npm tarball,它可以做 pre-install quarantine,不执行 lifecycle scripts。

已核实流程是:下载 tarball、验证 integrity、解包到 quarantine、扫描、清理。它不会运行 npm install

报告与 CI

它支持:

  • SBOM export
  • SARIF output
  • CI policy enforcement

在 CI 中,它可以基于风险等级和扫描完整性影响退出码。

隐私与外部查询

已核实说明中包含:

  • Secrets are always redacted in reports
  • Optional OSV lookup is disabled by default
  • 启用 OSV lookup 时,只发送 package name and version

TypeScript 边界

已核实说明中指出:TypeScript parser limits are reported as a capability boundary instead of falsely failing every TypeScript scan。

也就是说,遇到 TS 解析边界时,报告会体现能力边界,而不是把所有 TS 扫描都直接判成失败。

安装与启用

作为 DSH 插件安装

如果希望把它作为 DSH Agent Tool plugin 使用,已提供命令为:

dsh plugin --profile web add github:Eligahyu/dsh-sentinel-scanner

安装后,可以通过 DSH Agent Tool 调用:

sentinel_scan
sentinel_scan_profile
sentinel_audit_package

作为独立 CLI 使用

独立 CLI 的 npm package 是 deepseek-harness-sentinel,可执行命令是 dsh-sentinel

要求:

Node.js ^22.18.0 or >=24.11.0

可以临时运行:

npx deepseek-harness-sentinel ./path/to/plugin

也可以安装为项目依赖:

npm install --save-dev deepseek-harness-sentinel
npx dsh-sentinel ./path/to/plugin

peer dependencies 是 optional:

@deepseek-ai/cordis
@deepseek-ai/dsh-tools

典型用法

下面示例均来自已核实用法。

生成 JSON 报告

npx deepseek-harness-sentinel ./plugin --json --out sentinel.json

这一步是对 ./plugin 做扫描,并把结果写到 sentinel.json

扫描包产物并输出 SARIF

npx deepseek-harness-sentinel ./plugin --mode package --format sarif --out sentinel.sarif

这一步使用 package mode,并输出 SARIF 文件。

在 CI 中设置失败策略

npx deepseek-harness-sentinel ./plugin --fail-on high --fail-on-incomplete --strict-exit-codes

这一步表示:当出现 high 级别结果,或扫描不完整时,CI 可以根据退出码失败。

安装前审计 npm 包

npx deepseek-harness-sentinel audit-install some-plugin@1.2.3

这一步用于安装前审计。已核实说明中写明:它不运行 npm install,而是下载 tarball、验证 integrity、解包到 quarantine、扫描并清理。

对比源码树与已发布包

npx deepseek-harness-sentinel diff ./plugin some-plugin@1.2.3

这一步用于比较本地源码树和指定 npm package。

查看规则目录

npx deepseek-harness-sentinel --rules

这一步打印完整 rule catalog。

适用场景与注意

这个工具适合两类人:

  • 插件使用者:在 install 或 activation 前检查第三方插件
  • 插件作者和维护者:在 publish 前检查危险行为、打包漂移、不完整扫描和 manifest 问题

需要明确的是,它是 heuristic static analysis,不是安全证明。一条 finding 的含义是:review the evidence,而不是直接判定插件 malicious。

同时,DSH 插件运行时会处于当前 dsh 进程可获得的权限范围内,因此安装前仍要检查源码、许可证和扫描结果。

实际使用时还要注意:

  • 静态分析不会执行被扫描代码
  • TypeScript 解析边界会作为 capability boundary 报告
  • secrets 会在报告中 redact
  • optional OSV lookup 默认关闭
  • 启用 OSV lookup 时只发送 package name and version
  • peer dependencies @deepseek-ai/cordis@deepseek-ai/dsh-tools 是 optional

结尾

Eligahyu/dsh-sentinel-scanner 的价值,是把 DSH 插件安装前的检查做成可重复、可接入 CI、可输出报告的动作。对于要启用第三方插件、要发布插件、或者要在 DSH profile 中加入 Agent Tool 的开发者,它提供了一个不执行被扫描代码的静态检查入口。

仓库地址:

https://github.com/Eligahyu/dsh-sentinel-scanner

如果从 DSH 插件目录查找,条目名为:

Eligahyu/dsh-sentinel-scanner
羽毛球分组比赛记分
小程序二维码

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

小夜