ZIP 格式混淆技术,可绕过 98% 的杀毒引擎。
CVE-2026-0866 | VU#976247 | 发布于 2026 年 3 月 10 日
创建一个 ZIP 文件,其中:
Compression Method = 0 (STORED)
Actual data = DEFLATE compressed
CRC-32 = Checksum of uncompressed payload
AV Engine: Reads Method 0 → Scans compressed noise → No detection
Attacker: Ignores Method field → Decompresses as DEFLATE → Recovers payload
| 文件 | 技术 | VirusTotal |
|---|---|---|
| baseline.zip | 有效 ZIP | 55/67 |
| method_mismatch.zip | Zombie ZIP | 1/66 |
98% 的绕过率。相同的载荷。相同的字节。不同的容器。
# Generate a Zombie ZIP
python3 zombie_zip.py
# Upload method_mismatch.zip to VirusTotal
# Observe 1/51 detection vs 55/67 for baseline
# Recover payload programmatically
python3 loader_poc.py method_mismatch.zip
# Outputs byte-identical EICAR (SHA-256: 275a021b...)
Container.py 将 Zombie ZIP 技术泛化为一款独立的打包器/解包器,可使用 .cpack 格式处理任意文件。
Container.py 会获取任意文件,对其内容进行 DEFLATE 压缩,然后将其写入声明为 STORED(Method=0)的 ZIP 归档中。结果是生成一个 .cpack 文件——一种非官方容器格式,可保护文件内容免遭检查。
与原始 Zombie ZIP PoC 不同,.cpack 文件中的 CRC 是基于压缩后(DEFLATE)字节计算的,而非原始载荷。这意味着该归档在结构上是有效的——没有 CRC 错误,没有损坏标志。其内容对于除解包器之外的任何工具而言都是不透明的。
| 文件 | 技术 | VirusTotal |
|---|---|---|
| eicar.com | 原始 EICAR 载荷 | 55/67 |
| eicar.com.cpack | 容器打包 | 0/62 |
0/62。全球每个杀毒引擎都专门设计用于检测的文件,变得不可见。
# Requires PyQt6
pip install PyQt6
# Launch the GUI
python3 Container.py
filename.cpack(打包).cpack 文件 → 恢复原始文件(解包)底层技术已被多方声明不构成安全问题。CERT/CC 于 2026 年 3 月 18 日判定 Zombie ZIP 技术"不构成有效漏洞"且"不会绕过或影响任何隐式或显式安全控制。" Cisco 将其归类为"加固建议。" 多名研究人员已公开表示这不是一个漏洞。
既然这已被声明为非问题,此工具只是让您能够使用一项没有安全影响的技术来保护您的文件和数据免受审查。
EICAR 的 0/62 检测结果表明,其影响可能被低估了。
zombie_zip.py - 生成脚本method_mismatch.zip - 预生成的 PoC(包含 EICAR)baseline.zip - 用于对比的有效 ZIPloader_poc.py - 演示以编程方式恢复载荷Container.py - 适用于任意文件的 GUI 打包器/解包器(.cpack 格式)杀毒引擎信任 ZIP 的 Method 字段。当 Method=0(STORED)时,它们会将数据作为原始未压缩字节进行扫描。但实际上数据是经过 DEFLATE 压缩的——因此扫描器看到的是压缩噪声,找不到任何签名。
在原始 Zombie ZIP PoC 中,CRC 被设置为未压缩载荷的校验和,从而造成不匹配,导致标准解压工具(7-Zip、unzip、WinRAR)报告错误或解压出损坏的输出。
Container.py 完全避免了这一问题。由于 zipfile.ZipFile 是基于正在写入的字节(即 DEFLATE 压缩数据)计算 CRC,CRC 与存储的内容完全匹配。标准工具可以无错误地打开归档。它们能成功解压出压缩噪声。没有 CRC 错误。没有损坏标志。杀毒软件扫描噪声后返回"干净"结果。
然而,一个专门构建的加载器,将存储的数据按 DEFLATE 解压,即可完美恢复载荷。Container.py 的解包函数演示了这一点——使用标准 zlib.decompressobj 配合原始 DEFLATE(wbits=-15)。
漏洞在于扫描器绕过:安全控制声称"未发现恶意软件",而恶意软件就在其中,且可轻易恢复。
这不是一个面向终端用户的解压漏洞。它是一种分阶段投递/走私技术:
.cpack 容器这与既有的恶意软件投递模式(ISO 走私、HTML 走私、CAB 滥用)一致,攻击者使用自定义加载器而非消费级解压工具。
.cpack。Chris Aziz - Bombadil Systems
MIT - 仅限授权的安全研究使用。