长亭百川云 - 文章详情

Apache Dubbo框架风险解读

星阑科技

52

2024-07-14

Dubbo介绍

**

Dubbo定位

**

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

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

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

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

**

Dubbo基本架构

**

调用流程:

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

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

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

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

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

**

微服务生态

**

Dubbo和众多优秀的开源项目一起构建了丰富的微服务生态支持,而这个微服务生态,其实就是基于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

具体的漏洞分析可以参考: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作为一个成熟的微服务框架,我们还必须关注它所构建的微服务生态系统中其他组件或相关服务存在的安全风险。

关于星阑

星阑科技基于大数据分析及AI智能化技术体系,助力企业应对数字世界的安全风险。凭借持续创新的安全理念和效果导向的攻防能力,星阑科技发展成为国内数据智能、信息安全领域的双料科技公司。为解决流动数据安全问题,星阑科技从数据攻防、数据分析、数据治理等不同场景出发,提供全景化数据流转监测、应用数据分析、API安全治理、高级威胁检测等解决方案,构建全链路流动数据保护体系

星阑科技核心产品——萤火流动数据分析平台,可针对用户异构、多模态数据提供风险监测、合规性管理、数据建模、用户追踪、行为关联、AI解释与推理等一体化数据分析能力,为企业的数据可观测性、数据合规、威胁监测、应用治理、业务洞察等场景提供全面支持。

往期 · 推荐

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2