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

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.mzph.cn/news/74185.shtml

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

相关文章

关于 RK3568的linux系统killed用户应用进程(用户现象为崩溃) 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/132710642 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

Linux权限的概念和管理

Linux权限的概念和管理 1. Linux权限的概念2. Linux权限管理2.1 文件访问者的分类&#xff08;人&#xff09;2.2 文件类型和访问权限&#xff08;事物属性&#xff09;2.2.1 文件类型2.2.2 基本权限 2.3 文件权限值的表示方法2.4文件访问权限的相关设置方法1. chmod&#xff0…

ESP32用作经典蓝牙串口透传模块与手机进行串口通信

ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙&#xff08;BR/EDR&#xff09;、低功耗蓝牙&#xff08;BLE&#xff09;和 Wi-Fi&#xff0c;具…

linux修改最大线程数却未生效的原因

可能是没有重新对新文件进行编译 更改一个进程所能创建的最大进程数之前 更改一个进程所能创建的最大进程数之后 测试代码 #include <iostream> #include <unistd.h> #include <sys/wait.h> #include <string.h> #include <stdio.h> #include…

数据库相关基础知识

第一章 概念 1、数据&#xff1a;描述事物的符号记录称为数据。特点&#xff1a;数据和关于数据的解释不可分。 2、数据库&#xff1a;长期存储在计算机内、有组织、可共享的大量的数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储&#xff0c;具有较小的冗余度、…

思维导图怎么变成ppt?4个思维导图一键生成ppt的方法

做好的思维导图如何变成一份ppt&#xff1f;本文罗列了4个可行方法&#xff0c;一起来看看吧。 一 直接复制粘贴 这是最简单的方法&#xff0c;虽然这样可能会花费一些时间&#xff0c;但可以确保内容排版和布局与你想要的一致。当然&#xff0c;我们大可使用更高效的方法。…

Pycharm创建项目时如何自动添加头部信息

1.打开PyCharm&#xff0c;选择File--Settings 2.依次选择Editor---Code Style-- File and Code Templates---Python Script 3..添加头部内容 可以根据需要添加相应的信息 #!/usr/bin/python3可用的预定义文件模板变量为&#xff1a;$ {PROJECT_NAME} - 当前项目的名称。$ {NAM…

解决Maven依赖下载问题:从阿里云公共仓库入手

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

用递归实现字符串逆序(不使用库函数)

文章目录 前言一、题目要求二、解题步骤1.大概框架2.如何反向排列&#xff1f;3.模拟实现strlen4.实现反向排列5.递归实现反向排列 总结 前言 嗨&#xff0c;亲爱的读者们&#xff01;我是艾老虎尤&#xff0c;今天&#xff0c;我们将探索一个题目&#xff0c;这个题目对新手非…

数据库服务器是什么意思?数据库服务器有哪些?

数据库服务器是什么意思?现在市场上有很多的服务器的类型&#xff0c;比如数据库服务器&#xff0c;但是很多人对数据库服务器是什么意思?数据库服务器有哪些并不是很熟悉&#xff0c;那么&#xff0c;聚名企服为您详解一下。 一&#xff1a;数据库服务器是什么意思 数据库服…

开发板插入sd/tf卡后自动挂载

测试平台-hisi-dv500 要在Linux系统上实现TF卡&#xff08;Micro SD卡&#xff09;插入后自动挂载&#xff0c;类似于SD卡/TF卡插入也会触发内核事件,你可以使用udev工具来监控并处理这些事件,创建一个udev规则文件来捕获TF卡插入事件. 1:创建一个udev规则文件&#xff0c;例…

Spring 6.X IoC 容器

目录 一、Spring IoC 容器和 Bean 简介1.1、容器概述1.3、使用 一、Spring IoC 容器和 Bean 简介 下面主要介绍 Spring 框架对控制反转 (IoC) 原理的实现 首先要说明的是&#xff1a;IoC 也称为依赖注入&#xff0c;这是一个过程。 其次依赖项的定义&#xff1a;对象仅通过构造…

企业架构LNMP学习笔记23

1、隐藏版本号&#xff1a; Nginx对外提供服务&#xff0c;为了避免被针对某个版本的漏洞进行攻击。经常做法是隐藏掉软件的版本信息&#xff0c;提供一定的安全性。 server_tokens off; https和CA&#xff1a; 1&#xff09;基于SSL CA证书的公私钥的安全性。 CA是需要生成…

【公网远程手机Android服务器】安卓Termux搭建Web服务器

目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的Linux 环境&#xff0c;能够实现Linux下的许多基本操作&#xff0c;不需要root权限…

Excel VSTO开发8 -相关控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 8 相关控件 在VSTO开发中&#xff0c;Ribbon&#xff08;或称为Ribbon UI&#xff09;是指Office应用程序中的那个位于顶部的带有选…

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

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

el-table自适应列宽实现

【背景小记】 el-table的el-table-column如果不指定width的话&#xff0c;会自动设定一个宽度&#xff0c;表格内容会自动换行&#xff0c;对强迫症用户来说非常不友好&#xff0c;为了追求完美用户体验&#xff0c;所以这里需要实现两个效果&#xff1a; 1. 强制表格内容不换…

JSP SSM 成果展示系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 冬奥建设成果展示系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的 源代码和数据库&#xff0c;系统主…

PHP教学质量评估系统Dreamweaver开发mysql数据库web结构php编程计算机网页代码

一、源码特点 PHP教学质量评估系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码 https://download.csdn.net/download/qq_41221322/88301983 论文 https://down…