Bao 是一个 Rust-native 浏览器运行时(alpha 阶段),安全加固仍在持续进行中。本文档说明如何负责任地报告安全漏洞。
诚实声明:Bao 当前版本为
0.1.0-alpha,尚未达到生产可用状态。已知安全面(尤其 CDP Server 默认监听、反指纹引擎边界、Node.js/Bun 兼容层与 Web API 共享 JSContext 的互操作)仍在加固。我们欢迎安全研究,但请不要将其视为已经 harden 的生产软件。
| Version | Supported | Notes |
|---|---|---|
0.1.0-alpha |
✅ 安全修复 | 当前唯一发布版本 |
< 0.1.0 (pre-alpha / dev branch) |
❌ 不接受 | 临时开发分支,请用 tagged release 复现 |
alpha 阶段我们不会为旧版本回port修复——升级到最新 tagged release 即可获得所有安全补丁。
请勿通过公开 GitHub Issue 报告安全漏洞。 公开 issue 会让漏洞在修复前暴露,危害所有用户。
使用 GitHub Private Security Advisory(私密安全公告):
- 前往 https://github.com/putao520/bao/security/advisories/new
- 点击 "Report a vulnerability"
- 填写:
- 漏洞标题(简短描述,例如 "CDP Server 默认监听 0.0.0.0 导致远程代码执行")
- 影响版本(确认在最新 tagged release 上可复现)
- 严重度自评(参考下方"范围"和 CVSS 量表)
- 复现步骤(可运行的 PoC 最理想;最小复现脚本/命令)
- 影响面(攻击者能做什么?需要什么前置条件?本地 / 同网段 / 远程?)
- 建议的修复方向(可选,但欢迎)
越完整的报告越快得到响应。至少包含:
- 受影响的组件(
bao_engine/bao_browser/bao_cdp/bao_stealth/bao_runtime/bao_uloop/ 其他) - 操作系统 + 架构(
uname -a的输出,Rust 项目跨平台行为差异大) - Bao 版本(
bao --version或 git commit hash) bao doctor的输出(如果可运行)- 是否启用 CDP Server(
--cdp-port参数) - Stealth 配置 profile(如果涉及反指纹泄露)
| 阶段 | 承诺时间 | 说明 |
|---|---|---|
| 确认收到报告 | 48 小时内 | 维护者确认收到,指派处理人 |
| 初步评估 | 7 天内 | 给出严重度评级(Critical / High / Medium / Low)与是否接受为安全问题 |
| 修复 ETA | 视严重度 | Critical 7 天 / High 30 天 / Medium 60 天 / Low 下个 release |
| 修复发布 + 致谢 | 修复后 7 天内 | 发布 patch release,在 release notes 致谢报告人(除非报告人要求匿名) |
alpha 阶段维护者精力有限,Critical/High 优先。如约定 ETA 无法达成,我们会在 advisory 内同步进展,不会静默失联。
以下类别属于安全漏洞,请走私密报告渠道:
- CDP 鉴权绕过 / 未授权访问 — CDP Server 默认监听
127.0.0.1:9222,若可被远程连接、target 越权或缺失鉴权则属于安全问题 - 反指纹(Stealth)泄露 —
bao_stealth未能覆盖的指纹向量(TLS JA3/JA4 / HTTP2 AKAMAI / Canvas / WebGL / Audio / Navigator / Behavior),导致用户被追踪 - 远程代码执行(RCE) — 任何能让攻击者在宿主机执行任意命令的漏洞(渲染引擎 / SpiderMonkey / FFI 桥接 / Bun API 兼容层)
- 沙箱逃逸 — Web content 逃出 servo 沙箱访问文件系统 / 网络 / 子进程
- Node.js / Bun 兼容层权限越界 —
bun_runtime的fs/http/crypto/sqlite/ffiAPI 被绕过访问到不该访问的资源 - 加密实现错误 —
bao_crypto/bao_boringssl_bridge中的密钥处理、随机数、TLS 配置错误 - 内存安全 bug —
unsafe块导致的 use-after-free / buffer overflow / SIGSEGV(需能被外部输入触发)
- 普通功能性 bug(渲染异常 / API 行为不符合 spec / 性能问题)
- 编译警告 / 文档错别字 / 依赖版本陈旧
- 未被外部输入触发的 panic(纯内部状态机错误)
- "理论上的"问题,无法给出复现路径
- 已经在公开渠道讨论过 / 已知限制
如果你拿不准是安全问题还是普通 bug,优先走私密报告让维护者评估。
- ❌ 未经授权对任何公开部署的 Bao 实例进行测试。Bao 目前没有官方公开实例,但如果你发现了某个第三方部署,不要对其测试,即使是为了"验证漏洞"——请直接报告给该部署的运营者,或向本项目报告设计层面的缺陷。
- ❌ DoS / 大规模 fuzzing 公开服务。本地 fuzzing 欢迎并鼓励,但对任何非你自己的实例进行 DoS 测试都是禁止的。
- ❌ 社工 / 钓鱼项目维护者以获取信息或访问权限。
- ❌ 公开发布未修复漏洞的 PoC(在协调披露窗口期内)。
- ✅ 在你自己的本地构建上测试 / fuzz / 逆向
- ✅ 对
bao run起的本地实例做任何测试 - ✅ 研究 servo / SpiderMonkey / boringssl 上游的已知 CVE 是否影响 Bao
安全报告者会在漏洞修复后的 release notes 中得到致谢(除非要求匿名)。Bao 暂无 bug bounty 奖金,但你的贡献会被公开记录。
- 私密报告:GitHub Private Security Advisory(https://github.com/putao520/bao/security/advisories/new)— 首选
- 公开问题(非漏洞):GitHub Issues(https://github.com/putao520/bao/issues)
感谢帮助 Bao 变得更安全。