安装验证:运行验证通过 (L5) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →
功能介绍AI
AI 聚合网关可视化控制台:反代 Google Antigravity 与 OpenAI Codex,支持多账号轮换、额度看板与故障转移。
- AI 聚合网关的可视化控制台
- 反代 Google Antigravity 与 OpenAI Codex
- 多账号轮换池、5小时/周额度看板与故障转移
能力标签为 AI 推断或 README 规则抽取(见角标),词表受限、未经安装验证;AI = 推断,README = 原文关键词。
安装
dsh plugin --profile web add dsh-plugin-ai-gateway安装方式: 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 |
|---|---|---|---|
| 0.2.1 | ✓ | ✗ | ✗ |
0.2.1npm✓ 运行验证通过 1失败 22026-10-19
dsh-plugin-ai-gateway
✓dsh 0.2.1-rc.2当前2026-10-19L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • 被测插件工件: npm · dsh-plugin-ai-gateway@0.2.1
ID: dsh-plugin-ai-gateway@0.2.1@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-plugin-ai-gateway@0.2.1
ID: dsh-plugin-ai-gateway@0.2.1@dsh0.2.1-alpha.4 · 档位: l4-sandbox
签发:2026-10-16 · 有效至:2026-10-23
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✗dsh 0.2.1-alpha.22026-10-15L5 · 失败
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • 被测插件工件: npm · dsh-plugin-ai-gateway@0.2.1
ID: dsh-plugin-ai-gateway@0.2.1@dsh0.2.1-alpha.2 · 档位: l3-fullscan
签发:2026-10-15 · 有效至:2026-10-22
查看检查项与证据
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
仅展示最近 3 个已发布版本;源码快照(commit hash)组、未标注工件组与更早版本不展示——全量档案保留在数据层(插件无任何已发布版本时,快照/未标注组才照常展示)。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/dsh-plugin-ai-gateway/)``[](https://www.dsh.so/artifact/dsh-plugin-ai-gateway/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 中,按「取更严者」→ 总评级 中。
v0.2.1dsh 清单0.2.1npm2026-10-210.2.1版本一致clean · npmvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(11 条)
- 严重shellExec · shell
lib/index.js:60const out = execSync('reg query "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"', { - 严重shellExec · shell
lib/index.js:80const portOut = execSync('powershell -NoProfile -Command "(Get-NetTCPConnection -LocalPort 7890,7891,7892,10808,10809,2080,1080 -State Liste - 警告childProcess · code-exec
lib/index.js:1516child = spawn(cmd, args, { windowsHide: true }); - 警告childProcess · code-exec
lib/index.js:1815child = spawn(config.binPath, ["-config", config.configPath], { - 警告childProcess · code-exec
lib/index.js:1869spawnSync("taskkill", ["/PID", String(pid), "/T", "/F"], { windowsHide: true, stdio: "ignore" }); - 警告netIp · network
lib/index.js:87return `http://127.0.0.1:${portOut}`; - 警告netIp · network
lib/index.js:1245const url = new URL(req.url, "http://127.0.0.1"); - 警告netIp · network
lib/index.js:1432proxyUrl: Schema.string().default("auto").description("出海代理地址(auto 自动对齐系统代理/Clash/v2rayN,可手动填写如 http://127.0.0.1:7890,填 direct 为直连/TUN)"), - 警告netIp · network
tools/gen-config.mjs:34console.log('[gen-config] 下一步 : 启动网关后访问 http://127.0.0.1:' + port + '/v1/models 验证') - 警告spawnShell · shell
tools/install-into-profile.mjs:73const r = spawnSync('dsh', cmd, { stdio: 'inherit', shell: true }) - 警告spawnShell · shell
tools/install-into-profile.mjs:98const dump = spawnSync('dsh', ['--profile', profile, '--dump-config'], { encoding: 'utf8', shell: true })
展开 4 条审计发现
- medium二进制安装接口信任调用方传入的 zip/校验和路径,并对解压结果自动执行
lib/index.jsPOST /binary/install 与 /binary/download 直接采用请求体中的 zipPath、checksumsPath、version。由于期望哈希取自调用方指定的 checksums 文件,SHA-256 校验形同自证:能访问面板并能在磁盘放置 zip+checksums 的攻击者可替换 config.binPath,随后插件自动 spawn(ensureRunning/看门狗/autoStart)即获得以 DSH 用户身份执行代码的能力。version 未做插件别处使用的 /^[0-9][\w.\-]*$/ 校验,经 ASSET_NAME+join 可把写入路径带出 downloadDir;extractZip 直接 `tar -xf`,未防 zip-slip。前提:能到达控制路由(本机绑定,或 allowRemoteControl:true,且通过同源/无 Origin 检查)并能落盘文件。
- medium可选开启的 ZCode 独立反代监听本机、无鉴权且 CORS 全开,并注入本机凭据
lib/index.js当 enableZCode 与 zcodeStandalone 打开时,startZCodeStandaloneServer 在 127.0.0.1:8325 暴露 /v1/chat/completions、/v1/models、/status 且无任何鉴权;调用方若未带可用密钥,处理器会静默使用解密出的本机 ZCode/GLM apiKey 转发。sendJson 对所有响应返回 Access-Control-Allow-Origin: *,OPTIONS 预检放行全部头,因此用户访问的任意网页(或本机任意进程)都能消耗该账号付费额度并读取返回内容,/status 还会泄露密钥首尾字符。同一处理器亦挂在 /ai-gateway/zcode/*,仅靠面板的 isSameOrigin 保护。
- low未鉴权的 GET /provider-plan?revealKey=1 以明文返回网关 API 密钥
lib/index.jsGET 路由不受 POST 路由那条 controlAllowed(本机 / allowRemoteControl)门禁保护;/provider-plan?revealKey=1 返回完整数据面密钥,/plugin-config 以 describe({redactSecrets:false}) 输出。当 DSH 绑定非本机地址时,任何能通过同源检查的客户端(以及本机任意进程)都能读到密钥;因网关只监听 127.0.0.1,实际影响限于密钥泄露与配置探测。
- low上下文面板注入使用 innerHTML 拼接来自 provider/JWT 的字符串
lib/client.jssetupContextMeterQuotaInjection 用 innerHTML 模板字符串写入额度数据。targetAcc.tier 源自本地凭据文件 id_token 的 chatgpt_plan_type(大写化),subscriptionExpiry/countdown 也被渲染;其余面板组件则正确使用 React 文本节点。若账号文件的 JWT 声明携带标签(如 <img onerror=...>),用户打开上下文面板时即在 DSH 源内造成 DOM XSS。需用户登录过恶意/被篡改的账号文件,故为低危。
未发现后门或外传通道;真实风险是安装接口信任调用方传入的 zip/校验和路径,以及可选开启的 ZCode 反代无鉴权且 CORS 全开。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-09-20 · 活跃度:稳定
• 仓库创建: 2026-09-13
• 星标: ★ 0 · 复刻: 0
• 健康度: 稳定 — 近 90 天有提交
来源
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
