文章摘要
这篇文章介绍了一种新型非递归式zip炸弹的构造方法,通过巧妙重叠zip容器内文件实现超高压缩比。这种炸弹无需依赖递归解压,单次解压即可实现平方级膨胀,在zip格式极限下可达2800万倍压缩比(10MB→281TB)。它仅使用常见的DEFLATE算法,兼容大多数zip解析器。
文章总结
更高效的ZIP炸弹技术解析
作者David Fifield在本文中详细介绍了一种新型非递归ZIP炸弹的构造技术。这种技术通过巧妙利用ZIP文件格式的特性,实现了单次解压即可触发的超高压缩比(最高达2800万倍),突破了传统递归式ZIP炸弹的技术局限。
核心技术创新
文件重叠技术:
- 通过多个中央目录头指向同一个压缩数据块(内核),避免重复存储
- 初始版本存在文件名不匹配的兼容性问题
本地文件头引用技术:
- 使用DEFLATE非压缩块"引用"后续文件头
- 每个文件(除最后一个)都包含下一个文件的文件头数据
- 兼容性更好,但会略微降低压缩效率
性能优化
- 内核压缩:使用专用工具bulk_deflate实现最高1032:1的DEFLATE压缩比
- 文件名优化:采用36字符短文件名(0-9,A-Z)
- CRC-32计算:通过矩阵乘法实现高效批量校验
- Zip64扩展:支持超过4PB的超大文件输出(46MB→4.5PB)
实际案例
- zbsm.zip(42KB→5.5GB)
- zblg.zip(10MB→281TB)
- zbxl.zip(46MB→4.5PB,Zip64格式)
兼容性与防御
- 兼容大多数标准ZIP解析器
- 不兼容流式解析器
- 检测方法:检查文件重叠现象
- 建议防御措施:资源限制而非特征检测
延伸应用
该技术可应用于PDF等使用类似容器格式的文件类型。作者提供了开源工具供研究和防御测试使用。
(注:本文保留了技术细节,删减了版本更新记录、致谢等非核心内容,压缩了兼容性表格等次要信息)
评论总结
以下是评论内容的总结:
zip炸弹的防御与检测
- Debian的
unzip工具通过补丁检测重叠文件来防御zip炸弹:"error: invalid zip file with overlapped components (possible zip bomb)" - 现代扫描软件已改进,但用户仍好奇检测机制:"How does one detect a zip bomb?"
- Debian的
压缩炸弹的变体探讨
- 提议开发基于其他压缩协议(如HTTP响应压缩)的炸弹:"Can we have a zip bomb but with a compressed http response?"
- 尝试使用Brotli压缩炸弹但未成功,因恶意客户端仅支持gzip:"malicious actors are all using clients that only accept gzip"
技术怀旧与创新
- 回忆ZIP文件目录末尾设计的时代局限性:"Back in the day it meant... a partial download would be totally useless"
- 提出反向zip炸弹概念(消耗CPU时间而非内存):"A really big .zip file... bomb the CPU time instead of memory"
理论延伸
- 将解压缩类比为虚拟机代码执行,建议作为AI基准测试:"Decompression is equivalent to executing code... an interesting AI benchmark"
关键引用保留:
- "error: invalid zip file with overlapped components (possible zip bomb)"
- "Can we have a zip bomb but with a compressed http response?"
- "malicious actors are all using clients that only accept gzip"
- "A really big .zip file... bomb the CPU time instead of memory"