Hacker News 中文摘要

RSS订阅

更优的压缩炸弹 -- A Better Zip Bomb

文章摘要

这篇文章介绍了一种新型非递归式zip炸弹的构造方法,通过巧妙重叠zip容器内文件实现超高压缩比。这种炸弹无需依赖递归解压,单次解压即可实现平方级膨胀,在zip格式极限下可达2800万倍压缩比(10MB→281TB)。它仅使用常见的DEFLATE算法,兼容大多数zip解析器。

文章总结

更高效的ZIP炸弹技术解析

作者David Fifield在本文中详细介绍了一种新型非递归ZIP炸弹的构造技术。这种技术通过巧妙利用ZIP文件格式的特性,实现了单次解压即可触发的超高压缩比(最高达2800万倍),突破了传统递归式ZIP炸弹的技术局限。

核心技术创新

  1. 文件重叠技术

    • 通过多个中央目录头指向同一个压缩数据块(内核),避免重复存储
    • 初始版本存在文件名不匹配的兼容性问题
  2. 本地文件头引用技术

    • 使用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等使用类似容器格式的文件类型。作者提供了开源工具供研究和防御测试使用。

(注:本文保留了技术细节,删减了版本更新记录、致谢等非核心内容,压缩了兼容性表格等次要信息)

评论总结

以下是评论内容的总结:

  1. zip炸弹的防御与检测

    • Debian的unzip工具通过补丁检测重叠文件来防御zip炸弹:"error: invalid zip file with overlapped components (possible zip bomb)"
    • 现代扫描软件已改进,但用户仍好奇检测机制:"How does one detect a zip bomb?"
  2. 压缩炸弹的变体探讨

    • 提议开发基于其他压缩协议(如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"
  3. 技术怀旧与创新

    • 回忆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"
  4. 理论延伸

    • 将解压缩类比为虚拟机代码执行,建议作为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"