Skip to main content

CVE-2021-37579 Apache Dubbo 反序列化安全检查绕过

概述

影响版本

[2.7.0, 2.7.12]、[3.0.0, 3.0.1]

复现分析

这个洞的话,就是 System.setProperty("serialization.security.check", "true"); 的绕过,开启该配置后,就会进入 org.apache.dubbo.remoting.transport.CodecSupport#checkSerialization() 方法。

当 prividerModel 为 null 时,会打印告警日志,程序还是接着往下走,而这个对象通过 org.apache.dubbo.rpc.model.ServiceRepository#lookupExportedServiceWithoutGroup() 获取。

image-20240205172837257

而这个类也很简单,就是看 providersWithoutGroup 是否定义了相应请求的 provider

image-20240205173013934

即使不存在也不影响后续的反序列化。

image-20240205173200540

补丁

补丁改成抛出异常。

image-20240205173458691