Dubbo漏洞

无意中在网上看到了这样的一条新闻,说是我们360监测发现了Dubbo官方发布的危险漏洞通告,而且尴尬的是,世界上受影响最大的居然是中国,有图有真相

我感觉这也从侧面证明了一件事情,就是为什么面试的时候这些神奇的技术会问的那么频繁了,这一次真的是找到真相了,那我们来看一下到底是怎么回事吧

0x01 漏洞背景

2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-1948,漏洞等级:高危。

Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

Apache Dubbo Provider 存在 反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。

该漏洞的相关技术细节已公开。

对此,360CERT建议广大用户及时安装最新补丁,做好资产自查以及预防工作,以免遭受黑客攻击。

0x02 风险等级

360CERT对该漏洞的评定结果如下:

威胁等级:高危

影响面:广泛

0x03 漏洞详情

Apache Dubbo Provider 存在 反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。

0x04 影响版本

Dubbo 2.7.0 – 2.7.6

Dubbo 2.6.0 – 2.6.7

Dubbo 2.5.x (官方不再维护)

0x05 修复建议

通用修补建议:

建议广大用户及时升级到2.7.7或更高版本


虽然不清楚,但是可能有的朋友还不太清楚什么是Dubbo或者说只是听说过Dubbo,但是没有详细的了解过,耐心往下看,通过35道面试题,今天就给你讲清楚,Dubbo没什么神秘的

1.什么是Dubbo?

Dubbo是基于Java的高性能轻量级的RPC分布式服务框架,现已成为 Apache 基金会孵化项目。

官网:http://dubbo.apache.org/en-us/

2.为什么要使用Dubbo?

背景:

随着互联网的快速发展,Web应用程序的规模不断扩大,最后我们发现传统的垂直体系结构(整体式)已无法解决。分布式服务体系结构和流计算体系结构势在必行,迫切需要一个治理系统来确保体系结构的有序发展。

  • 开源免费
  • 一些核心业务被提取并作为独立的服务提供服务,逐渐形成一个稳定的服务中心,这样前端应用程序就可以更好地响应变化多端的市场需求
  • 分布式框架能承受更大规模的流量
  • 内部基于netty性能高

3.Dubbo提供了哪3个关键功能?

基于接口的远程调用

容错和负载均衡

自动服务注册和发现

4.你知道哪些机构在用Dubbo吗?

5.Dubbo服务的关键节点有哪些?

6.说一下Dubbo服务注册流程?

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

7.能画一下服务注册流程图吗?

8.Dubbo架构的特点?

连通性、健壮性、伸缩性、以及向未来架构的升级性。

9.对jdk的最小版本需求?

jdk1.6+

10.注册中心的选择?

一般来说选中Zookeeper更稳定更合适。

除了Zookeeper还有Redis注册中心、Multicast注册中心、Simple注册中心。

11.Dubbo的核心配置?用途?

12.配置优先级规则?

优先级从高到低:

  • JVM -D参数,当你部署或者启动应用时,它可以轻易地重写配置,比如,改变dubbo协议端口;
  • XML, XML中的当前配置会重写dubbo.properties中的;
  • Properties,默认配置,仅仅作用于以上两者没有配置时。

13.如何用代码方式绕过注册中心点对点直连?


 
ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
// 如果点对点直连,可以用reference.setUrl()指定目标地址,设置url后将绕过注册中心,
// 其中,协议对应provider.setProtocol()的值,端口对应provider.setPort()的值,
// 路径对应service.setPath()的值,如果未设置path,缺省path为接口名
reference.setUrl("dubbo://10.20.130.230:20880/com.xxx.XxxService"); 
 

14.Dubbo配置来源有几种?分别是?

4种

  • JVM System Properties,-D参数
  • Externalized Configuration,外部化配置
  • ServiceConfig、ReferenceConfig等编程接口采集的配置
  • 本地配置文件dubbo.properties

15.如何禁用某个服务的启动检查?

<dubbo:reference interface = "com.foo.BarService" check = "false" />

16.Dubbo 负载均衡策略?默认是?

  • 随机负载平衡(默认)
  • RoundRobin负载平衡
  • 最小活动负载平衡
  • 一致的哈希负载平衡

17.上线兼容老版本?

多版本号(version)

18.开发测试环境,想绕过注册中心如何配置?

  • xml
 <dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />
  • -Djava -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890
  • .propertiesjava -Ddubbo.resolve.file=xxx.properties
com.alibaba.xxx.XxxService=dubbo://localhost:20890

19.集群容错几种方法?

20.Dubbo有几种配置方式?

  1. Spring
  2. Java API

21.Dubbo有哪些协议?推荐?

  • dubbo://(推荐)
  • rmi://
  • hessian://
  • http://
  • webservice://
  • thrift://
  • memcached://
  • redis://
  • rest://

22.Dubbo使用什么通信框架?

dubbo使用netty。

23.dubbo协议默认端口号?http协议默认端口?hessian?rmi?

  • dubbo:20880
  • http:80
  • hessian:80
  • rmi:80

24.Dubbo默认序列化框架?其他的你还知道?

  • dubbo协议缺省为hessian2
  • rmi协议缺省为java
  • http协议缺省为json

25.一个服务有多重实现时,如何处理?

可以用group分组,服务提供方和消费放都指定同一个group。

26.Dubbo服务调用默认是阻塞的?还有其他的?

默认是同步等待结果阻塞的,同时也支持异步调用。

Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。

27.Dubbo服务追踪解决方案?

  • Zipkin
  • Pinpoint
  • SkyWalking

28.Dubbo不维护了吗?Dubbo和Dubbox有什么区别?

现在进入了Apache,由apache维护。

Dubbox是当当的扩展项目。

29.Dubbox有什么新功能?

  • 支持REST风格远程调用(HTTP + JSON/XML)
  • 支持基于Kryo和FST的Java高效序列化实现
  • 支持基于嵌入式Tomcat的HTTP remoting体系
  • 升级Spring
  • 升级ZooKeeper客户端

30.io线程池大小默认?

cpu个数 + 1

31.dubbo://协议适合什么样的服务调用?

采用单一长链接和NIO异步通讯,适用于小数量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

32.自动剔除服务什么原理?

zookeeper临时节点,会话保持原理。

33.从 2.0.5 版本开始,dubbo支持通过x命令来进行服务治理?

telnet

34.如何用命令查看服务列表?

telnet localhost 20880

进入命令行。然后执行 ls相关命令:

  • ls: 显示服务列表
  • ls -l: 显示服务详细信息列表
  • ls XxxService: 显示服务的方法列表
  • ls -l XxxService: 显示服务的方法详细信息列表

35.Dubbo框架设计是怎样的?

各层说明:

  • 「config 配置层」:对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类
  • 「proxy 服务代理层」:服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以 ServiceProxy 为中心,扩展接口为 ProxyFactory
  • 「registry 注册中心层」:封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为 RegistryFactory, Registry, RegistryService
  • 「cluster 路由层」:封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为 Cluster, Directory, Router, LoadBalance
  • 「monitor 监控层」:RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactory, Monitor, MonitorService
  • 「protocol 远程调用层」:封装 RPC 调用,以 Invocation, Result 为中心,扩展接口为 Protocol, Invoker, Exporter
  • 「exchange 信息交换层」:封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
  • 「transport 网络传输层」:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec
  • 「serialize 数据序列化层」:可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool

怎么样,够不够,那肯定是不够啊,这怎么能够呢?对吧,不过没关系,继续,耐心点

先看这张图,基本涵盖了Dubbo的相关组件,也就是说,你要学Dubbo,这些可能你都要准备好啊,有朋友会问,这是你画的?开玩笑!怎么可能是我画的啊,哈哈哈哈

不过想要这张图的,关注公众号:Java架构师联盟,添加小助手获取吧,备注博客园就好

耐心看,1个Dubbo漏洞,35道必问面试题,Dubbo没什么可神秘的的更多相关文章

  1. (转)130道ASP.NET面试题

    130道ASP.NET面试题 转自http://blog.csdn.net/kingmax54212008/article/details/2021204 1. 简述 private. protect ...

  2. 50道java线程面试题

    50道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...

  3. 115道Java经典面试题(面中率最高、最全)

    115道Java经典面试题(面中率最高.最全) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可 ...

  4. N++ 道ASP.NET面试题

    InterviewQuestions-ASP.NET N++ 道ASP.NET面试题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . ...

  5. 53道Java线程面试题

    53道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...

  6. 万字长文,62道Java核心面试题,一次性打包送给积极向上的你

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  7. 100道Java基础面试题收集整理(附答案)

    不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...

  8. 2019年19道java经典面试题(附答案)

    1.不可变对象 指对象一旦被创建状态不能再改变.任何修改都会创建一个新的对象,如 String.Integer及其它包装类. 2.能否创建一个包含可变对象的不可变对象? 可以.不要共享可变对象的引用就 ...

  9. 31道Java核心面试题,一次性打包送给你

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

随机推荐

  1. jni不通过线程c回调java的函数

    整个工程的项目如下: 1.项目的思路是在activity中启动MyService这个服务,在服务中调用 JniScsManger类中的本地方法startNativeScsService,在 start ...

  2. java-IO流(commons-io-2.6)使用教程

    工具库下载: https://pan.baidu.com/s/1tXXF4zjIfJ9ouObsU5RTpA  提取码:214v 1.打开IDEA 2.在模块下新建个lib文件夹将框架复制进去 3.点 ...

  3. 【SpringBoot MQ 系列】RabbitListener 消费基本使用姿势介绍

    [MQ 系列]RabbitListener 消费基本使用姿势介绍 之前介绍了 rabbitmq 的消息发送姿势,既然有发送,当然就得有消费者,在 SpringBoot 环境下,消费可以说比较简单了,借 ...

  4. The main method caused an error: java.util.concurrent.ExecutionException: org.apache.flink.runtime.client.JobSubmissionException: Failed to submit JobGraph.

    在使用flink run命令提交任务可能会遇到如下错误: The program finished with the following exception: org.apache.flink.cli ...

  5. FastAPI 快速搭建一个REST API 服务

    最近正好在看好的接口文档方便的工具, 突然看到这个, 试了一下确实挺方便 快速示例 from fastapi import FastAPI from pydantic import BaseModel ...

  6. VC单选按钮控件(Radio Button)用法(转)

    先为对话框加上2个radio button,分别是Radio1和Radio2. 问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了? 关键是选上,“默认”只要放在OnInitDi ...

  7. 机器分配——线性dp输出路径

    题目描述 总公司拥有高效设备M台, 准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M <= 15 ...

  8. 请解释ASP. NET中的web页面与隐藏类之间的关系

    请解释ASP.NET中的web页面与其隐藏类之间的关系 其实页面与其隐藏类之间就是一个部分类的关系,你在页面上放一个一个的控件就是在这个类中定义一个一个的属性, 因为是同一个类的部分类的关系,所以隐藏 ...

  9. HTML5(七)Web 存储

    HTML5 Web 存储 HTML5 web 存储,一个比cookie更好的本地存储方式. 什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 ...

  10. cf1216E2 Numerical Sequence (hard version) 二分查找、思维题

    题目描述 The only difference between the easy and the hard versions is the maximum value of k. You are g ...