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