安装验证:沙盒安装通过,Web 冒烟失败 (L5 failed) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →
功能介绍AI
通过OAuth 2.1延迟授权连接富途MCP插件,令牌安全存储在外部工作区。
- OAuth 2.1 延迟授权流程
- 令牌存储在 ~/.dsh,权限 0600
- 连接富途 MCP
能力标签为 AI 推断或 README 规则抽取(见角标),词表受限、未经安装验证;AI = 推断,README = 原文关键词。
安装
dsh plugin --profile web add github:yangzhe1991/dsh-futu-mcp安装方式: GitHub · 沙盒安装通过,Web 冒烟失败 (L5 failed)
验证与兼容性
按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。
External credentials(插件级):未检测到
依据:1 条要求、覆盖 2 个 @deepseek-ai/dsh-* 子包。 看原始区间
^0.1.1-rc.2 ×2
✗ 当前 dsh 0.2.1-rc.2 不在支持范围内 —— 官方安装门控会直接拒绝装(incompatible-version)。
强行安装需精确豁免一次:dsh plugin allow-version dsh-futu-mcp@0.1.1 0.2.1-rc.2(豁免记在本机 profile,本站不假定你是否已豁免)
能否正常运行是另一件事 → 见下方实测矩阵(L1–L5)。
| 插件版本 \ dsh | dsh 0.2.1-rc.2 当前 | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 | dsh 0.2.0-rc.2 | dsh 0.2.0-rc.1 |
|---|---|---|---|---|---|
| df1eba | ✗ | ✗ | ✗ | ✗ | ✗ |
df1ebagithub失败 152026-10-19
https://github.com/yangzhe1991/dsh-futu-mcp
✗dsh 0.2.1-rc.2当前2026-10-19L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.2.1-rc.2 · 档位: l4-sandbox
签发:2026-10-19 · 有效至:2026-10-26
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.2.1-alpha.42026-10-16L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.2.1-alpha.4 · 档位: l4-sandbox
签发:2026-10-16 · 有效至:2026-10-23
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.2.1-alpha.22026-10-11L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.2.1-alpha.2 · 档位: l4-sandbox
签发:2026-10-11 · 有效至:2026-10-18
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.2.0-rc.22026-10-09L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.2.0-rc.2 · 档位: l4-sandbox
签发:2026-10-09 · 有效至:2026-10-16
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.2.0-rc.12026-09-29L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.2.0-rc.1 · 档位: l4-sandbox
签发:2026-09-29 · 有效至:2026-10-06
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.7-rc.22026-09-25L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.7-rc.2 · 档位: l4-sandbox
签发:2026-09-25 · 有效至:2026-10-02
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.7-rc.12026-09-23未实测
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.1
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.7-rc.1 · 档位: l4-sandbox
签发:2026-09-23 · 有效至:2026-09-30
查看检查项与证据
该档位在这次扫描中未执行。
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.7-alpha.22026-09-23L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.7-alpha.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.7-alpha.2 · 档位: l4-sandbox
签发:2026-09-23 · 有效至:2026-09-30
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.6-alpha.22026-09-20L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.6-alpha.2 · 档位: l3-fullscan
签发:2026-09-20 · 有效至:2026-09-27
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.6-alpha.12026-09-17L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.6-alpha.1 · 档位: l4-sandbox
签发:2026-09-17 · 有效至:2026-09-24
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.5-rc.22026-09-12L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.5-rc.2 · 档位: l4-sandbox
签发:2026-09-12 · 有效至:2026-09-19
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.3-alpha.22026-09-09L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.3-alpha.2 · 档位: l4-sandbox
签发:2026-09-09 · 有效至:2026-09-16
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.3-alpha.12026-09-07L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.1
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.3-alpha.1 · 档位: l3-fullscan
签发:2026-09-07 · 有效至:2026-09-14
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.2-rc.12026-09-05L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.2-rc.1
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp#df1eba
ID: dsh-futu-mcp@df1eba@dsh0.1.2-rc.1 · 档位: l3-fullscan
签发:2026-09-05 · 有效至:2026-09-12
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.1.2-alpha.12026-09-06L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.1.2-alpha.1
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dsh0.1.2-alpha.1 · 档位: l3-fullscan
签发:2026-09-06 · 有效至:2026-09-13
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗版本史前2026-10-05L5 · 失败
- • Node.js: v24.14.0
- • DSH: unknown
- • 被测插件工件: github · https://github.com/yangzhe1991/dsh-futu-mcp(版本未标注)
ID: dsh-futu-mcp@df1eba@dshunknown · 档位: l4-sandbox
签发:2026-10-05 · 有效至:2026-10-12
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/dsh-futu-mcp/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 低,按「取更严者」→ 总评级 低。
v0.1.1dsh 清单0.1.1git2026-10-210.1.1版本一致clean · npmvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(5 条)
- 警告netIp · network
src/callback-server.ts:74url: `http://127.0.0.1:${actualPort}/callback`, - 警告netIp · network
src/callback-server.ts:88const parsed = new URL(url, 'http://127.0.0.1:1') - 警告childProcess · code-exec
src/oauth-provider.ts:70child = spawn('open', [url], { detached: true, stdio: 'ignore' }) - 警告childProcess · code-exec
src/oauth-provider.ts:72child = spawn('cmd', ['/c', 'start', '', url], { detached: true, stdio: 'ignore' }) - 警告childProcess · code-exec
src/oauth-provider.ts:74child = spawn('xdg-open', [url], { detached: true, stdio: 'ignore' })
展开 3 条审计发现
- lowOAuth 回调页把 error_description 未转义地反射进 HTML
src/oauth-provider.ts:91handleAuthCallback 把 URL 查询参数 errorDescription/error 直接传给 renderAuthPage 并拼进返回给 http://127.0.0.1:<port> 的 HTML。无授权流程时存储的 state 为 undefined,形如 /callback?error=x&error_description=<img src=x onerror=...> 的请求可通过 state 比较,在环回源渲染攻击者可控标记;由于该临时页面不含任何机密,影响限于界面伪造。
- low回调 state 与已存 state 均为 undefined 时 state 校验被绕过
src/oauth-provider.ts:513stateValue 只在 state() 中赋值;已有 token 连接成功时不会走授权流程,但环回回调服务器仍在监听,且当前连接仍注册着 finishAuth 交换器。此时不带 state 参数的回调会通过 CSRF 校验。真正阻止授权码注入的只是同样未初始化的 codeVerifierValue 让 finishAuth 抛错,即安全依赖 PKCE 而非 state 校验。
- lowWindows 打开浏览器时把授权 URL 未经引号经 cmd /c start 传入
src/oauth-provider.ts:72cmd.exe 会解析整条命令行,授权 URL 中的 '&'(通常大量存在)会截断命令;若发现元数据中的 authorization_endpoint 带有 shell 元字符加载荷(需控制 MCP 端点或对该 HTTPS 对端做中间人,而该对端本来就能看到令牌),尾部片段可能在 Windows 上被当作命令执行。macOS/Linux 分支把 URL 作为普通 argv 传入,安全。
仅通过 OAuth 接入富途 MCP,令牌存储与 scope 裁剪合理;仅有回调页 HTML 反射、state 校验空值缺口(PKCE 兜底)和 Windows cmd 打开 URL 的小问题,均为低危。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-08-31 · 活跃度:稳定
• 仓库创建: 2026-08-31
• 星标: ★ 0 · 复刻: 0
• 健康度: 稳定 — 近 90 天有提交
来源
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
