CVE-2022-22947 SpringCloud GateWay SPEL RCE 漏洞分析
漏洞概要
Spring Cloud Gateway 是 Spring Cloud 生态中的 API 网关,包含限流、过滤等 API 治理功能。Spring 官方在 2022 年 3 月 1 日发布新版本修复了 Spring Cloud Gateway 中的一处代码注入漏洞。当 actuator 端点开启或暴露时,可以通过 http 请求修改路由,路由中包含的恶意 filter 参数会经过 SPEL 表达式解析,从而导致远程主机执行任意代码。
影响范围:org.springframework.cloud:spring-cloud-gateway-server@[3.1.0, 3.1.1)org.springframework.cloud:spring-cloud-gateway-server@[2.2.6.RELEASE, 3.0.7)
修复方案:将组件 org.springframework.cloud:spring-cloud-gateway-server 升级至 3.1.1 及以上版本将组件 org.springframework.cloud:spring-cloud-gateway-server 升级至 3.0.7 及以上版本
漏洞链接:https://www.oscs1024.com/hd/MPS-2022-1077
以下内容来自公众号《安全日记》 Erikten 对该漏洞的分析:
0x00 环境搭建
CVE-2022-22947 SpringCloud GateWay SPEL RCE 漏洞分析,直接去 GitHub 上下载即可。
0x01 漏洞分析
首先这个漏洞的本质就是一个 Spel 表达式注入。漏洞的触发点位于 org/springframework/cloud/gateway/support/ShortcutConfigurable.java#getValue,看 diff 点可以发现在安全版本中官方将 StandardEvaluationContext 更换为了 GatewayEvaluationContext 去执行 Spel 表达式
我们回溯一下 getValue 这个方法,发现在 org/springframework/cloud/gateway/support/ShortcutConfigurable.java#ShortcutType 这个枚举中的 DEFAULT 被调用
那么就去跟一下哪里调了 ShortcutType.DEFAULT,发现在 org/springframework/cloud/gateway/support/ShortcutConfigurable.java#shortcutType 调用了它
最终在 org/springframework/cloud/gateway/support/ConfigurationService.java#normalizeProperties 对 filter 属性进行解析,最后进入 getValue 执行 SPEL 表达式造成 SPEL 表达式注入。
继续向上,来到 org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#loadGatewayFilters,根据这个方法的名字大概也能猜出它的做作用,就是添加路由 filters
继续重复之前的操作(向上回溯),会找到这么一条调用链
整体流程大致了解了,就是添加路由 filter 然后访问,通过 getValue 触发 Spel 注入最终完成 RCE,那么怎么添加路由呢?我们去看下手册https://cloud.spring.io/spring-cloud-gateway/multi/multi__actuator_api.html
来到 org.springframework.cloud.gateway.actuate.AbstractGatewayControllerEndpoint#save,可以看到 POST 的请求体对应的内容
Filters 内容
0x02 构造 PoC
首先创建路由 filter
发包可以发现 payload 已经注入进 filter 了
接下来刷新一下
首先在 org.springframework.cloud.gateway.support.ConfigurationService.ConfigurableBuilder#normalizeProperties 遍历 filters 属性
接着通过 org.springframework.cloud.gateway.support.ShortcutConfigurable.ShortcutType#normalize 调 getValue 解析属性
造成 Spel 注入
最终解锁计算器
0x03 参考链接
https://www.cnblogs.com/bitterz/p/15964852.html
https://xz.aliyun.com/t/11004#toc-1
免费情报订阅 & 代码安全检测
墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,核心团队来自百度、华为、乌云等企业,公司为客户提供完整的软件供应链安全管理平台,围绕 SBOM 提供软件全生命周期的安全管理,平台能力包括软件成分分析、源安全管理、容器镜像检测、漏洞情报预警及商业软件供应链准入评估等多个产品。为客户提供从供应链资产识别管理、风险检测、安全控制、一键修复的完整控制能力。同时产品可以极低成本的和现有开发流程中的各种工具一键打通,包括 IDE、Gitlab、Bitbucket、Jenkins、Harbor、Nexus 等数十种工具无缝集成。
代码安全检测: https://www.murphysec.com/?sf=1vi9zs情报订阅: https://www.oscs1024.com/cm/?sf=1vi9zs漏洞库:https://www.oscs1024.com/hl/?sf=1vi9zs
版权声明: 本文为 InfoQ 作者【墨菲安全】的原创文章。
原文链接:【http://xie.infoq.cn/article/85308f520656fc539c53d3a44】。文章转载请联系作者。
评论