【技术干货】Apache Dubbo框架风险解读

admin 2023年7月25日12:01:20评论7 views字数 2913阅读9分42秒阅读模式

【技术干货】Apache Dubbo框架风险解读

【技术干货】Apache Dubbo框架风险解读
【技术干货】Apache Dubbo框架风险解读
xxhzz
@PortalLab实验室

Dubbo介绍


Dubbo定位

Dubbo一开始把自己定位为一个RPC框架,专注于服务之间的调用。随着微服务的概念越来越火爆,Dubbo开始重新思考自己的定位,除了服务调用,开始逐渐向服务治理、服务监控、服务网关等方向扩展,随着Dubbo生态圈的逐渐完善,Dubbo慢慢地演变为一个成熟的微服务框架。

【技术干货】Apache Dubbo框架风险解读

Dubbo核心的服务治理功能定义:

【技术干货】Apache Dubbo框架风险解读

简单总结和概括一下什么是Dubbo?

其实,Dubbo就是一个实现服务调用的分布式框架。核心部分其实在于服务系统之间的远程通讯,包括多种线程模型、序列化以及“请求-响应”模式的信息交换方式;提供基于接口方法的透明远程调用,包括多协议支持以及负载均衡,失败容错、地址路由、动态配置等集群支持;基于注册中心目录服务,使服务消费方能动态的查某提供方,使地址透明,使服务提供方可以平滑增加或减少机器。


Dubbo基本架构

【技术干货】Apache Dubbo框架风险解读

调用流程:

  • 容器启动、加载、运行服务提供者

  • 服务提供者启动,提供自己的服务。提供服务的过程主要包括:提供服务的接口、注册服务(本地注册、注册中心注册)、暴露服务、启动Tomcat、Netty接受处理请求。把自己的主机地址、端口等信息注册到注册中心。

  • 注册中心接受注册请求,保存服务名与服务器的地址映射关系,或感知服务地址变动通知消费者。

  • 服务消费者启动时,从注册中心获取服务提供者的地址信息并缓存起来,根据负载均衡算法,从服务提供者地址列表里选择一个服务进行服务调用。

  • 服务提供者和消费者在产生调用时,在内存中统计调用次数和时间,定时发送到监控中心。


微服务生态

Dubbo和众多优秀的开源项目一起构建了丰富的微服务生态支持,而这个微服务生态,其实就是基于Dubbo在实现统一管理配置和各个系统服务间的调用这个功能,而衍生出的服务注册、发现、监控、链路追踪、多协议等等服务的支持。

官网上微服务生态示例架构图:

【技术干货】Apache Dubbo框架风险解读

Dubbo攻击面

在对Dubbo框架及其微服务生态有一定了解之后,我们需要思考一下Dubbo框架存在哪些安全风险,或者说以Dubbo为基础构建的整个微服务生态又存在哪些安全风险。接下来,将从攻击者的角度对Dubbo框架及微服务生态的安全风险或者攻击面进行梳理。


1. Dubbo框架本身

Dubbo框架本身存在多种攻击漏洞,例如由于Dubbo框架使用序列化在服务之间传输数据,支持Hessian、Fastjson、Kryo等反序列化协议,当没有采取任何防御措施或防御方法被绕过时,会导致反序列化漏洞;由于代码层的过滤器过滤不够严格,攻击者可以构造恶意请求调用恶意方法,造成远程代码执行漏洞;由于Dubbo中的某些组件会尝试打印输入参数的格式化字符串,攻击者可以利用自定义带有特殊toString方法的bean,导致远程命令执行漏洞;还有一些与Dubbo框架特性或功能相关的漏洞等等。

CVE ID

漏洞名称

CVE-2019-17564

Aapche Dubbo Java反序列化漏洞

CVE-2020-1948

Apache Dubbo Provider 远程代码执行漏洞

CVE-2021-25641

Apache Dubbo Hessian2 协议反序列化漏洞

CVE-2021-30179

Apache Dubbo 反序列化漏洞

CVE-2021-32824

Apache Dubbo Telnet handler 远程代码执行漏洞

CVE-2021-30180

Apache Dubbo YAML 反序列化漏洞

CVE-2021-30181

Apache Dubbo Nashorn 脚本远程代码执行漏洞

CVE-2021-36161

Apache Dubbo格式化字符串错误漏洞

CVE-2021-36162

Apache Dubbo YAML反序列化漏洞

CVE-2021-43297

Apache Dubbo Hessian2 异常处理时反序列化漏洞

CVE-2022-24969

Apache Dubbo SSRF漏洞

CVE-2023-23638

Apache Dubbo CVE-2023-23638 反序列化漏洞

以CVE-2021-30179和CVE-2023-23638为例:

两个漏洞产生的本质都是利用了Dubbo泛化调用功能,用户可以向Dubbo服务端传入任意类,这就导致攻击者可以通过反序列化的方式,来触发特定Gadget,达到远程命令执行的目的。而CVE-2023-23638是对CVE-2021-30179防御方式的绕过。

这里简单提一下Dubbo处理泛化调用的方式是通过filter机制实现的,核心类是org.apache.dubbo.rpc.filter.GenericFilter

【技术干货】Apache Dubbo框架风险解读

具体的漏洞分析可以参考:https://mp.weixin.qq.com/s/9K7z93qxTtFYcLdTGRi14A


2. Dubbo生态中其他开源组件

在Dubbo架构或以Dubbo为基础的微服务生态中,存在各类其他开源组件,而这些组件本身可能存在一定的漏洞风险,比如:Zookeeper作为Dubbo的注册中心,可能存在未授权漏洞;Nacos作为Dubbo的注册中心,可能存在未授权、任意用户添加、默认密码登录等安全漏洞风险;Apollo作为Dubbo的配置中心,可能存在未授权风险;SkyWalking作为Dubbo的链路追踪组件,可能存在远程命令执行漏洞。除了上述几种组件的漏洞风险的列举,具体还要看在Dubbo构建的微服务生态或Dubbo架构中使用了哪些相关组件,需要重点关注这些组件本身是否存在安全漏洞。

3. Dubbo架构中各系统服务

Dubbo的最主要功能是用于业务系统服务之间的调用,然而这些服务可能存在相关漏洞或数据泄露的风险。例如,缺乏适当的数据验证和输入清理可能导致SQL注入漏洞、XSS漏洞以及API未授权访问漏洞。此外,服务之间的通信缺乏足够的安全性可能导致敏感数据泄露。另外,Dubbo服务没有适当防止流量过多、资源耗尽或滥用等防御措施,从而导致DoS攻击风险。

4. Dubbo组件—管理控制台

作为Dubbo微服务治理控制面中的核心组件,Dubbo-Admin负责微服务集群的服务治理和可视化展示。Dubbo-Admin可能会存在弱密码登陆、未授权的API访问和默认登陆凭证等安全风险。而这也是Dubbo以及整个微服务生态的重要攻击点。

总结

实际上,Dubbo所面临的安全风险主要来自于框架本身的安全漏洞、业务风险以及数据泄露的风险。然而,考虑到Dubbo作为一个成熟的微服务框架,我们还必须关注它所构建的微服务生态系统中其他组件或相关服务存在的安全风险。

关于Portal Lab

星阑科技 Portal Lab 致力于前沿安全技术研究及能力工具化。主要研究方向为数据流动安全、API 安全、应用安全、攻防对抗等领域。实验室成员研究成果曾发表于BlackHat、HITB、BlueHat、KCon、XCon等国内外知名安全会议,并多次发布开源安全工具。未来,Portal Lab将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。

【技术干货】Apache Dubbo框架风险解读

原文始发于微信公众号(星阑实验室):【技术干货】Apache Dubbo框架风险解读

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月25日12:01:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【技术干货】Apache Dubbo框架风险解读https://cn-sec.com/archives/1905530.html

发表评论

匿名网友 填写信息