
Archivo ZIP malformado que evade la detección de antivirus al declarar Method=0 (almacenado) mientras contiene una carga útil comprimida con DEFLATE.
Técnica de confusión de formato ZIP que evade el 98 % de los motores antivirus.
CVE-2026-0866 | VU#976247 | Publicado el 10 de marzo de 2026
Crea un archivo ZIP donde:
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
| Archivo | Técnica | VirusTotal |
|---|---|---|
| baseline.zip | ZIP válido | 55/67 |
| method_mismatch.zip | Zombie ZIP | 1/66 |
98 % de evasión. Mismo payload. Mismos bytes. Contenedor diferente.
# 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 generaliza la técnica Zombie ZIP en un empaquetador/desempaquetador independiente para archivos arbitrarios mediante el formato .cpack.
Container.py toma cualquier archivo, comprime su contenido con DEFLATE y lo escribe en un archivo ZIP declarado como STORED (Method=0). El resultado es un archivo .cpack — un formato de contenedor no oficial que protege el contenido de los archivos frente a la inspección.
A diferencia del PoC original de Zombie ZIP, el CRC en un archivo .cpack se calcula sobre los bytes comprimidos (DEFLATE), no sobre el payload original. Esto significa que el archivo es estructuralmente válido — sin errores de CRC, sin indicadores de corrupción. El contenido es simplemente opaco para cualquier cosa que no sea el desempaquetador.
| Archivo | Técnica | VirusTotal |
|---|---|---|
| eicar.com | Payload EICAR en bruto | 55/67 |
| eicar.com.cpack | Empaquetado con Container | 0/62 |
0/62. El único archivo que todos los motores antivirus del mundo están diseñados específicamente para detectar, vuelto invisible.
# Requires PyQt6
pip install PyQt6
# Launch the GUI
python3 Container.py
filename.cpack (empaquetado).cpack → recupera el archivo original (desempaquetado)La técnica subyacente ha sido declarada por múltiples partes como algo que no constituye un problema de seguridad. CERT/CC determinó el 18 de marzo de 2026 que la técnica Zombie ZIP "no constituye una vulnerabilidad válida" y "no evade ni afecta a ningún control de seguridad implícito o explícito." Cisco la clasificó como una "sugerencia de endurecimiento." Múltiples investigadores han declarado públicamente que esto no es una vulnerabilidad.
Dado que esto ha sido declarado un no-problema, esta herramienta simplemente te permite proteger tus archivos y datos del escrutinio mediante una técnica sin implicaciones de seguridad.
El 0/62 en EICAR sugiere que las implicaciones pueden haber sido subestimadas.
zombie_zip.py - Script generadormethod_mismatch.zip - PoC pregenerado con EICARbaseline.zip - ZIP válido para comparaciónloader_poc.py - Demuestra la recuperación programática del payloadContainer.py - Empaquetador/desempaquetador GUI para archivos arbitrarios (formato .cpack)Los motores antivirus confían en el campo Method del ZIP. Cuando Method=0 (STORED), escanean los datos como bytes sin comprimir. Pero los datos están realmente comprimidos con DEFLATE — por lo que el escáner ve ruido comprimido y no encuentra firmas.
En el PoC original de Zombie ZIP, el CRC se establece con el checksum del payload sin comprimir, creando un desajuste que provoca que las herramientas de extracción estándar (7-Zip, unzip, WinRAR) reporten errores o extraigan una salida corrupta.
Container.py evita esto por completo. Dado que zipfile.ZipFile calcula el CRC sobre los bytes que se escriben (los datos comprimidos con DEFLATE), el CRC coincide con lo almacenado. Las herramientas estándar abren el archivo sin errores. Extraen el ruido comprimido correctamente. Sin errores de CRC. Sin indicadores de corrupción. El antivirus escanea el ruido y devuelve un resultado limpio.
Sin embargo, un cargador de propósito específico que descomprime los datos almacenados como DEFLATE recupera el payload a la perfección. La función de desempaquetado de Container.py lo demuestra — un zlib.decompressobj estándar con DEFLATE puro (wbits=-15).
La vulnerabilidad es la evasión de escáneres: los controles de seguridad afirman "no hay malware presente" mientras el malware está presente y es trivialmente recuperable.
Esta no es una vulnerabilidad de extracción para el usuario final. Es una técnica de entrega por etapas / contrabando:
.cpackEsto es consistente con los patrones establecidos de entrega de malware (contrabando ISO, contrabando HTML, abuso de CAB) donde los atacantes utilizan cargadores personalizados en lugar de herramientas de extracción para el consumidor.
.cpack.Chris Aziz - Bombadil Systems
MIT - Solo para investigación de seguridad autorizada.