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
羽毛球分组比赛记分
小程序二维码

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

小夜