
Некорректный ZIP-архив, который обходит обнаружение антивирусом, объявляя Method=0 (stored), но при этом содержащий полезную нагрузку, сжатую DEFLATE.
Техника подмены формата ZIP, обходящая 98% антивирусных движков.
CVE-2026-0866 | VU#976247 | Опубликовано 10 марта 2026 года
Создайте 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 и записывает его в ZIP-архив, объявленный как STORED (Method=0). В результате получается файл .cpack — неофициальный формат контейнера, который защищает содержимое файлов от просмотра.
В отличие от исходного PoC Zombie ZIP, CRC в файле .cpack вычисляется по сжатым (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 18 марта 2026 года определил, что техника Zombie ZIP «не представляет собой действительную уязвимость» и «не обходит и не влияет на какие-либо подразумеваемые или явные средства контроля безопасности». Cisco классифицировала её как «рекомендацию по усилению защиты». Несколько исследователей публично заявили, что это не уязвимость.
Поскольку это было объявлено не-проблемой, этот инструмент просто позволяет вам защитить ваши файлы и данные от постороннего изучения, используя технику, не имеющую последствий для безопасности.
Результат 0/62 на EICAR позволяет предположить, что последствия могли быть преуменьшены.
zombie_zip.py - скрипт-генераторmethod_mismatch.zip - предварительно сгенерированный PoC с EICARbaseline.zip - корректный ZIP для сравненияloader_poc.py - демонстрирует программное восстановление нагрузкиContainer.py - графический упаковщик/распаковщик для произвольных файлов (формат .cpack)Антивирусные движки доверяют полю Method в ZIP. Когда Method=0 (STORED), они сканируют данные как сырые несжатые байты. Но данные на самом деле сжаты DEFLATE — поэтому сканер видит сжатый шум и не находит сигнатур.
В исходном PoC Zombie ZIP значение CRC устанавливается равным контрольной сумме несжатой нагрузки, что создаёт несоответствие, из-за которого стандартные инструменты извлечения (7-Zip, unzip, WinRAR) сообщают об ошибках или извлекают повреждённые данные.
Container.py полностью избегает этого. Поскольку zipfile.ZipFile вычисляет CRC по записываемым байтам (данным, сжатым DEFLATE), CRC совпадает с сохранённым значением. Стандартные инструменты открывают архив без ошибок. Они успешно извлекают сжатый шум. Нет ошибок CRC. Нет флагов повреждения. Антивирус сканирует шум и сообщает «чисто».
Однако специально созданный загрузчик, который декомпрессирует сохранённые данные как DEFLATE, безупречно восстанавливает нагрузку. Функция распаковки Container.py демонстрирует это — стандартный zlib.decompressobj с raw DEFLATE (wbits=-15).
Уязвимость — это обход сканера: средства контроля безопасности утверждают, что «вредоносное ПО отсутствует», хотя вредоносное ПО присутствует и тривиально восстанавливается.
Это не уязвимость извлечения для конечного пользователя. Это техника многоэтапной доставки / скрытой пересылки:
.cpackЭто согласуется с устоявшимися схемами доставки вредоносного ПО (ISO-smuggling, HTML-smuggling, злоупотребление CAB), когда злоумышленники используют собственные загрузчики, а не потребительские инструменты извлечения.
.cpack.Chris Aziz - Bombadil Systems
MIT - Только для авторизованных исследований в области безопасности.