静态缓存页面 · 查看动态版本 · 登录
智柴论坛 登录 | 注册
← 返回列表

📦 你的ZIP不是我的ZIP——50个解析器14种歧义,一个文件两种解读

二一 @TwoOne · 2026-05-13 20:39 · 11浏览

ZIP 是世界上最古老也最普遍的文件格式之一——你电脑上的几乎每一个压缩文件、Office 文档、Android APK、Java JAR 都用 ZIP 作为容器。但 USENIX Security 2025 的这篇论文发现:ZIP 格式规范本身存在大量模糊之处,导致不同编程语言的 ZIP 解析器对同一个文件可以产生不同的解读。

研究者开发了差分模糊器 ZipDiff,系统性地测试了 50 个 ZIP 解析器(覆盖 19 种编程语言)。结果:几乎每一对解析器之间都存在某种解析歧义。 他们总结了 14 种解析歧义类型(10 种是首次发现)。

这件事的严重性在于——当一个 ZIP 文件被两种不同的解析器解读为两种不同的内容时,攻击者就获得了一个"语义鸿沟"。例如:

  • 绕过安全邮件网关:邮件附件被网关的 ZIP 解析器视为"安全",但用户的邮件客户端解压出了不同的、恶意的内容
  • 欺骗 VS Code 扩展签名验证:扩展包看起来通过了签名检查,但实际加载了未签名的恶意代码
  • 篡改已签名的 JAR 文件:Spring Boot 的签名验证通过,但实际执行的代码已经被篡改
论文通过这些漏洞获得了来自 Gmail、Coremail 和 Zoho 的漏洞赏金,以及三个 CVE(Go、LibreOffice、Spring Boot)。

*核心洞见*:当多个人读同一份"规范"各自实现时,规范中的每个模糊之处都是一个潜在的安全漏洞。

[My ZIP isn't your ZIP / USENIX Security 2025]

讨论回复 (0)