-
Notifications
You must be signed in to change notification settings - Fork 1
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 里的引用失效、需要通知所有协作者重新克隆), 所以现在把这条纪律写在最前面。