漏洞概述 漏洞名称: [security] fix(ohmo): isolate shared-chat sessions by sender #159 漏洞描述: 该漏洞涉及在共享聊天会话中,不同用户之间的会话状态被错误地共享和恢复。具体来说,一个用户可以继承另一个用户的会话状态,或者通过发送新消息来中断另一个用户的正在运行的任务。 漏洞类型: 会话隔离问题 影响范围 影响: 允许同一共享聊天或线程中的其他参与者继承之前的助手状态,并中断由其他人启动的飞行中任务。 严重性: 中等 CVSS评分: 6.5 (CVSS v3.1) 受影响代码: - - 修复方案 修复内容: - 将会话键从仅基于 改为包含 ,即 。 - 确保保存的快照仅针对相同的发送者作用域会话键进行恢复。 - 一个参与者的新消息不再针对同一共享聊天/线程中的另一个参与者的飞行中运行。 - 回归测试现在包括发送者分离的路由行为、重启路径会话键和运行时快照恢复行为。 修复后的行为: - 共享相同聊天/线程的用户不应继承彼此的 ohmo 会话状态,除非他们共享一个房间。 - 共享相同聊天/线程的用户不应能够取消彼此的活跃运行与普通后续消息。 - 预补丁行为允许这种情况,因为发送者身份不是会话边界的一部分。 测试计划: - 使用 运行 和 。 - 使用 检查 和 。 攻击流程 攻击步骤: 1. 使用易受攻击的 OpenHarness 快照。 2. 在允许多个参与者的共享远程频道/聊天中启用 ohmo。 3. 用户 A 发送一条创建会话并留下对话状态或持久化快照的消息。 4. 从同一共享聊天/线程中,用户 B 发送一条正常的后续消息。 5. 观察到网关为两个用户计算相同的会话键,因为它只基于聊天/线程范围。 6. 观察到用户 B 重用/恢复用户 A 的会话状态。 7. 如果用户 A 有飞行中任务,发送一条来自用户 B 的新消息,观察到先前的任务被新消息替换。 安全复现步骤 步骤: 1. 使用易受攻击的 OpenHarness 快照。 2. 在允许多个参与者的共享远程频道/聊天中启用 ohmo。 3. 用户 A 发送一条创建会话并留下对话状态或持久化快照的消息。 4. 从同一共享聊天/线程中,用户 B 发送一条正常的后续消息。 5. 观察到网关为两个用户计算相同的会话键,因为它只基于聊天/线程范围。 6. 观察到用户 B 重用/恢复用户 A 的会话状态。 7. 如果用户 A 有飞行中任务,发送一条来自用户 B 的新消息,观察到先前的任务被新消息替换。 预期易受攻击的行为 行为: - 共享相同聊天/线程的用户不应继承彼此的 ohmo 会话状态,除非他们共享一个房间。 - 共享相同聊天/线程的用户不应能够取消彼此的活跃运行与普通后续消息。 - 预补丁行为允许这种情况,因为发送者身份不是会话边界的一部分。 此 PR 中的更改 更改内容: - 在计算 ohmo 会话键时包含 ,除非提供了显式会话覆盖。 - 在保持线程感知路由的同时,分离同一共享线程中的参与者。 - 添加回归测试,证明同一聊天/线程中的两个发送者接收不同的会话键。 - 添加回归测试,证明运行时恢复不会加载另一个发送者的快照。 - 更新现有的网关重启路径测试以匹配发送者作用域的会话键。 维护者影响 影响: - 补丁有意限制于 ohmo 发送者作用域的路由和测试。 - 频道准入逻辑、插件信任逻辑和远程命令策略未更改。 - 这使得会话所有权模型更容易推理,因为主要边界现在与实际发送者匹配。 修复理由 理由: - 正确的边界不是“每个人在同一个聊天中是一个会话”,而是“每个发送者拥有自己的会话,除非频道明确覆盖此行为”。 - 此修复是狭窄、耐用且与现有 数据对齐的。 - 测试是充分的,因为它们锁定了之前失败的精确所有权边界:路由、恢复和网关命令路径。 变更类型 类型: - 安全修复 - 测试 - 文档更新 - 无行为变化的重构 披露说明 说明: - 此 PR 有意限制于共享 ohmo 聊天和线程中的发送者/会话隔离。 - 它不声称新的远程准入绕过、命令特权绕过或插件执行问题。 - 没有无关的文件被更改。