Spring Cloud Function SpEL注入漏洞(CVE-2022-22963)分析

2024-01-01 17:44

本文主要是介绍Spring Cloud Function SpEL注入漏洞(CVE-2022-22963)分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、概述

2022年3月24日,Pivotal修补了Spring Cloud Function中一个关键的服务器端代码注入漏洞(Spring表达式语言注入),该漏洞有可能导致系统被攻击。Spring是一种流行的开源Java框架,该漏洞与另一个相关的远程代码执行(RCE)漏洞(Spring Core,即“Spring4Shell”)均可通过Akamai Adaptive Security Engine (ASE) Kona Site Defender (KSD)规则集有效防御。

本文将重点分析Spring Cloud漏洞,有关Spring Core漏洞的详情请参阅这里。

Spring Cloud Function技术可实现业务逻辑与特定运行时之间的解耦。Spring表达式语言(SpEL)作为一种强大的表达式语言,已在各类Spring产品中实现了广泛应用,支持在运行时查询和操作对象图。过去,当应用程序以不安全的方式评估不受信任的用户输入的代码表达式时,很多远程代码执行方面的常见漏洞和暴露(CVE)都是围绕SpEL注入产生的(参见图1)。

图1:GitHub上的Spring Cloud Function代码路径

几天后,3月26日,GitHub用户“cckuailong”发布了一个概念验证漏洞,展示了对该漏洞的成功利用(图2)。

图2:公开的概念证实利用

随后不到一天的时间里,Akamai就观察到整个互联网上开始出现相关利用。

图3:3月27日开始的利用企图(来源:某客户的Akamai Web Security Analytics分析结果)

与Log4j类似,很多(并非全部)当前企图都是“Ping Back”类型的探测,攻击者只是在能够成功利用的情况下发出一个信标。

我们已经观察到全球各地的数千个IP地址开始发送有效载荷,其中大部分来自虚拟专用网络以及托管在公有云中的Web代理。

二、漏洞

通过补丁程序逆推可知,该漏洞可通过“spring.cloud.function.routing-expression”HTTP头来接收SpEL表达式,进而方便应用程序进行路由。

但代码中并不检查要评估的表达式是否应该通过HTTP头来接收。为修复该问题,添加了一个额外的headerEvalContext,它也是SimpleEvaluationContext的一部分。

三、使用KSD自适应安全引擎加以缓解

Akamai自适应安全引擎(ASE)可通过广泛的内置规则来检测命令注入,因为很多此类攻击的目标都是执行操作系统级别的命令。ASE能够利用现有命令注入规则检测到这个零日攻击:

此外下列Kona Site Defender规则集也可以缓解相关攻击:

  • 3000041 – 服务器端模板注入
  • 3000156 – CMD注入检测(PHP High-Risk Functions)

四、总结

虽然Spring Cloud Function的使用不像Log4j那么广泛,但这个漏洞易于利用的特点依然会吸引很多攻击者。Akamai预计该漏洞会引发很多以数字货币盗挖、DDoS攻击、勒索软件为目标的攻击,并且可能成为未来很长一段时间里潜入组织内网的有效途径。不过Akamai客户已经可以通过Akamai Adaptive Security Engine和Kona Site Defender规则集获得充分保护。

Akamai的威胁研究团队也将继续监控该漏洞的发展,并在出现新情况后及时通知大家。欢迎关注Akamai知乎机构号,第一时间了解最新近况。

这篇关于Spring Cloud Function SpEL注入漏洞(CVE-2022-22963)分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560035

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi