本项目的定位是本机/私有环境的非官方网关:它用你自己的 CodeBuddy 账号作上游,在本地暴露一个 OpenAI 兼容接口。这个定位决定了它的安全边界 —— 它不是面向公网的多租户服务。
如果你发现了安全问题,请不要开公开 Issue(那会让所有部署在修复前暴露)。
优先用 GitHub 的私密报告通道:
仓库页 → Security 标签 → Report a vulnerability
如果该入口不可用,可以开一个不含任何细节的 Issue,只写「我想报告一个安全问题,请提供私密联系方式」,维护者会回复你。
报告中请尽量包含:
- 受影响版本(commit hash 或 release tag)
- 复现步骤(最小可复现即可)
- 影响判断:能读到什么 / 能改到什么 / 是否需要本机访问权限
- 如果涉及具体凭据,请先脱敏,不要粘贴真实 token 或账号文件
这是一个个人维护的业余项目,不承诺 SLA。但会尽力:
| 阶段 | 预期 |
|---|---|
| 确认收到 | 7 天内 |
| 初步定性(是否成立、严重程度) | 14 天内 |
| 修复或缓解方案 | 视严重程度,尽量在 30 天内 |
确认成立后会在 CHANGELOG 中记录(不披露利用细节),并按你的意愿致谢。
理解这些取舍能避免误报。以下行为是设计如此:
/ui、/admin/* 会改动账号池、触发上游请求、读到账号昵称与积分,因此设计上只绑本机回环地址访问。远程操作请走 SSH 隧道,不要直接把管理台暴露到公网。
config.json 里的 api_key 是全局唯一密钥,没有多用户、没有权限分级、没有轮换机制。它用于区分「谁能调用这个网关」,不是租户隔离手段。请当成本机口令对待,不要提交到版本库(.gitignore 已排除 config.json)。
账号 token 以 JSON 形式存在 auths/,文件权限依赖运行账户自身。这是本项目「单机自用」定位下的取舍 —— 没有引入额外的加密层或密钥管理服务。请确保:
auths/不进版本库(已在.gitignore中)- 宿主机/账号本身可信
- 备份
auths/时按敏感数据处理
项目访问的 /v2/* 等端点是 CodeBuddy 官方客户端使用的接口,没有公开文档。相关稳定性与授权见 README 的「安全与合规」一节。上游接口行为变化不属于本项目漏洞。
落盘日志只记录模型、状态码、耗时、token 计数等元信息,不记录 Authorization 头与请求体正文。如果发现日志中出现凭据,那是漏洞,请按上面的流程报告。
对外暴露前(哪怕只是局域网)请自行确认:
-
api_key已改成强随机串,且没有用默认/示例值 - 管理台(
/ui、/admin/*)未直接暴露到公网 -
config.json、auths/、data/未被提交或打包进镜像 - 若启用 Upstash Redis,其 token 同样按敏感凭据管理
- 了解并接受:使用上游账号做网关存在账号封禁与条款风险(见 README 免责声明)