【免费下载链接】dsh-plugin-shop
The most comprehensive DeepSeek Harness plugin market — refreshed daily, sourced across the Internet, reviewed before publishing.
dsh-plugin-shop 是面向 DeepSeek Harness 的开源插件商店,它每天自动从 npm 和 GitHub 发现候选插件,并在上架前逐一执行安全审查。本文解析它如何拦截 typosquatting(名称仿冒)插件、防范供应链攻击,以及"版本钉住 + 内容哈希 + 安装确认"这套多层防御机制的具体设计。
先认识这个"门禁":每日构建的五道检查
dsh-plugin-shop 的目录构建代码位于registry/,每个候选插件都必须通过 gate.ts 中的一系列准入规则,任何一道检查不通过都会被记录到公开构建报告中,并附带作者可读的拒绝原因(共十七种预定义拒绝码)。
核心检查包括:
- 可安装性:声明了有效的
dsh.bundle,否则只是普通库而非插件; - 可审查性:必须有 license 和可访问的源码仓库;
- 可信度:校验
dist.integrity哈希、发布时间戳,并拦截潜在误导性名称; - 可展示性:有有效的
dsh.catalog或 npmdescription; - 大小预算:单个条目最多 12 KiB 字节,防止恶意作者用超长字段撑爆目录文件。
typosquatting 门禁:名字差两个字符就会被"扣下"
typosquatting 是插件市场最常见的攻击:攻击者注册一个与知名插件仅差一两个字符的包名,诱导用户装错。dsh-plugin-shop 在 gate.ts 中实现了专门的相似度门禁(similarity hold):
- 对每个候选包名,计算它与
verified.yml中所有已验证名称的编辑距离(Levenshtein distance); - 距离 ≤ 2(阈值常量
SIMILARITY_THRESHOLD = 2)的候选不会自动上架,而是被扣下等待人工裁定; - 人工裁定后二选一:放行写入 allowed-similar.yml(仅解除相似性扣压,不授予信任等级),或加入黑名单 denied.yml。
值得注意的是,GitHub 渠道的门禁 repo-gate.ts 会同时探测仓库 slug 和 bundle 名称,防止攻击者换个仓库名绕过。官方设计文档中甚至有一条示例:dsh-hllo-plugin(少了个 e)会被直接拒绝,理由标注为 "possible typosquat of dsh-hello-plugin",见 设计文档。
供应链攻击防御:审查只钉住"精确版本"
这是本项目最核心的信任设计,实现在 tier.ts:
| 渠道 | 审查钉住的对象 | 换掉之后 |
|---|---|---|
| npm | reviewedVersion(精确版本号) | 任何更新或更旧版本都降级为verified-stale |
| GitHub 仓库 | 仓库 +reviewedCommit(精确 commit) | 推送新 commit 即降级 |
| Release 救援 | tarball 的reviewedSha256(内容哈希) | tag 可被删除重建,所以只认哈希 |
设计动机写得很直白:如果把信任绑在"包名"上,作者发布一个恶意新版本就能自动继承旧版本的信任。因此信任从不跨身份迁移——npm 审查对 GitHub 同名的 fork 无效,反之亦然(实测中有 177 个名称被多个条目共享,dsh-skill-manager一个名字就有 14 个仓库在争用,见 install.ts 注释)。
目前 verified.yml 为空,即没有任何插件通过人工审查,整个商店都是community等级——这是项目刻意保持的诚实姿态,详见 SECURITY.md:"community 只表示没有人审过代码,不是合格证书"。
内容完整性校验:多源 + sha256
本地商店 catalog.ts 加载目录时还会做完整性校验:
- 目录数据文件名本身就是内容哈希:
plugins.<sha256>.json; - 同时向多个源(配置的 npm registry、npmmirror、GitHub Pages 等)并发请求,取第一个且 sha256 与 index 中登记一致的响应,哈希不匹配直接抛错拒用;
- 目录中还记录每个插件的 SRI 完整性哈希(
dist.integrity),gate.ts 会严格校验其必须符合 SRI 格式,防止作者注入异常值污染快照。
此外,每天构建后生成的manifest.lock快照会提交到 Git,所有目录变更可逐条追溯。
最后一道墙:安装门禁与人工确认
即使插件已上架,安装时还有第二道闸门,同样是纯函数,实现在 install.ts:
needs-acknowledgement:非verified等级的插件,每次安装都必须用户显式确认(也就是下图那个确认弹窗的来源);version-mismatch:请求版本必须与目录中钉住的版本完全一致;ambiguous-identity:同名插件有多条时拒绝猜测,防止装错身份;name-taken:同一 profile 内同名插件不会被静默覆盖;denied:命中黑名单直接拒绝。
黑名单与恶意插件处置流程
denied.yml 是永久性黑名单,每条都附带人工记录的拒绝原因和可选的合法替代品。发现目录中混入恶意插件时,应通过 SECURITY.md 描述的私有渠道报告(不要开公开 issue 或 PR),确认后会写入denied.yml,且条目永久有效——黑名单同时按包名和声明的仓库两个维度匹配,防止作者换个渠道发布同一段代码。
小结:防御体系一览
| 层次 | 机制 | 针对的攻击 |
|---|---|---|
| 发现层 | 关键词自动发现 + 每日构建 + Git 留痕 | 未知来源混入 |
| 审查层 | typosquatting 相似度门禁(距离 ≤ 2 扣压) | 名称仿冒 |
| 信任层 | 审查钉住精确版本 / commit / sha256 | 恶意新版继承信任 |
| 完整性层 | 多源并发 + sha256 校验 + SRI 格式检查 | 中间人 / 目录投毒 |
| 安装层 | 非 verified 强制确认 + 版本匹配 + 身份消歧 | 误装 / 装错同名包 |
| 处置层 | denied.yml 永久黑名单 + 私有报告通道 | 存量恶意插件 |
需要提醒的是:dsh-plugin-shop 不提供沙箱隔离,插件加载后拥有完整的运行时权限,商店的职责是"上架前挡住明显的恶意与仿冒",最终信任决策仍在用户手中。
更多设计细节可参阅 docs/design/ 目录下的设计文档与 registry/ 目录下的审查管线源码。
【免费下载链接】dsh-plugin-shop
The most comprehensive DeepSeek Harness plugin market — refreshed daily, sourced across the Internet, reviewed before publishing.
相关推荐
如何通过Server Survival游戏掌握DDoS防御系统:从理论到实战的完整指南
如何通过Server Survival游戏掌握DDoS防御系统:从理论到实战的完整指南 Server Survival是一款创新的塔防游戏,它将枯燥的云架构知识
游戏开发教育如何在Claude Code中一键安装HUD插件:实时掌握AI助手工作状态
如何在Claude Code中一键安装HUD插件:实时掌握AI助手工作状态 想让你的Claude Code开发体验更直观透明吗?Claude HUD插件正是你需
AI 插件开发工具终极指南:如何检测和防御Office宏恶意软件攻击
终极指南:如何检测和防御Office宏恶意软件攻击 在当今网络安全环境中,Office宏恶意软件已成为最常见的攻击载体之一。al khaser项目作为一款功能强
网络安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考