【安全漏洞通告】EDAS客户机中Dubbo应用CVE-2020-11995安全漏洞通告及解决方案

大多数Dubbo用户使用Hessian2作为默认的序列化/反序列化协议,在Dubbo 2.7.7及之前版本存在一个反序列化安全漏洞,会造成远程代码执行(RCE),请Dubbo用户尽快升级版本至2.7.8或2.6.9版本。

漏洞等级

中危

影响版本

  • Dubbo 2.7.0 ~ 2.7.7

  • Dubbo 2.6.0 ~ 2.6.8

  • Dubbo 2.5.x(官方团队已不再维护和更新)

漏洞详情

当Dubbo用户使用Hessaian2反序列化HashMap对象时,一些存储在HashMap中的类的函数在一系列程序调用后被执行,这些特殊函数可能会导致远程代码执行(RCE)。例如,rome-1.7.0.jar中EqualsBean类的hashCode()函数会导致构建一个远程加载恶意类并执行恶意代码的恶意请求。

修复建议

检查Dubbo应用中是否使用到了rome、quercus等(查看上面两个Github项目中的gadgets)第三方包,如果用到上述第三方包,请升级com.rometools:rome到1.7.0或以上版本,或升级com.caucho:quercus到4.0.45或以上版本。

重要

请先在测试环境测试业务功能正常后,再在生产环境升级。

  • JDK升级到7u201+或8u191+版本(只要在近1年有过部署的应用,EDAS在每次应用部署时都会自动更新JDK的版本。如果是jdk-8u191以下的版本,请修改以下两个JVM属性参数:com.sun.jndi.ldap.object.trustURLCodebase=false和com.sun.jndi.rmi.object.trustURLCodebase=false)。

  • 检查Dubbo应用所使用到的ECS或者Pod对应的Node的安全组,不要添加向公网开放20880的服务端口的规则。该端口默认未开放,公网默认无法连接到此端口,如果业务实际有需要,请对20880服务端口的源IP、IP段和安全组进行严格的审查,以免出现不安全的连接,禁止使用0.0.0.0/0的授权对象。

  • 请Dubbo用户尽快升级版本至2.7.8或2.6.9版本。

重要

请先在测试环境升级Dubbo版本至2.7.8或2.6.9版本,测试应用功能,务必保证在测试环境测试验证业务功能正常后,再在生产环境升级。