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知乎机构号,第一时间了解最新近况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/284078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[区间动态规划] 棋盘分割

题目描述 ​ 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n−1)次后,连同最后剩下的矩形棋盘共有 n 块矩形棋盘。(每次切割都只能沿…

【SpringBoot】SwaggerKnif4j接口文档集成

[TOC] 序:接口文档 ​ 在开发过程中,接口文档是非常重要的一环,在 Spring Boot 中,我们可以通过集成第三方来实现接口文档的自动生成。 ​ 通过注解来描述接口,然后根据这些注解自动生成接口文档,它不仅…

在Mac上恢复SD卡数据的 6 个有效应用程序

慌!SD卡里的照片和视频不小心删了,Mac设备上还恢复不了数据! 遇到这种情况,你需要的是一款可靠的Mac适用的SD卡恢复软件。我们为你准备了一份最佳的SD卡恢复软件列表,并且还有详细的评论。另外,我们还会给…

WinForm开发 - C# RadioButton(单选框) 设置默认选中或取消默认选中

WinForm开发中RadioButton组件使用过程中的小技巧。 1、属性界面操作 如果有多个组件,希望不显示默认选中单选框只需要将其Checked属性全部设置为False即可, 如果希望默认多个组件中显示默认选中,将其Checked属性设置为True。 2、代码实…

二分算法--x的平方根

个人主页:Lei宝啊 愿所有美好如期而遇 二分算法前言 二分算法原理超详细讲解(包括暴力求解,朴素二分查找,二分查找左右端点):二分查找(非朴素)--在排序数组中查找元素的第一个和最后一个位置https://blog.csdn.net/m0_74824254…

5 个让日常编码更简单的 Python 库

今天我们一起来研究一些非常有用的第三方模块,可以使得我们的日常编码变得更加简单方便 sh https://github.com/amoffat/sh 如果曾经在 Python 中使用过 subprocess 库,那么我们很有可能对它感到失望,它不是最直观的库,可能还有些…

Javascript 循环结构while do while for实例讲解

Javascript 循环结构while do while for实例讲解 目录 Javascript 循环结构while do while for实例讲解 一、while语句 二、do…while语句 三、for循环 疑难解答 我们从上一节课知道,JavaScript循环结构总有3种: (1)while语…

2024年【黑龙江省安全员C证】考试及黑龙江省安全员C证找解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年黑龙江省安全员C证考试为正在备考黑龙江省安全员C证操作证的学员准备的理论考试专题,每个月更新的黑龙江省安全员C证找解析祝您顺利通过黑龙江省安全员C证考试。 1、【多选题】下列属于编制安全检查…

WorkQueue模型

WorkQueues,也被称为任务队列模型。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时的处理。此时就可以使用work模型:让多个消费者绑定到一个队列&…

动力学约束下的运动规划算法——Kinodynamic RRT*算法

一、RRT * 算法回顾 为了更好的理解Kinodynamic RRT*算法,我们先来回顾一下RRT * 算法 RRT * 先通过Sample函数随机选取一个点Xrand,然后通过Near函数找到当前树上距离Xrand最近的一个点Xnear,再通过Steer函数,沿着从Xnear到Xra…

04 HAL库下使用定时器产生一个中断

目录 一、定时器的相关知识点 1.定时器的定义 2. 查看时钟配置 3. 定时器的分类 二、实验开始 1. 配置一个定时器 2.打开定时器的中断配置 引言 在本文的开头我想给大家分享一下单片机工作的两种工作模式轮询和中断(异步), 中断也叫做…

一文搞懂什么是缓存穿透、缓存雪崩、缓存击穿三个概念,以及解决方案

先理解概念:【注:我们这里说的是分布式、高并发环境】 一、缓存穿透是什么? 缓存穿透是指:请求【可以有很多】的数据在缓存、关系型数据库中都不存在,每次来查询都会查询到关系型数据库中。 解决方案: 1、将…

打破数据孤岛:ChatGPT如何打通金融大数据的任督二脉?

文章目录 一、引言二、ChatGPT与金融大数据分析的融合三、实践应用:ChatGPT在金融大数据分析中的优势与挑战四、案例分析:ChatGPT在金融大数据分析中的应用案例五、前景展望:ChatGPT在金融大数据分析领域的未来发展《AI时代Python金融大数据分…

Qt5 安装教程 - 跳过登录界面

Qt5 安装教程 - 跳过登录界面 引言一、下载二、安装三、使用四、修改、维护、卸载 引言 Qt5.14.2及以前的版本有离线安装包,无需登录 (老版本连登录界面也无)。之后的版本需登录进行在线安装。 本文以Qt5.12.2版本为例,说明如何跳过登录界面&#xff0c…

如何解决企业内部FTP文件传输速度过慢和安全问题

在数据化时代里,企业内部的文件传输永远是刚需,而因为 FTP协议的简单、易用、广泛支持等优点,让很多企业早期都普遍使用,随着数量量的增多,和对安全的要求越来越高,FTP也暴露出了一些列问题,小编…

算法逆袭之路(1)

11.29 开始跟进算法题进度! 每天刷4题左右 ,一周之内一定要是统一类型 而且一定稍作总结, 了解他们的内在思路究竟是怎样的!! 12.24 一定要每天早中晚都要复习一下 早中午每段一两道, 而且一定要是同一个类型, 不然刷起来都没有意义 12.26/27: 斐波那契数 爬…

使用 Tkinter 制作一个进制转换工具,好用!

在平时工作学习当中,我们经常会编写一些简单的 Python GUI 工具,以此来完成各种各样的自动化任务,比如批量处理文件,批量处理图片等等。当我们进行这些工具的编写之时,往往只关注了功能的实现,而忽略了页面…

Android 跨进程之间通信(IPC)方式之ContentProvider

Android 跨进程之间通信 Android 跨进程之间通信(IPC)方式之BroadcastReceiverAndroid 跨进程之间通信(IPC)方式之ContentProvider 文章目录 Android 跨进程之间通信前言一、ContentProvider 是什么?二、如何利用ContentProvider跨进程通信1.创建自定义ContentProv…

伺服电机:原点复位

一、原点复位概念 原点复位指的是,在驱动器使能时,触发原点复位功能后,电机将主动查找零点,完成定位功能。 那么问题来了,什么是原点,什么是零点? 原点:即机械原点,可…

面向对象知识点

类和对象知识点梳理 1. 类和对象的概念 类是对一类事物的描述,是抽象的、概念上的定义。Java 中定义类的关键字是:class。 具有相同特征和行为的对象抽象成类,类描述了这一类对象的属性和方法: 属性(成员变量&#x…