报告 #3329310 - 不当的机器人身份验证允许在房间发送消息时冒充任何用户
时间线
- 已通过身份验证的黑客
stackered向 Basecamp 提交了一份报告。 - 2025年9月6日,下午3:24 (UTC)
漏洞详情
机器人被允许在房间内发送消息,但需要使用机器人密钥进行身份验证。机器人密钥认证函数如下:
|
|
问题的关键在于:如果 bot_key 没有右侧部分(例如:1-),bot_token 将变为 nil,此时查询会匹配一个 User 记录(只要 bot_id 匹配一个有效的用户ID)。
用户ID是递增的,这可以从 Rails 控制台看到,因此很容易被猜测。这些ID在某些URL中也是可见的。
|
|
以下请求示例凸显了此问题,它允许一个未经身份验证的用户冒充另一个用户(此处使用ID 2)并以该用户的名义发布消息:
|
|
附带的图片显示,消息已成功发布,并且看起来来自“test”用户。
影响 未经身份验证的用户可以冒充任何用户发送任意消息到被冒充用户有权访问的房间。
后续处理
jacopo-beschi在 2025年9月9日 下午4:08 (UTC) 确认了报告的有效性。jacopo-beschi多次调整了漏洞严重性评级。jacopo-beschi于 2025年9月10日 上午7:18 (UTC) 更新说明:由于Campfire项目现已开源,将不再提供漏洞赏金,但会处理现有报告。- Basecamp 向
stackered支付了 2000 美元的赏金。 (2025年9月10日 上午8:43 UTC) jacopo-beschi通知在 1.1.8 版本中已发布修复,并请求验证。stackered确认在补丁发布后无法再复现该问题。- 报告于 2025年9月11日 下午12:06 (UTC) 被标记为“已解决”。
stackered请求公开报告,jeremy(Basecamp员工) 同意,报告于 2025年11月21日 下午7:39 (UTC) 被公开。
报告摘要
- 报告ID: #3329310
- 状态: 已解决
- 严重性: 高 (7 ~ 8.9)
- 披露日期: 2025年11月21日,下午7:39 UTC
- 弱点类型: 不当的身份验证 - 通用
- CVE ID: 无
- 赏金: $2,000