Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 4.18 KB

SECURITY.md

File metadata and controls

46 lines (33 loc) · 4.18 KB

安全政策

私密报告漏洞

请使用 GitHub 的 Private vulnerability reporting 提交安全问题。 不要在公开 issue、PR、讨论或日志中发布凭据、可复用认证材料、真实请求/响应或账号数据。

报告应包含受影响的提交/版本、部署方式、影响范围、复现步骤与合成最小样例;必要日志请先人工脱敏。 不要为了复现而提交真实 PAT、token、SK、user、machine_id、模型缓存或抓包,即使报告渠道是私密的。 若凭据已公开,应先通过对应服务撤销或轮换,再处理仓库内容;删除最新文件不能清除历史副本。

当前安全范围

安全评估对象是当前开发源码和由其构建的原生 Go 服务,协议目标为 Qoder CLI 1.1.74 的认证、模型缓存与 legacy HTTP/SSE 路径。 不是官方 CLI 的完整替代品,也不保证所有上游功能、客户端版本或历史版本兼容。 1.1.34 fixtures 与性能报告是历史证据,不代表该版本仍获独立安全维护;1.1.74 的真实 global/CN 账号验收尚未进行。 外部服务和操作者提供的 oracle 不属于本项目发布的软件,授权边界见 NOTICE。

部署信任边界

  • 单账号、共享密钥:QODER2API_SK 是客户端密钥,不是 Qoder PAT。持有它的客户端共享上游账号能力;服务没有多租户账号隔离、配额或计费系统。
  • 默认值需要收紧:默认 :8377 监听所有接口,空 SK 会关闭客户端鉴权并在日志提示。建议显式绑定 127.0.0.1:8377 并使用强随机密钥。
  • 明文监听:内置监听器使用 HTTP,不提供 TLS。跨主机访问必须在外部反向代理、VPN 等边界提供 TLS 与访问控制,不能把 SK 当成传输加密。
  • 健康检查公开:/health 不要求鉴权,只报告进程内认证状态,不验证订阅、token 有效性或上游健康;外部边界也应限制它。
  • 目录与主机权限:凭据加密是官方 CLI 的格式兼容机制,不防御同时拥有 user 和 machine_id 的人。保护完整目录、备份、环境变量与运行账号;不把认证目录挂载给不可信容器或用户。
  • 可信运维配置:端点、auth-dir、catalog 和 dump 路径只能由可信操作者设置,不应接受不可信客户端输入。
  • 日志与输入输出:debug 日志和失败请求 dump 可能含提示词、工具数据或上游错误。默认不启用 dump;启用后使用私有目录、限制保留期并在分享前脱敏。

凭据刷新与共享存储

持久化模式会使用所选 auth-dir,并可能自动刷新、原子替换 user、创建事务标记及区域绑定。 环境 PAT 服务模式不写认证存储;显式 -login / -login-pat 则是持久化操作,不应混淆。 程序会检查区域、机器身份和凭据 revision 冲突,但这些检查不构成对不可信本地写入者的完整隔离。

官方兼容的 .credential-transaction.lock 是 advisory lease(协作式租约),不是内核级 fencing。 inode/mtime 检查与后续按路径删除、替换之间存在 TOCTOU 窗口;多个进程同时恢复陈旧锁时尤其如此。 即使检测到失去所有权并停止后续发布,也无法撤回已发出的 token 刷新请求。不要把额外一次 stat 或原子 rename 当成跨进程事务保证。

需要强隔离时,应在独立 auth-dir 中重新登录,建立新会话,不要复制同一份会轮换的 refresh token 并发运行。 不要同时手动清理多个进程共用的锁。更多行为与边界见 OAuth 文档 和 共享存储分析。

测试与分析工具

普通测试只使用合成输入;真实 E2E 必须经账号持有人明确授权,可能计费,refresh gate 还会写入原始凭据。 请勿在公开 CI 或不可信 PR 中配置真实账号。具体 gate 和只读源目录规则见 开发指南。 可选 WASM oracle 必须来自操作者有权持有和执行的外部文件,不能提交到仓库,也不进入生产依赖图。