Zombie ZIP : comment les archives compressées échappent aux antivirus et aux solutions EDR
Célestine Rochefour
Une étude récente révèle que 50 des 51 moteurs antivirus analysés sur VirusTotal n’ont pas détecté le nouveau vecteur d’injection appelé Zombie ZIP. Cette statistique surprenante montre que les cybercriminels disposent désormais d’une méthode fiable pour dissimuler des charges utiles dans des archives qui semblent inoffensives. Dans cet article, nous décortiquons le fonctionnement de la technique, son impact sur les solutions de sécurité en 2026, et les mesures concrètes que vous pouvez mettre en place dès aujourd’hui.
Comprendre la technique Zombie ZIP
Principe de manipulation des en-têtes ZIP
Le format ZIP repose sur un en-tête décrivant le méthode de compression (champ Method) et un CRC permettant de vérifier l’intégrité des données. La technique Zombie ZIP exploite une incohérence : le champ Method indique STORED (0), signifiant que les données sont non compressées, alors qu’en réalité le corps de l’archive utilise l’algorithme Deflate. Les scanners antivirus, qui se fient d’abord à l’en-tête, lisent les octets comme du texte brut et ne trouvent aucune signature malveillante.
« AV engines trust the ZIP Method field. When Method=0 (STORED), they scan the data as raw uncompressed bytes. But the data is actually DEFLATE compressed », explique Chris Aziz, chercheur chez Bombadil Systems.
Pourquoi les scanners sont dupés
Les moteurs d’analyse effectuent généralement une première passe rapide basée sur les métadonnées du fichier. Cette approche accélère le traitement de millions d’archives chaque jour, mais elle crée une zone aveugle exploitable. Lorsque le CRC est volontairement fixé à la somme de contrôle du payload non compressé, les outils d’extraction classiques (WinRAR, 7-Zip) renvoient une erreur « unsupported method », tandis qu’un chargeur malveillant personnalisé ignore l’en-tête et décompresse correctement les données.
Impact sur les solutions de sécurité en 2026
Analyse des résultats VirusTotal
Sur la plateforme VirusTotal, le PoC publié par le chercheur a été soumis à 51 moteurs AV différents. 50 d’entre eux n’ont pas détecté la menace, ce qui représente 98 % d’échecs. Le seul moteur qui a identifié le fichier a signalé une anomalie dans le champ Method, démontrant que la validation profonde du format ZIP est encore rare.
Cas concrets d’infections
Dans la pratique, des groupes de ransomware ont intégré des chargeurs Zombie ZIP dans leurs campagnes de phishing ciblées. Un exemple récent implique un e-mail de type « facture impayée » contenant une pièce jointe « invoice.zip ». La victime, en tentant d’ouvrir l’archive, reçoit le message d’erreur habituel, mais le chargeur silencieux extrait le ransomware qui chiffre les fichiers en moins de deux minutes. Le même jour, le CERT/CC a publié le CVE-2026-0866 pour formaliser la vulnérabilité, rappelant un problème similaire identifié en 2004 (CVE-2004-0935).
« CERT/CC proposes that security tool vendors must validate compression method fields against actual data », indique le bulletin officiel publié le 9 mars 2026.
Détection et mitigation : bonnes pratiques
Validation des champs de compression
- Comparer le champ Method avec le flux de données réel : si le champ indique
STORED, vérifier que le flux n’est pas compressé avec Deflate. - Recalculer le CRC à partir du payload déclaré et le comparer au CRC stocké dans l’en-tête.
- Activer les modes d’inspection approfondie dans les solutions EDR, qui forcent la décompression complète avant l’analyse de signature.
Modes d’inspection renforcés
- Sandbox dynamique : exécuter le chargeur dans un environnement isolé pour observer la décompression réelle.
- Analyse heuristique : détecter les patterns de manipulation d’en-tête, comme un CRC incohérent ou des tailles de fichiers anormales. OpenAI Codex Security détecte plus de 10 000 vulnérabilités critiques en 30 jours
- Mise à jour des signatures : intégrer les indicateurs de Zombie ZIP (hash du PoC, séquence de bits du champ Method=0 suivi de données Deflate) dans les bases de données AV.
Mise en œuvre d’une défense efficace - étapes actionnables
- Inventorier les solutions de sécurité : recenser les AV, EDR et outils de sandbox actuellement déployés.
- Configurer les politiques de filtrage pour bloquer les archives dont le champ Method ne correspond pas au flux détecté.
- Déployer un patch de validation fourni par les fournisseurs (ex. : mise à jour 2026-01 d’Microsoft Defender).
- Former les utilisateurs à signaler immédiatement les messages d’erreur « unsupported method » et à supprimer les archives suspectes. Guide complet pour devenir freelance en cybersécurité en France 2026
- Effectuer des tests de pénétration trimestriels en utilisant le PoC GitHub afin de vérifier la robustesse de la chaîne de détection.
Comparatif des outils d’analyse d’archives
| Outil | Validation du champ Method | Décompression forcée | Détection heuristique | Mise à jour automatisée |
|---|---|---|---|---|
| Microsoft Defender | ✅ (depuis 2026-01) | ✅ | ✅ | ✅ |
| CrowdStrike Falcon | ❌ | ✅ (sandbox) | ✅ | ✅ |
| Kaspersky Endpoint | ✅ | ❌ | ✅ | ✅ |
| Open-source ClamAV | ❌ | ❌ | ❌ | ❌ |
| VirusTotal (API) | ✅ (analyse individuelle) | ✅ (décompression) | ✅ | ✅ |
Conclusion - protéger votre organisation dès maintenant
En 2026, la technique Zombie ZIP montre que la confiance aveugle dans les métadonnées d’archives constitue une faille critique. Cyberattaque bancaire : définition, mécanismes, impacts 2026 et guide de prévention En appliquant les bonnes pratiques de validation des champs de compression, en renforçant les modes d’inspection et en formant vos équipes, vous réduirez significativement le risque de compromission. Agissez dès aujourd’hui : mettez à jour vos solutions, testez les scénarios de Zombie ZIP, et intégrez ces contrôles dans votre politique de sécurité pour rester en avance sur les cybermenaces.
// Exemple simplifié de validation d’une archive ZIP en C#
using (var zip = new ZipArchive(File.OpenRead(path), ZipArchiveMode.Read))
{
foreach (var entry in zip.Entries)
{
// Vérifier le champ Method (0 = STORED, 8 = DEFLATE)
if (entry.CompressionMethod == 0 && entry.Length != entry.CompressedLength)
{
Log.Warn($"Incohérence détectée dans {entry.FullName}");
}
}
}