Skip to content

Security

KS-OTO edited this page Sep 21, 2026 · 1 revision

安全模型

权威版本是仓库里的 SECURITY.md —— 响应时限、支持范围、报告模板都在那里。本页解释为什么这样设计。

报告漏洞

不要通过公开 issue、PR、讨论区或社交媒体报告安全问题。走 GitHub 的私密渠道:

Security → Advisories → Report a vulnerability

报告里请包含受影响版本(git rev-parse HEAD)与部署方式、复现步骤、影响面。 不要在报告里粘贴真实凭据 —— 用 sk-xxxx / AKLTxxxx 这类占位值即可, 我们看字段名和结构就够了。

阶段 目标
确认收到 72 小时内
初步评估与定级 7 天内给出「是否成立 / 严重级别 / 计划修复时间点」
修复与修复版本 视严重级别,凭据泄漏类优先
公开致谢 修复发布后,除非你选择匿名

这是一个业余时间维护的项目,没有 SLO 承诺;但凭据相关的报告会被立刻处理。


边界:这个项目是什么

它是一个「你自己部署、自己用」的服务端聚合器。

前端是纯静态页面,所有第三方凭据只存在于服务端环境变量里,从不下发到浏览器。 服务端按需调用各平台 API,把结果整理成 JSON 返回。页面只渲染掩码。

理解这条边界,才能判断什么是漏洞、什么不是。

属于安全漏洞(欢迎报告)

  • 服务端把凭据、Cookie、Token 回显到 /api/* 的响应体、错误信息、日志或前端产物里;
  • 任意用户可通过构造请求读取其他 provider 的数据,或触发 SSRF / 越权上游调用;
  • 注入类缺陷(XSS / 模板注入 / 命令注入),尤其是能在卡片或弹窗里执行脚本的;
  • 依赖链上可实际利用的远程代码执行 / 原型污染;
  • 绕过 zod 边界校验造成的服务端崩溃或类型逃逸(拒绝服务类)。

不属于本项目的漏洞

情况 归属
你把 .env、.dev.vars 或凭据提交进了自己的 fork 你自己的仓库 —— 请立刻吊销并清理历史
上游平台(DeepSeek / 火山 / 智谱 / 阿里云 / 模力方舟 / 百度 / OpenRouter)自身缺陷 对应平台的安全渠道
反向代理、CDN、TLS 配置不当 部署方
你把自己的站点公开部署且不加访问控制,任何人打开都能看到你的用量 设计如此 —— 见下
某人「猜到了」你的站点地址并在浏览器里看到余额 同上,请给站点加访问控制或反代鉴权

⚠️ 本项目没有任何内建的用户体系与访问控制。 部署到公网后,任何知道地址的人都能 看到你所有账号的余额与用量。生产使用时请在反向代理层加认证(Cloudflare Access / Basic Auth / IP 白名单),或只在内网部署。

最小权限建议

不要在服务端填主账号密钥:

平台 建议
火山方舟 IAM 子用户,仅授予方舟相关权限
阿里云 RAM 子用户;组织/座席区块需 AliyunTokenPlanReadOnlyAccess,资源包需 BSS 只读
百度千帆 子账号 + QianfanServiceReadAccessPolicy 只读
百炼个人版 会话 Cookie 即可,无需任何 RAM 授权

本仓库自身的凭据纪律

本仓库是公开的,因此:

  • .env、.dev.vars、.edgeone/ 已在 .gitignore 中排除,且被 .semgrepignore 排除在扫描之外;
  • 只有 .env.example / .dev.vars.example 两份模板入库,其中的所有值都是占位值;
  • 测试夹具(*.test.ts)中的账号 id、命名空间、代金券码一律是编造的占位值;
  • 提交前请自查:git diff --cached 里不应出现任何形如真实 Key / Cookie / 站点域名的字符串。

如果你在本仓库的任何位置(包括历史提交里)发现真实凭据,请按上面的私密渠道报告 —— 历史泄漏同样会按凭据泄漏处理。

本项目历史上有过一次真实的凭据误提交,已用 git filter-repo 重写全部历史清除。 重写的代价极高(所有 SHA 变更、已关闭 issue 里的引用失效、需要通知所有协作者重新克隆), 所以现在把这条纪律写在最前面。

Clone this wiki locally