Apache Dubbo包含了一个可远程利用的漏洞。Hessian2协议反序列化漏洞,攻击者以篡改协议的方式绕过反序列化黑/白名单。

漏洞描述

在Apache Dubbo的默认通信方式中,Dubbo会在传输报文中使用serialization id来传递数据体使用的序列化协议方式。在Dubbo 2.7.8或2.6.9以前的版本中,攻击者可以构造自己需要的serialization id,并发送给服务端,而服务端会无条件使用该serialization id进行反序列化。这意味着可能存在Kryo、 FST或者 native-java等安全性较差的序列化方式,攻击者可以利用此漏洞发起攻击。

例如,native-hessian与hessian2类似,但不支持黑/白名单,因此即使开发人员为hessian2设置了黑/白名单,攻击者仍然可以将协议更改为native-hessian并规避它。

漏洞评级

影响范围

  • 使用Dubbo 2.5.x版本的所有用户。
  • 使用Dubbo 2.6.10之前版本的所有用户。
  • 使用Dubbo 2.7.10之前版本的所有用户。

安全建议

请根据您使用的Dubbo版本,升级到指定版本,并开启强校验。

  1. 升级Dubbo版本。
    • 使用Dubbo 2.5.x的用户,请升级到Dubbo 2.6.10.1或Dubbo 2.7.12。
    • 使用Dubbo 2.6.x的用户,请升级到Dubbo 2.6.10.1或Dubbo 2.7.12。
    • 使用Dubbo 2.7.x的用户,请升级到Dubbo 2.7.12。
  2. 配置环境变量serialization.security.check=true,开启强校验。
    说明 如果集群规模较大,未能升级所有节点,开启强校验后,和Dubbo 2.7.8及之前版本多序列化协议互通时可能存在兼容问题,需要评估是否开启强校验。