Skip to content
dsh.fish
Bundle

@deepseek-ai/dsh-client-skill-security-inspector

Portable DSH WebUI skill security inspection with local rules and optional model review

Source
kakapengta
stars
1 stars
License
UNLICENSED
Updated
Updated 14 days ago

Readme

![DSH Skill Security Inspector](assets/banner.png)

# DSH Skill Security Inspector

[English](README.en.md) | 简体中文

一个可直接安装到 DeepSeek Harness(DSH)Web profile 的独立安全检查插件。在安装或使用不受信任的 Skill 前,先执行浏览器本地粗检,再由用户决定是否调用 DSH 已配置的大模型进行结构化复核。检查方法与检查内容参考了 Cisco 的 [skill-scanner](https://github.com/cisco-ai-defense/skill-scanner)。

⚠️`no-known-risk` 只表示现有规则未发现已知问题,不是安全保证,规则匹配无法覆盖所有语义改写,重要 Skill 仍应人工复核~

## 特性

- 独立主侧边栏入口。
- 拖入 Skill 文件夹或 ZIP;不会安装、导入或执行其中的代码。
- 本地确定性规则覆盖提示词注入、诱导泄密、危险命令、凭据、数据外传、混淆、供应链和权限风险。
- 最近 3 次检查历史保存在当前浏览器;不保存原始文件或模型送审片段。
- 大模型复核默认关闭,必须由用户明确启动。
- 可选模型、推理强度、中英文提示词、送审范围和字符预算。
- 模型必须逐条判断粗检项为确认、误报或不确定,并单独报告新增风险。

## 快速开始

本仓库已经提交可运行的 `lib/` bundle,不需要在仓库内安装依赖或构建。克隆后用 `file:` 把实际绝对路径传给 DSH:

```bash
git clone https://github.com/kakapengta/DSH-Skill-Security-Inspector.git

cd /ABSOLUTE/PATH/TO/deepseek-harness
pnpm dsh plugin --profile web add file:/ABSOLUTE/PATH/TO/DSH-Skill-Security-Inspector
pnpm dsh --profile web --port 3080
```

以后正常启动只需要最后一条命令。插件仓库更新后,重新执行一次 `plugin add file:...`,再停止并启动 DSH,使 profile 刷新预构建 package。

## 使用方法

1. 在 DSH 主侧边栏打开“Skill 安全检查”。
2. 拖入 Skill 文件夹或 ZIP。
3. 点击“开始检查”,先查看本地粗检结果。
4. 如需语义复核,打开大模型开关,确认模型、语言、范围和预计 token 后再点击“运行大模型复核”。
5. 可导出 JSON 报告,或从“最近检查”回看最近 3 份报告。

可使用 [`tests/fixtures/all-rules-skill`](tests/fixtures/all-rules-skill) 验证全部现有内容规则;使用 [`tests/fixtures/missing-root-skill`](tests/fixtures/missing-root-skill) 验证根目录 `SKILL.md` 缺失检查。测试内容只作为文本读取,绝不会执行。

### 全部规则样例运行结果

![all-rules-skill 运行结果](assets/all-rules-scan-result.jpg)

## 检查范围

| 类别 | 示例 |
|---|---|
| Skill 结构 | 根目录缺少 `SKILL.md`、敏感 package 文件 |
| 提示词注入 | 覆盖上级指令、伪造 system/developer、越狱模式 |
| 凭据风险 | 硬编码令牌、私钥头、读取 `.env`/SSH/云凭据 |
| 危险命令 | 下载后执行、动态代码、递归删除、危险权限修改 |
| 数据外传 | Webhook、隧道、反向 shell、远端提交本地数据 |
| 混淆 | Base64 解码执行、PowerShell encoded command |
| 供应链 | `latest`、主分支 URL、未固定安装 |
| 权限 | 不受限制的文件系统、Shell、网络或工具访问 |

规则集中在 [`src/scanner.ts`](src/scanner.ts),精确回归断言位于 [`tests/scanner.client.spec.ts`](tests/scanner.client.spec.ts)。

## 两阶段架构

```text
不受信任的 Skill
        │
        ▼
浏览器本地规则扫描 ──► 统一、已遮罩的发现项
        │
        └── 用户明确开启并确认范围 ──► DSH 模型结构化复核
                                            │
                                            ▼
                                逐条判断 + 新增风险 + JSON 报告
```

默认智能送审范围包含根 `SKILL.md`、粗检命中位置附近文本和脚本短前缀,默认最多 8,000 字符。类似凭据的文件名会被排除,识别到的 token 和私钥内容会被遮罩。

## 隐私与本地历史

- 粗检完全在浏览器中进行。
- 大模型复核关闭时,不发送 Skill 内容。
- 本地历史仅保存报告元数据、已遮罩发现项和模型结论,最多 3 份。
- 原始文件字节、完整 Skill 文本和模型送审片段不会写入历史。
- 历史使用浏览器 `localStorage`,可随时在界面清空。
- `no-known-risk` 只表示现有规则未发现已知问题,不是安全保证。

## 项目结构

```text
.
├── .github/workflows/     # GitHub 仓库安全检查
├── assets/                # README 图片资源
├── lib/                   # 已构建、可直接运行的 Host/Client bundle
├── licenses/              # 内嵌依赖的法定许可文本
├── src/                   # TypeScript/React 源码与规则
├── tests/                 # 单元测试和惰性攻击样例
├── CHANGELOG.md           # 版本变更记录
├── cordis.patch.yml       # DSH Host 插件覆盖层
├── package.json           # DSH 插件 manifest
├── README.en.md           # English documentation
└── README.md              # 中文说明
```

## 限制

- 当前版本不包含 YARA、字节码反汇编、PDF/Office 提取、完整 AST 数据流、OSV、VirusTotal 或沙箱行为分析。
- ZIP64 和加密 ZIP 会被拒绝,其他压缩格式需要先在插件外解压。
- 不支持的二进制或超限内容会使结果成为“检查不完整”。
- **规则匹配无法覆盖所有语义改写,重要 Skill 仍应人工复核。**

Install

dsh plugin --profile web add github:kakapengta/DSH-Skill-Security-Inspector

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source