“内存炸弹”DDOS拒绝服务攻击

news2025/1/21 4:48:48

Windows平台演示

最早的内存炸弹是 zip 炸弹,也称为死亡 zip,它是一种恶意计算机文件,旨在使读取该文件的程序崩溃或瘫痪。zip 炸弹不会劫持程序的操作,而是利用解压缩压缩文件所需的时间、磁盘空间或内存。

zip 炸弹的一个示例是文件 42.zip,它是一个 42KB 的 zip 文件,包含 16 个 5 级深度的嵌套 zip 文件,每个底层存档包含一个 4.3 GB(4,294,967,295 字节;4 GiB - 1 B)的文件,用于总共 4.5 PB(4,503,599,626,321,920 字节;4 PiB - 1 MiB)的未压缩数据。

zip 炸弹的基本原理是,我们生成一个非常大的文件,其中充满 0(或其他值),然后将其压缩为 zip 文件。由于相同内容的文件的压缩比很高,因此生成的 zip 文件非常小。当受害者解压zip文件时,需要消耗大量内存来存储解压后的文件,从而迅速耗尽可用内存并导致目标因内存不足错误而崩溃。

在 Windows 上做一个简单的演示:

fsutil是windows上文件、卷管理命令。以管理员权限启动cmd并执行:C:\Windows\system32>fsutil file createnew test.txt 1073741824
生成1个G的TXT空文件。
接下来使用7z软件将txt压缩成为zip文件,发现压缩后只有1.2MB大小。
在这里插入图片描述
由此我们可以看出,使用zip对全0的文件的压缩比接近851:1。
事实上,任何压缩格式都可能成为内存炸弹,而不仅仅是 zip 文件。
我们可以继续实验,在Windows上使用7zip将填充0的1GB文件压缩成不同的格式。这给了我们以下压缩比:
文件格式及压缩后大小对比:
在这里插入图片描述
不同的文件格式支持不同的压缩算法。例如,zip文件可以使用Deflate、Deflate64、BZIP2、LZMA、PPMd等,每种都有不同的压缩比。上表显示了使用 7zip 默认算法的测试结果。

历史CVE漏洞

1.CVE-2023-3782
这是 OKHttp 库中的一个漏洞。OKHttp支持Brotli压缩算法。如果HTTP响应指定了Brotli压缩,由于OKHttp缺乏对“内存炸弹”攻击的防御,客户端可能会因内存耗尽而崩溃。

漏洞描述:
https://github.com/square/okhttp/issues/7738
漏洞修复:
https://github.com/envoyproxy/envoy/commit/d4c39e635603e2f23e1e08ddecf5a5fb5a706338#diff-88b327a1e72d55d1bb686b3b1f28f594b6b08139968304e6804a808fbb375ff0R26

2.CVE-2022-36114
这是 Rust 包管理器 Cargo 中的一个漏洞。从源代码存储库下载软件包时,Cargo 没有针对“内存炸弹”zip 文件的防御措施,导致恶意制作的 zip 在提取过程中填满磁盘空间。

漏洞描述:
https://github.com/rust-lang/cargo/security/advisories/GHSA-2hvr-h6gw-qrxp
漏洞修复:
https://github.com/rust-lang/cargo/commit/d1f9553c825f6d7481453be8d58d0e7f117988a7

3.CVE-2022-32206
这是流行的网络工具curl中的一个漏洞。版本curl<7.84.0支持“链式”HTTP压缩,这意味着服务器响应可以被压缩多次,可能使用不同的算法。这个“解压链”中接受的“链接”数量是无限的,允许恶意服务器插入几乎无限的压缩步骤。使用这样的解压链可能会导致“内存炸弹”,导致curl最终花费大量内存并因内存不足而出错。

漏洞详细信息:
https://lists.debian.org/debian-lts-announce/2022/08/msg00017.html

4.Sui区块链p2p协议中的拒绝服务漏洞
此漏洞可能会导致单个节点(验证器和全节点)崩溃。利用它非常简单 - 只需启动多个线程向节点发送有效负载即可触发崩溃,无需花费任何汽油费。Sui mainnet_v1.6.3(不含)之前的版本受影响。

漏洞详细信息:
https://beosin.com/resources/%22memory-bomb%22-vulnerability-causes-sui-node-to-crash?lang=zh-HK
补丁代码:
https://github.com/MystenLabs/sui/commit/42d4ad103a21d23fecd7c0271453da41604e71e9

建议

我们可以通过限制解压文件的大小来防御“内存炸弹”攻击。以下方法可以限制解压大小:
一、将解压后的数据大小包含在存档中。从压缩文件中读取该值并检查大小是否满足要求。
二、第一种方法并不能完全解决问题,因为解压后的大小可能会被欺骗。所以我们可以传递一个固定大小的缓冲区来进行解压。如果解压过程中数据超出缓冲区边界,则停止并返回失败。
三、另一种方法是流式解压缩。传递压缩数据的小块,解压缩每个块并累积解压缩的大小。如果大小在任何时候超过阈值,则停止并返回失败。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ConnectionError: Error connecting to Visdom server

pip install visdom python -m visdom.server点击网站即可访问

Modelsim仿真问题解疑三:LM_LICENSE_FILE与Vivado命名冲突

现象: modelsim和Vivado同一时间只能使用一个&#xff0c;另一个会报license相关的错误 原因&#xff1a; modelsim和Vivado的环境变量名称都为LM_LICENSE_FILE&#xff0c;值配置为其中一个时会导致另一个值被覆盖 解决&#xff1a; 对LM_LICENSE_FILE同时配置modelsim和v…

win10环境安装使用docker-maxwell

目的&#xff1a;maxwell可以监控mysql数据变化&#xff0c;并同步到kafka、mq或tcp等。 maxwell和canal区别&#xff1a; maxwell更轻量&#xff0c;canal把表结构也输出了 docker bootstrap可导出历史数据&#xff0c;canal不能 环境 &#xff1a;win10&#xff0c;mysql5…

反编译小程序 SyntaxError: Unexpected token ‘}‘ 异常处理

反编译小程序出现异常&#xff1a; SyntaxError: Unexpected token ‘}’ 网上很多都说使用最新版本的反编译 wxappUnpacker-master 包可以进行解析&#xff0c;但是大神已经停止了更新wxappUnpacker-master 包&#xff1b; 查找了网上大部分的wxappUnpacker-master 包&#…

查看mysql数据库的charset和collation

SELECT * FROM information_schema.SCHEMATA WHERE schema_name test_data; 发现&#xff1a; chaset是utf8mb4&#xff0c;collation是utf8mb4_generic_ci 可笑的是我导入sql脚本&#xff0c;要把脚本中所有的utf8mb4改为utf8&#xff0c;将utf8mb4_generic_ci为utf8_unico…

有哪些适合初学者的编程语言?

C语言 那为什么我还要教你C语言呢&#xff1f;因为我想要让你成为一个更好、更强大的程序员。如果你要变得更好&#xff0c;C语言是一个极佳的选择&#xff0c;其原因有二。首先&#xff0c;C语言缺乏任何现代的安全功能&#xff0c;这意味着你必须更为警惕&#xff0c;时刻了…

日志平台搭建第二章:Linux使用docker安装elasticsearch-head

一、elasticsearch-head的安装启动 #下载镜像 docker pull alivv/elasticsearch-head #启动 docker run -d --name eshead -p 9100:9100 alivv/elasticsearch-head 查看日志 docker logs -f eshead 出现如下证明启动成功 浏览器访问9100端口&#xff0c;出现以下页面也说明…

End-to-end 3D Human Pose Estimation with Transformer

基于Transformer的端到端三维人体姿态估计 摘要 基于Transformer的架构已经成为自然语言处理中的常见选择&#xff0c;并且现在正在计算机视觉任务中实现SOTA性能&#xff0c;例如图像分类&#xff0c;对象检测。然而&#xff0c;卷积方法在3D人体姿态估计的许多方法中仍然保…

vue学习之基本用法

1. 前期准备 安装vs code IDE&#xff0c;vs code 安装 插件 open in brower新建 vue-learning 文件夹vs code IDE打开文件夹 2. 基本用法 创建demo1.html文件,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

Converting Phase Noise to Random Jitter(Cycle-to-Cycle)

借用Phase Noise to Random Jitter(Period)的转换过程推导了Cycle to Cycle random Jitter&#xff0c;一般展频时钟调制,用来评估相邻周期的随机抖动。

AMD锐龙R5600GVEGA7 GPU环境搭建

AMD的GPU驱动很早就合入LINUX开源主线了,非常适合对GPU分析和学习,所以组装了一台搭配AMD锐龙R5 5600G CPU主机,配有VEGA7核显。不过,经过测试,由于是2021年的产品,所以需要安装较新的LINUX发行版,至少是UBUNTU20.04之后的,主机环境简单记录如下: 配置参数: 基础评分…

C语言之指针进阶篇(2)

目录 函数指针 函数名和&函数名 函数指针的定义 函数指针的使用 函数指针陷阱 代码1 代码2 注意 函数指针数组定义 函数指针数组的使用 指向函数指针数组的指针 书写 终于军训圆满结束了&#xff0c;首先回顾一下指针进阶篇&#xff08;1&#xff09;主要是…

C语言实现三字棋

实现以下&#xff1a; 1游戏不退出&#xff0c;继续玩下一把&#xff08;循环&#xff09; 2应用多文件的形式完成 test.c. --测试游戏 game.c -游戏函数的实现 game.h -游戏函数的声明 (2)游戏再走的过程中要进行数据的存储&#xff0c;可以使用3*3的二维数组 char bor…

【送书活动】揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

Modelsim仿真问题解疑二:ERROR: [USF-ModelSim-70]

现象&#xff1a;在Vivado中已配置modelsim为仿真工具后&#xff0c;运行仿真&#xff0c;报错USF-ModelSim-70和ERROR: [Vivado 12-4473] 详细报错内容如下 ERROR: [USF-ModelSim-70] compile step failed with error(s) while executing C:/Users/ZYP_PC/Desktop/verilog_t…

多线程与高并发——并发编程(7)

文章目录 七、JUC并发工具1 CountDownLatch应用&源码分析1.1 CountDownLatch介绍1.2 CountDownLatch应用1.3 CountDownLatch源码分析1.3.1 有参构造1.3.2 await 方法1.3.3 countDown方法2 CyclicBarrier应用&源码分析2.1 CyclicBarrier介绍2.2 CyclicBarrier应用2.3 Cy…

python DVWA文件上传POC练习

首先&#xff0c;构造POC我们首先要明白漏洞利用的流程&#xff0c;然后要知道请求包的格式&#xff0c;然后才能针对性的POC 这里先选择低难度的文件上传&#xff0c;低难度的是没有任何过滤可以直接上传的&#xff0c;先上传一个php一句话木马&#xff0c;使用burpsuite抓包 …

go channel实践与源码探索(初始化、发送消息、接收消息、关闭)

文章目录 概要一、并发编程1.1、Actor模型1.2、CSP模型 二、Go Channel实践三、源码分析3.1、初始化3.2、发送消息3.3、接收消息3.4、关闭通道 总结 概要 通道&#xff08;Channel&#xff09;是Go语言提供的协程之间通信与同步的方式。我们知道在并发编程&#xff08;多进程、…

mysql检查表、分析表、优化表

MySQL提供了分析表、检查表和优化表的语句。分析表主要是分析关键字的分布&#xff0c;检查表主要是检查表是否存在错误&#xff0c;优化表主要是消除删除或者更新造成的空间浪费。 文章目录 概述分析表检查表优化表 概述 对数据库的管理常规就是进行预防性的维护&#xff0c;…

SSM - Springboot - MyBatis-Plus 全栈体系(五)

第二章 SpringFramework 四、SpringIoC 实践和应用 2. 基于 XML 配置方式组件管理 2.5 实验五&#xff1a;高级特性&#xff1a;FactoryBean 特性和使用 2.5.1 FactoryBean 简介 FactoryBean 接口是Spring IoC容器实例化逻辑的可插拔性点。 用于配置复杂的Bean对象&#x…