Sentry 泄露应用程序集成客户端机密CVE-2024-53253
Sentry是一个实时的事件日志和聚合平台,基于Django构建,用于自动记录Python程序的所有exception,在一个好用的UI上呈现和搜索。
Sentry本质上是服务器端应用程序,接收客户端(如Web应用程序、移动应用程序或后端服务)的错误日志,对日志聚合、分析和可视化。
一、基本情况
Sentry是一款错误跟踪和性能监控平台,处理 exception 是每个程序的必要部分,因此来说 Sentry 也几乎可以说是所有项目的必备组件。
Sentry提供了详细的错误报告,包括堆栈跟踪、发生错误的上下文(如用户信息、设备信息、环境变量等),以及错误发生的频率和趋势。
栋科技漏洞库关注到Sentry 24.11.0版本存在一个漏洞,因不当错误处理泄露致应用程序集成客户端机密漏洞,追踪为CVE-2024-53253。
二、漏洞分析
CVE-2024-53253仅存在于 Sentry 24.11.0 版本中,Sentry平台生成的特定错误信息可能包含应用程序集成的明文Client ID和Client Secret。
这些错误信息不会显示在用户界面上,但会返回给最终用户的底层HTTP响应中,可能导致Client Secret暴露,攻击者可获取ID和Secret。
这种情况可能发生在以下条件下:
应用程序安装使用带有`async`标志设置为true(默认为true)的Search UI组件;
用户输入搜索组件中的内容,从而创建对第三方的搜索或查询结果的请求;
第三方响应可能无法通过验证,Sentry将返回带有集成Client Secret的序列化版本的`select-requester.invalid-response`错误代码。
对于常规用户来说很难观测到此种错误,这些错误信息被返回到最终用户底层HTTP响应中,尽管如此也可能导致集成Client Secret暴露。
当然,仅凭明文Client ID和Client Secret不足以允许攻击者直接访问任何数据,攻击者要滥用该秘密还需获取有效Sentry应用程序API令牌。
对Sentry SaaS用户而言,因仅有一个应用程序集成受影响且其拥有者已更换Client Secret,没有滥用泄露情况,因此无需采取任何行动。
对Sentry自托管用户而言,其不包含任何应用程序集成,可能只影响维护自己的集成自托管用户,已提供修复方案(pull request 81038)。
这种情况下,可以搜索`select-requester.invalid-response`事件确定漏洞影响,但需要注意的是,此漏洞还与本咨询无关的其他事件共享。
当然,Sentry自托管用户还需审查每个命名事件的记录参数,可以通过查看`select_requester.py`进行,以了解这些错误可能发生的实例。
随着安全修复程序的应用,这已经不再是一个共享的事件类型,因此自托管用户不应当安装版本24.11.0,而应等待官方更新下一个版本。
而对于已经运行受影响版本的自托管实例,则可以显考虑降级到版本24.10.0。
三、影响范围
Sentry 24.11.0
四、修复建议
建议更新当前系统或软件至最新版,完成漏洞的修复。
五、参考链接
https://github.com/getsentry/sentry/pull/79377
https://github.com/getsentry/sentry/pull/81038
https://github.com/getsentry/sentry/security/advisories/GHSA-v5h2-q2w4-gpcx