Skip to content

Security: Practice019/workbuddy2api

Security

SECURITY.md

安全策略

本项目的定位是本机/私有环境的非官方网关:它用你自己的 CodeBuddy 账号作上游,在本地暴露一个 OpenAI 兼容接口。这个定位决定了它的安全边界 —— 它不是面向公网的多租户服务。

报告漏洞

如果你发现了安全问题,请不要开公开 Issue(那会让所有部署在修复前暴露)。

优先用 GitHub 的私密报告通道:

仓库页 → Security 标签 → Report a vulnerability

如果该入口不可用,可以开一个不含任何细节的 Issue,只写「我想报告一个安全问题,请提供私密联系方式」,维护者会回复你。

报告中请尽量包含:

  • 受影响版本(commit hash 或 release tag)
  • 复现步骤(最小可复现即可)
  • 影响判断:能读到什么 / 能改到什么 / 是否需要本机访问权限
  • 如果涉及具体凭据,请先脱敏,不要粘贴真实 token 或账号文件

处理预期

这是一个个人维护的业余项目,不承诺 SLA。但会尽力:

阶段 预期
确认收到 7 天内
初步定性(是否成立、严重程度) 14 天内
修复或缓解方案 视严重程度,尽量在 30 天内

确认成立后会在 CHANGELOG 中记录(不披露利用细节),并按你的意愿致谢。

设计上的安全边界(不是漏洞,是刻意取舍)

理解这些取舍能避免误报。以下行为是设计如此

1. 管理台默认只监听本机

/ui/admin/* 会改动账号池、触发上游请求、读到账号昵称与积分,因此设计上只绑本机回环地址访问。远程操作请走 SSH 隧道,不要直接把管理台暴露到公网。

2. API Key 是单一静态密钥

config.json 里的 api_key 是全局唯一密钥,没有多用户、没有权限分级、没有轮换机制。它用于区分「谁能调用这个网关」,不是租户隔离手段。请当成本机口令对待,不要提交到版本库(.gitignore 已排除 config.json)。

3. 凭据以明文落盘在 auths/

账号 token 以 JSON 形式存在 auths/,文件权限依赖运行账户自身。这是本项目「单机自用」定位下的取舍 —— 没有引入额外的加密层或密钥管理服务。请确保:

  • auths/ 不进版本库(已在 .gitignore 中)
  • 宿主机/账号本身可信
  • 备份 auths/ 时按敏感数据处理

4. 上游接口是非公开/逆向接口

项目访问的 /v2/* 等端点是 CodeBuddy 官方客户端使用的接口,没有公开文档。相关稳定性与授权见 README 的「安全与合规」一节。上游接口行为变化不属于本项目漏洞。

5. 请求日志不含凭据明文

落盘日志只记录模型、状态码、耗时、token 计数等元信息,不记录 Authorization 头与请求体正文。如果发现日志中出现凭据,那漏洞,请按上面的流程报告。

部署检查清单

对外暴露前(哪怕只是局域网)请自行确认:

  • api_key 已改成强随机串,且没有用默认/示例值
  • 管理台(/ui/admin/*)未直接暴露到公网
  • config.jsonauths/data/ 未被提交或打包进镜像
  • 若启用 Upstash Redis,其 token 同样按敏感凭据管理
  • 了解并接受:使用上游账号做网关存在账号封禁与条款风险(见 README 免责声明)

There aren't any published security advisories