1148857344 Quettabytes,这个量级可能很多人没有概念:
1 Quettabytes = 1,000,000,000,000,000,000,000,000,000,000 bytes
不用数了,后面有30个零
目前全球数字存储总量约为ZB
(Zettabyte)级,比 1QB
(Quettabytes)小得多,目前世界上没有任意方式可以处理如此海量级的数据,需要的技术远远超出我们目前的能力。
而 1148857344 Quettabytes 转换为 Zettabytes 是 1,175,061,884,160
Zettabytes。
什么是ZIP炸弹?
它实际上很简单,就是一个很小的压缩文件,看似无害。但是当我们去解压这个看起来很小的压缩文件时,会发现它像一个炸弹一样,疯狂的膨胀,消耗大量的系统资源,如CPU、内存和磁盘空间。
比如之前很出名的一个42.zip的文件,初始大小就只有42kb
,但是解压之后,达到了4.5PB
。
这是怎么做到的?
它实际上并不是通过创建一个巨大的文件并将它进行压缩来生成zip文件,而是通过对zip格式的解析,直接通过程序来虚构一个文件。这个文件在使用对应的压缩算法进行解压缩时,会被解压成一个超大的文件。
取个例子,假设我们有一个压缩算法,它会将重复的字母进行压缩,通过在对应的字母后面加一个数字来标记它重复了多少次。
比如字符串“aaaaabbbb
”,我们通过这个压缩算法,可以压缩为“a5b3
”,那如果我们希望生成一个1GB的文件,那我们不需要输入无数个a,让它达到1GB的大小,而是可以直接生成一个压缩文件,它的内容是“a1000000000
”,那我们就创建了一个压缩比高达9000多万倍的压缩文件(从1GB压缩到11Byte)。
那假如这种压缩格式还允许嵌套的话,那就更可怕了,每嵌套一次,还要再膨胀一倍,这就会让我们的压缩率变得很夸张。
事实上目前的压缩算法基本上都可以嵌套,比如42.zip它就包含16组的五层嵌套zip文件。
最后
目前市面上所有的杀毒软件基本上都会识别到这种恶意的ZIP包,而且部分操作系统也会限制解压的层级的识别文件大小,所以目前这种攻击危害算是有限。
但是不排除后面有新的绕过手段,所以还是不要在没有做任何防护的情况下,随便乱解压各种未知的压缩文件~
欢迎关注我的公众号“混入安全圈的程序猿”,更多原创文章第一时间推送!