前言¶
在 DeepSeek Harness(DSH)里安装第三方 skill 或插件 bundle,常见做法是直接 dsh plugin add 或把目录交给智能体处理。bundle 里可能包含 SKILL 指令、Cordis 补丁、npm 生命周期脚本等文本;在未审阅前执行或安装,存在指令覆盖、远程拉脚本、凭证路径引用等供应链风险。手工逐文件 grep 可行但易漏、难统一口径。
dsh-skill-scan 由 lengrufeng2008 维护,归类为 admin-security,对 bundle 做静态、只读的第一遍安全扫描:不执行 bundle 内容,用启发式规则标出需要人工解释的高风险片段。思路受 NVIDIA SkillSpector 供应链检查启发,实现为小型 DSH 工具与 CLI(见仓库 NOTICE.md,未复制其源码)。社区目录页:https://www.skillhub.cn/plugins/lengrufeng2008/dsh-skill-scan;源码:https://github.com/lengrufeng2008/dsh-skill-scan。SkillHub 为社区独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
一句话:对 DSH skills 与 plugin bundle 做静态只读安全初筛(Static, read-only security first pass)。
维护者 lengrufeng2008;当前 package 版本 0.1.0,MIT 许可证,Node.js >= 20。它不是沙箱、AST 污点分析、OSV 漏洞库或运行时监控;PASS 仅表示在当前规则下未发现命中项,不能当作「已证明安全」。
核心功能:扫描器会找什么¶
README 列出的启发式检测方向包括:
- 指令覆盖 / 外泄类表述(instruction override / exfiltration language)
curl ... | sh一类远程 shell 模式- 破坏性 root/home 删除相关表述
- 凭证路径(如
.ssh/id_rsa、.aws/credentials) eval/new Function- 过长编码 payload
- 隐藏 Unicode(双向文本 / 零宽字符等)
- package 生命周期脚本(lifecycle scripts)
- Cordis 补丁中的
!!js
命中高严重项时结果可为 BLOCK;也可能出现 WARN。安全文档引用攻击手法、合法包使用 lifecycle script 等会产生误报,需结合上下文读具体文件与行号。
安装与启用¶
DSH 侧按 README 示例从本地路径加入插件(路径需换成你本机 clone 或下载后的目录):
dsh plugin --profile web add /home/lrf/dsh/products/dsh-skill-scan
安装后可在对话中让智能体使用该工具,例如 README 建议的表述:「Use skill_scan on this bundle.」工具行为为只读扫描。
独立使用 CLI 时,在仓库根目录通过 Node 调用 bin/dsh-skill-scan.mjs(亦可通过 npm 包配置的 dsh-skill-scan 入口,视你的安装方式而定)。
典型用法¶
对某个 bundle 目录做扫描:
node bin/dsh-skill-scan.mjs /path/to/bundle
需要机器可读输出时:
node bin/dsh-skill-scan.mjs /path/to/bundle --json
退出码含义(README 原文):
1:存在BLOCK级发现0:PASS或WARN2:输入无效
出现 BLOCK 时,安装或合并前应打开报告中的文件与行号自行判断;扫描器不会替你执行或隔离代码。
仓库内测试(fixtures 含故意不安全的 bundle,测试仅按文本读取、不执行):
npm test
适用场景与注意¶
适合:在 CI 或安装前对第三方 skill / plugin bundle 做统一、可重复的文本级初筛;与人工 code review 配合,而不是替代。
务必注意:
- 插件与 CLI 在当前 dsh / 用户进程权限下读取文件;安装插件前仍应检查源码、许可证与维护者信息。
- 不要因
PASS跳过审阅;不要因单条BLOCK在未读上下文时直接否决——README 明确说明误报可能。 - 安装命令以 README 为准;勿凭插件名臆造
dsh plugin add github:owner/repo等形式。
结尾¶
dsh-skill-scan 把第三方 bundle 的安全检查收成一条可脚本化的只读第一遍:规则覆盖指令劫持、远程 shell、凭证路径、混淆与 Cordis !!js 等常见红旗,并区分 PASS / WARN / BLOCK 与 CLI 退出码。更深的安全仍依赖人工读代码与组织策略。