Nacos客户端漏洞修复

漏洞一

受影响组件
  • 名称: 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

解决方案

  1. 升级修复
    官方已发布新版本修复了该漏洞,可下载参考链接中的最新版本进行升级。
    参考链接:

  2. 临时缓解
    对外限制开放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 Version2021.0.1.0
Spring Cloud Version2021.0.2
Spring Boot Version2.6.8
Nacos服务端2.2.0
Nacos客户端1.4.1

官方各版本和组件对照表:Spring Boot + Spring Cloud Aibaba + Nacos版本依赖关系,升级版本如下:

组件名称版本
Spring Cloud Alibaba Version2021.0.5.0
Spring Cloud Version2021.0.5
Spring Boot Version2.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的端口

端口与主端口偏移量描述
98481000客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
98491001服务端gRPC请求服务端端口,用于服务间同步等

GPT一下,你就知道

今年AIGC太火,程序员很多东西用GPT就能搞定吧,推荐个我一直在使用的:Talk-Bot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值