Akamai 博客 | Spring Cloud Function SpEL 注入 (CVE-2022-22963) 被频繁利用
概览
2022 年 3 月 24 日,Pivotal 修补了 Spring Cloud Function 中的一个严重服务器端代码注入漏洞(Spring Expression Language 注入),该漏洞可能会导致系统被入侵。Spring 是常见的开源 Java 框架。Akamai 自适应安全引擎 (ASE) Kona Site Defender (KSD) 规则集可抵御该漏洞和已发现的另一个远程代码执行 (RCE) 漏洞(Spring Core 或“Spring4Shell”)。这篇博客重点介绍了 Spring Cloud 漏洞,而有关 Spring Core 漏洞的信息,您可以参阅 此处。
Spring Cloud Function 技术让业务逻辑不必受制于任何特定运行时。Spring Expression Language (SpEL) 是一种强大的表达式语言,在整个 Spring 技术家族中应用广泛,支持在运行时查询和处理对象图。过去曾经爆出过许多有关 SpEL 注入的远程代码执行常见漏洞和风险 (CVE)(见图 1),均涉及到应用程序以不安全的方式计算不受信任的用户输入代码表达式的情况。
几天后(3 月 26 日),GitHub 用户“cckuailong”发布了一段概念验证漏洞代码,展示了如何成功利用该漏洞(见图 2)。
不到一天后,Akamai 便发现互联网上出现了漏洞利用企图。
与 Log4j一样,目前的很多(并非全部)漏洞利用企图均为“ping back”探测,也就是说,攻击者指示应用程序在成功利用漏洞的情况下发送一个信标。
我们已经观测到世界各地的数千个 IP 地址发送攻击载荷,其中大多为虚拟专用网络 (VPN) 和托管在公有云上的 Web 代理。
漏洞
在分析该补丁后,可以注意到,通过“spring.cloud.function.routing-expression”HTTP 标头可接收一个 SpEL 表达式,以促进应用程序路由。
但代码中并未检查是否有可能通过标头接收要计算的表达式。为修复此问题,在代码中添加了一个单独的 headerEvalContext (即 SimpleEvaluationContext) 。
使用 KSD 自适应安全引擎抵御攻击
Akamai 自适应安全引擎 (ASE) 包含广泛的内置规则,可用于检测命令注入,因为其中很多攻击的目标都是执行操作系统级命令。ASE 能够使用现有的命令注入规则检测这类零日攻击:
此外,Kona Site Defender 规则集也能抵御这类攻击:
3000041 - 服务器端模板注入
3000156 - 检测到 CMD 注入(PHP 高风险函数)
总结
尽管 Spring Cloud Functions 的普及性不如 Log4j 库,但该漏洞的利用较为容易,因此会吸引很多攻击者。我们预计,这将导致很多攻击者发起加密挖矿、DDoS、勒索软件攻击活动,这些攻击者还会在未来几年内将该漏洞用作入侵企业的主要手段。不过,Akamai 自适应安全引擎和 Kona Site Defender 规则集可以保护 Akamai 客户免受攻击。
Akamai 的威胁研究团队将继续监控该漏洞的利用情况,并将在新变体出现时,或者我们发现有新的网络犯罪团伙将该漏洞添加到其攻击工具“军械库”中时,及时分享最新情况。