欢迎user
威胁预警团队
2021/6/24
Apache Dubbo 是阿里巴巴公司开源的一款高性能、轻量级Java RPC分布式服务框架,可为企业应用提供高性能和透明化的RPC远程服务调用方案,是国内使用最广泛的开源服务框架之一。近日,新华三攻防实验室威胁预警团队监测到网络上公开了多个Apache Dubbo远程代码执行漏洞(CVE-2021-25641、CVE-2021-30179、CVE-2021-30180、CVE-2021-30181、CVE-2021-32824),并进行了跟踪和分析。
目前该漏洞部分利用细节已在互联网公开,建议受影响用户及时排查并修复。
1、 CVE-2021-25641:远程代码执行漏洞
大部分Dubbo用户采用Hessian2作为默认的序列化/反序列化协议,其会对反序列化ID进行检查是否在服务器允许范围内,只支持允许的反序列化类型。但其余反序列化协议并没有类似的安全措施,攻击者可通过设置RPC请求头中的反序列化ID以更改默认协议,从而绕过Hessian2保护措施实现远程代码执行。
2、 CVE-2021-30179:远程代码执行漏洞
Apache Dubbo 默认支持对外提供接口的任意方法的泛型调用,该调用由GenericFilter 处理,通过查找调用的第一个参数中指定的服务和方法,并使用 Java 反射 API 进行最终调用。但由于过滤不严,攻击者控制某个参数值触发反序列化,实现任意代码执行。
3、 CVE-2021-30180:远程代码执行漏洞
Apache Dubbo 使用标签路由转发客户端请求到对应服务器进行处理,这些规则会被加载到配置中心(例如:Zookeeper、Nacos 等)。在解析规则时,Dubbo通过 SnakeYAML 库进行规则加载,默认情况下会调用构造函数。具备配置中心访问权限的攻击者可通过上传恶意规则文件,反序列化后达到远程代码执行。
4、 CVE CVE-2021-30181:远程代码执行漏洞
Apache Dubbo 使用脚本路由转发客户端请求到对应服务器进行处理,这些规则会被加载到配置中心(例如:Zookeeper、Nacos 等)。在解析规则时,Dubbo将使用 JRE ScriptEngineManager 加载 ScriptEngine 并运行脚本提供的规则,该规则默认允许执行任意 Java 代码。具备配置中心访问权限的攻击者可通过注入恶意脚本,造成远程代码执行。
5、 CVE-2021-32824:远程代码执行漏洞
Dubbo主服务端口可用来访问Telnet处理程序,该处理程序提供了一些基本方法,用于收集有关服务提供者和公开的方法等信息,甚至可以关闭服务。此外,还可以使用处理程序调用提供的方法,采用安全版本的FastJson处理调用参数,并通过PojoUtils.realize进一步处理。PojoUtils可以用来实例化任意类并调用其setters,从而攻击者可以利用PojoUtils.realize来实现远程代码执行。
Apache Dubbo < 2.7.10
Apache Dubbo < 2.6.10
目前官方已发布新版本,请及时升级到对应的安全版本:https://github.com/apache/dubbo
https://securitylab.github.com/advisories/GHSL-2021-034_043-apache-dubbo/