Basecamp | 报告 #3329310 - 机器人认证不当导致在房间内发送消息时可冒充任何用户
漏洞概述
机器人被允许在房间内发送消息,但需要通过bot_key进行身份验证。其认证函数如下:
|
|
问题的关键在于,如果bot_key没有右侧部分(例如1-),bot_token的值将为nil。此时,如果bot_id匹配到一个有效的用户ID,查询将成功匹配到一个用户(User)记录,而非预期的机器人(Bot)记录。
漏洞详情
用户ID是递增的,正如在Rails控制台中可以看到的那样,因此它们很容易被猜测。这些ID在某些URL中也可见。
|
|
以下请求展示了此问题,它允许一个未经验证的用户冒充另一个用户(此处ID为2)并以该用户的身份发布消息:
|
|
附带的图片显示消息被成功发布,并且看起来来自“test”用户。
影响
未经身份验证的用户可以冒充任何用户,在被冒充用户有权访问的房间内发送任意消息。
处理时间线
- 2025年9月6日,下午3:24 (UTC):黑客
stackered向Basecamp提交报告。 - 2025年9月9日,下午4:08 (UTC):项目成员
jacopo-beschi确认报告的有效性。 - 2025年9月10日,上午8:43 (UTC):Basecamp向
stackered奖励2000美元赏金。团队决定为现有的Campfire报告提供赏金,但今后不再为该资产提供赏金。 - 2025年9月10日,上午8:44 (UTC):
jacopo-beschi告知已在版本1.1.8中发布了修复程序,并要求验证。 - 2025年9月11日,上午11:23 (UTC):
stackered确认修复后无法复现该问题。 - 2025年9月11日,下午12:06 (UTC):
jacopo-beschi将报告状态更改为“已解决”。 - 约9天前:报告被同意公开披露。
报告信息
| 项目 | 内容 |
|---|---|
| 报告ID | #3329310 |
| 报告者 | stackered |
| 报告目标 | Basecamp |
| 状态 | 已解决 |
| 严重程度 | 高 (7 ~ 8.9) |
| 披露日期 | 2025年11月21日,下午7:39 (UTC) |
| 弱点类型 | 不当身份验证 - 通用 |
| CVE ID | 无 |
| 赏金 | $2,000 |