# [security] fix(commands): keep bridge local-only by default #208 ## 漏洞概述 此 PR 修复了 OpenHarness 中 `/bridge` 命令的安全隐患。该命令允许通过 `/bridge spawn CMD` 启动 shell 会话,但由于其默认配置为 `remote_invocable=True`(允许远程调用),导致攻击者可以通过受信任的远程渠道(Remote Channel/Gateway)发送任意命令,从而在 OpenHarness 进程上下文中执行系统命令。 ## 影响范围 * **严重性**: High (CVSS v3.1 8.8) * **攻击向量**: 攻击者需要是一个被配置的远程渠道/网关发送者(Accepted remote channel/gateway sender)。 * **影响**: 攻击者可以执行任意 OS 命令,导致本地文件泄露、凭证泄露、工作区状态篡改或启动长时间运行的进程。 ## 修复方案 1. **修改注册行为**: 将 `/bridge` 命令的注册参数从 `remote_invocable=True` 改为 `remote_invocable=False`,使其默认仅本地可用。 2. **保留管理员权限**: 标记为 `remote_admin_opt_in=True`,允许受信任的部署通过显式配置重新开启远程管理功能。 3. **增加拦截逻辑**: 在网关层增加逻辑,在命令处理器运行前拒绝远程发送的 `/bridge spawn` 消息。 ## POC 代码 / 利用代码 **利用步骤 (Safe reproduction steps):** ```bash # 1. 发送 bridge spawn 命令 /bridge spawn id: pwd # 2. 观察网关接受命令并报告已生成的 bridge 会话 # 3. 通过 bridge 输出路径检索输出 /bridge list /bridge output ``` **验证代码 (Local validation harness):** ```python # origin/main at 380bab4 REMOTE_INVOCABLE True REMOTE_ADMIN_OPT_IN False FINAL Spawned bridge session bridge-... pid=... BRIDGE_SESSIONS 1 MARKER_EXISTS True MARKER_CONTENT REMOTE_BRIDGE_EXEC # this PR branch REMOTE_INVOCABLE False REMOTE_ADMIN_OPT_IN True FINAL /bridge is only available in the local OpenHarness UI. BRIDGE_SESSIONS 0 MARKER_EXISTS False ```