CVE-2021-47935Sentry 8.2.0版本中存在严重的远程代码执行漏洞。由于系统对审计日志数据处理不当,经过身份认证的超级用户可以通过注入恶意的pickle序列化对象来执行任意命令。攻击者只需发送包含Base64编码压缩pickle载荷的POST请求,即可在服务器端以应用程序权限执行代码,完全控制受影响系统。
该漏洞的核心原理在于不安全的反序列化操作。Sentry在处理管理员审计日志的`data`参数时,直接使用了Python的`pickle`模块对数据进行反序列化,而未对数据来源进行严格的安全校验。Pickle模块在反序列化过程中允许执行任意Python代码,攻击者利用这一特性,通过定义类中的`__reduce__`方法来指定要执行的命令(如反弹Shell)。攻击者首先需要获取superuser权限,然后构造恶意对象,将其进行zlib压缩和Base64编码,最后通过向审计日志API端点发送POST请求触发漏洞。服务器在解析请求时会自动解码、解压并反序列化数据,从而执行攻击者的恶意代码。