[security] fix(ohmo): secure default remote channel allowlists #147 漏洞概述 该漏洞涉及 项目中远程通道(remote channel)的默认访问控制策略。 问题核心:在修复前,新启用的远程通道默认配置为 (即允许所有来源访问)。 配置向导缺陷:交互式配置向导(wizard)在默认情况下也静默允许所有访问,除非操作员手动更改。 空列表处理错误:当操作员尝试设置空列表( )以拒绝所有访问时,系统将其视为致命配置错误并导致启动中止,而不是将其视为有效的“拒绝所有”安全策略。 影响范围 严重性:High (CVSS v3.1 8.1) 攻击向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 后果: - 任何可到达配置通道的远程发送者(arbitrary remote senders)都可以访问主机后端代理(host-backed agent)。 - 由于 OpenHarness 默认允许只读工具,未经授权的数据访问可能导致文件披露和其他后端只读访问。 - 攻击者可以在未进行额外管理员命令绕过(command bypass)的情况下利用此漏洞。 修复方案 1. 默认策略变更:新通道配置默认为“拒绝所有”(deny-all),直到操作员显式添加允许的标识符或故意选择开放。 2. 配置向导更新:ohmo CLI 配置向导现在要求操作员显式选择:特定标识符、空白(拒绝所有)或 (开放访问)。 3. 空列表处理:空 allowlist 现在被视为有效的安全默认配置(deny-all),并在启动时产生警告而非中止。 4. 代码变更: - :将 默认值从 更改为空列表 。 - :接受空 allowlist 作为安全默认状态,而不是中止启动。 - :更新向导提示和默认值,支持显式选择。 POC / 利用代码 页面中提供了修复前后的配置代码示例,展示了漏洞利用的前提条件(默认允许所有)和修复后的安全配置: 修复前(默认不安全配置): (注:根据描述,修复前默认是 ,上述代码块在截图中被标记为 "Secure default example",暗示这是修复后或手动配置后的状态。但在 "Before this PR" 部分提到默认是 。) 修复后(显式开放配置): 修复后(安全默认/拒绝所有配置): 攻击流描述(非代码,但描述了利用路径):