漏洞一
受影响组件
- 名称: nacos-api
- 路径:
app/app.jar/BOOT-INF/lib/nacos-api-1.4.1.jar
- 类型: WEB
- 版本: 1.4.1
- 修复版本: 1.4.6, 2.2.3
描述
Nacos在处理某些基于Jraft的请求时,采用Hessian进行反序列化,但并未设置限制,导致应用存在远程代码执行漏洞。主要受影响的是7848端口的Jraft服务。Nacos 1.x在单机模式下默认不开放7848端口,故该情况通常不受此漏洞影响。
使用cluster集群模式运行Nacos 1.4.0到1.4.6(不包含1.4.6)版本受此漏洞影响,然而,2.x版本无论单机或集群模式均默认开放7848端口均受该漏洞的影响。
####受影响版本
- 1.4.0 <= Nacos < 1.4.6
- 2.0.0 <= Nacos < 2.2.3
解决方案
-
升级修复
官方已发布新版本修复了该漏洞,可下载参考链接中的最新版本进行升级。
参考链接:- Nacos 2.2.3
- Nacos 1.4.6
-
临时缓解
对外限制开放7848端口,一般使用时该端口为Nacos集群间Raft协议的通信端口。因此老版本可以通过禁止该端口来自Nacos集群外的请求来缓解此漏洞。(如部署时已进行限制或未暴露,则风险可控)。
漏洞二
受影响组件
- 名称: nacos-client
- 路径:
app/app.jar/BOOT-INF/lib/nacos-client-1.4.1.jar
- 类型: WEB
- 版本: 1.4.1
- 修复版本: >2.0.3
描述
Nacos 2.0.3版本存在安全漏洞,该漏洞源于在访问提示页面中存在访问控制漏洞
漏洞三
受影响组件
- 名称: nacos-common
- 路径:
app/app.jar/BOOT-INF/lib/nacos-common-1.4.1.jar
- 类型: WEB
- 版本: 1.4.1
- 修复版本: >2.0.3
描述
Nacos 2.0.3中通过 pageSize 和 pageNo 参数在 auth/users 中存在跨站脚本 (XSS) 漏洞
修复过程
生产环境服务版本情况:
组件名称 | 版本 |
---|---|
Spring Cloud Alibaba Version | 2021.0.1.0 |
Spring Cloud Version | 2021.0.2 |
Spring Boot Version | 2.6.8 |
Nacos服务端 | 2.2.0 |
Nacos客户端 | 1.4.1 |
官方各版本和组件对照表:Spring Boot + Spring Cloud Aibaba + Nacos版本依赖关系,升级版本如下:
组件名称 | 版本 |
---|---|
Spring Cloud Alibaba Version | 2021.0.5.0 |
Spring Cloud Version | 2021.0.5 |
Spring Boot Version | 2.6.13 |
Nacos服务端 | 2.2.0 |
Nacos客户端 | 2.2.0 |
原生产代码:
<properties><spring-boot.version>2.6.8</spring-boot.version><spring-cloud.version>2021.0.2</spring-cloud.version><spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
</properties><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
漏洞修复后的代码:
<properties><spring-boot.version>2.6.13</spring-boot.version><spring-cloud.version>2021.0.5</spring-cloud.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version><nacos.version>2.2.0</nacos.version><nacos-api.version>2.2.3</nacos-api.version>
</properties><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-common</artifactId><version>${nacos.version}</version><exclusions><exclusion><artifactId>om.alibaba.nacos</artifactId><groupId>nacos-api</groupId></exclusion></exclusions></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-api</artifactId><version>${nacos-api.version}</version></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
端口开放
Nacos2.X版本相比1.X新增了gRPC的通信方式,需要在服务器防火墙多开两个端口,例如你部署的端口是8848,那还需要再开9848和9849来支持gRPC的端口
端口 | 与主端口偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
GPT一下,你就知道
今年AIGC太火,程序员很多东西用GPT就能搞定吧,推荐个我一直在使用的:Talk-Bot