返回

你的网络安全岌岌可危!SpringCloud Gateway 惊现 SPEL RCE 漏洞,赶紧来了解下!

后端

Spring Cloud Gateway RCE 漏洞:深入了解其影响和缓解措施

漏洞概述

Spring Cloud Gateway 中存在一个严重的 SPEL RCE(远程代码执行)漏洞 ,影响着所有版本在 2.6.x 及之前的用户。此漏洞允许攻击者通过修改路由配置来注入恶意 filter 参数,从而触发远程代码执行。

漏洞影响范围

受影响的 Spring Cloud Gateway 版本:

  • 2.6.x 及更早版本

漏洞危害

此漏洞允许攻击者在目标系统上执行任意代码,从而造成严重后果,包括:

  • 数据泄露:攻击者可窃取敏感数据(如用户名、密码、信用卡信息)。
  • 系统破坏:攻击者可破坏系统文件和进程,导致系统崩溃或功能异常。
  • 拒绝服务:攻击者可发起拒绝服务攻击,使得系统无法响应正常请求。
  • 网站挂马:攻击者可将恶意代码注入网站,导致用户访问时感染恶意软件。

漏洞检测

您可以通过以下步骤检查系统是否受到影响:

  1. 检查 Spring Cloud Gateway 版本 :确认是否运行受影响版本 (2.6.x 及更早)。
  2. 审查路由配置 :检查是否存在包含恶意 filter 参数的配置。
  3. 查看日志 :搜索以下错误消息:
org.springframework.web.filter.reactive.FilterRegistrationBean: Filter initialization failed

缓解措施

请立即采取以下措施来缓解漏洞:

  1. 升级 Spring Cloud Gateway :升级至最新版本,目前为 2.7.2。
  2. 删除恶意配置 :审查路由配置,删除任何恶意 filter 参数。
  3. 启用安全功能 :启用 Spring Cloud Gateway 的安全功能,如请求验证和访问控制。
  4. 监控系统 :定期监控系统,及时修补新漏洞。

漏洞利用示例

@RestController
public class ExampleController {

    @PostMapping("/example")
    public ResponseEntity<String> example(@RequestBody String payload) {
        // 这里存在 SPEL RCE 漏洞,允许攻击者执行任意代码
        Object result = SpELExpressionParser().parseExpression(payload).getValue();
        return ResponseEntity.ok(result.toString());
    }
}

攻击者可以通过向此端点发送包含恶意 payload 的 POST 请求来触发 RCE。例如:

curl -X POST -H "Content-Type: application/json" -d '{"payload": "${java.lang.Runtime.getRuntime().exec(\"touch /tmp/pwned\")}"}' http://localhost:8080/example

常见问题解答

  1. 此漏洞是否影响 Spring Cloud 其它组件?
    否,此漏洞仅影响 Spring Cloud Gateway。

  2. 我该如何升级 Spring Cloud Gateway?
    根据您的环境和应用程序,请参考 Spring 官方文档中的升级说明。

  3. 我可以使用 Web Application Firewall (WAF) 来缓解此漏洞吗?
    WAF 可以帮助阻止某些类型的攻击,但不能完全缓解此漏洞。

  4. 此漏洞何时被发现?
    此漏洞于 2023 年 5 月 16 日被发现并公开。

  5. 我该如何获得更多信息?
    您可以访问 Spring 官方安全公告 Spring Security Advisories | Spring Framework 以获取更多信息。

结论

Spring Cloud Gateway RCE 漏洞是一个严重的威胁,可导致多种安全风险。受影响用户应立即采取缓解措施来保护他们的系统。通过保持最新版本、删除恶意配置、启用安全功能并定期监控系统,您可以最大程度地减少此漏洞的风险。