Basecamp | 报告 #3329310 - 机器人身份验证不当导致在房间发送消息时可冒充任何用户
漏洞描述
机器人被允许在房间中发送消息,但需要bot密钥进行身份验证。
bot密钥身份验证函数如下:
|
|
漏洞分析
问题是如果bot_key没有右侧部分(例如:1-),bot_token将为nil,查询将匹配任何bot_id匹配有效ID的User记录。
ID是递增的,如Rails控制台所示,因此可以轻松猜测。它们在某些URL中也可见。
|
|
攻击复现
以下请求展示了该问题,它允许未经身份验证的用户冒充其他用户(此处为ID 2)并以他们的名义发布消息:
|
|
附件图片显示消息已成功发布,并且显示来自"test"用户。
影响
未经身份验证的用户可以在被冒充用户有权访问的房间中,以任何用户身份发送任意消息。
时间线
- 2025年9月6日 - stackered向Basecamp提交报告
- 2025年9月9日 - jacopo-beschi确认报告有效性
- 2025年9月10日 - Basecamp向stackered奖励2000美元赏金
- 2025年9月10日 - 在1.1.8版本中发布修复
- 2025年9月11日 - stackered确认无法复现该问题
- 2025年9月11日 - 报告状态更改为已解决
- 2025年11月21日 - 报告被公开披露
技术详情
- 报告ID: #3329310
- 状态: 已解决
- 严重程度: 高(7 ~ 8.9)
- 弱点: 不当身份验证 - 通用
- CVE ID: 无
- 赏金: 2000美元