
Détection basée sur le ML des attaques d'évasion d'en-tête d'archives ZIP Zombie (CVE-2026-0866)
Un scanner défensif pour le contournement des métadonnées structurelles dans les archives ZIP.
ZombieGuard détecte les contradictions entre les en-têtes de fichiers locaux ZIP, les enregistrements du répertoire central et les caractéristiques des charges utiles. Ces contradictions peuvent être utilisées pour faire apparaître le contenu d'une archive comme vide ou inoffensif pour un analyseur tandis qu'un autre analyseur atteint toujours la charge utile.
Il combine un analyseur ZIP borné avec un petit modèle LightGBM. Il n'extrait ni n'exécute le contenu des archives.
[!IMPORTANT] ZombieGuard détecte des signaux de contournement d'archive, pas des logiciels malveillants. Un résultat propre ne prouve pas que les fichiers contenus dans une archive sont sûrs.
ZombieGuard prend en charge Python 3.11 et 3.12.
git clone https://github.com/mdshoaibuddinchanda/zombieguard.git
cd zombieguard
python -m pip install .
zombieguard scan suspicious.zip --include-features
Le modèle de version est installé avec le paquet. Utilisez zombieguard scan --help pour la limite de taille d'entrée, la sortie JSON/SARIF et les options d'analyse de répertoire.
Pour le développement, installez le dépôt en mode éditable :
python -m pip install -e ".[dev]"
python -m pytest
ZombieGuard traite chaque ZIP comme un problème de cohérence plutôt que de rechercher des signatures de logiciels malveillants :
Le scanner rapporte un verdict accompagné de codes de raison justificatifs. Les échecs d'analyse sont signalés comme des conditions indéterminées ou suspectes ; ils ne sont jamais silencieusement convertis en résultat propre.
Octets ZIP non fiables
│
▼
Analyseur structurel borné ──► échecs explicites d'analyse/de limite
│
▼
Caractéristiques de cohérence par entrée
│
▼
Modèle LightGBM versionné
│
▼
verdict + score + raisons
Les erreurs de validation structurelle produisent un résultat explicite non analysable. Les archives analysées avec succès sont notées par le modèle, et les incohérences observées sont renvoyées comme codes de raison. Les métadonnées du modèle enregistrent le schéma des caractéristiques, la configuration d'entraînement, les hachages des sources et la somme de contrôle du modèle.
L'évaluation de la version est volontairement étroite et reproductible. Elle ne prétend pas à la détection de logiciels malveillants dans le monde réel ni à une généralisation multi-formats.
| Propriété | Protocole de version |
|---|---|
| Portée | Benchmark de caractéristiques de contournement structurel ZIP à positifs synthétiques |
| Corpus éligible | 1 150 positifs générés et 1 568 lignes de caractéristiques bénignes dédupliquées et étiquetées |
| Ensemble de retenue positif | Exclusion d'une variante d'attaque complète par pli (8 variantes) |
| Ensemble de retenue bénin | Partition déterministe SHA-256 ; chaque échantillon est évalué une fois |
| Seuil de décision | Calibrage groupé imbriqué sur les lignes d'entraînement externes uniquement ; budget de 0,5 % de faux positifs bénins |
| Prédictions rapportées | Prédictions des plis externes uniquement ; les lignes retenues ne définissent jamais leur seuil |
| Exclus des affirmations | Étiquettes positives dérivées de MalwareBazaar ou non vérifiées autrement |
| Intervalle de confiance | Intervalles de Wilson à 95 % accompagnant les métriques agrégées |
L'artefact actuel rapporte :
| Métrique | Résultat | Intervalle de Wilson à 95 % |
|---|---|---|
| Exactitude | 99,89 % (2 715 / 2 718) | 99,68–99,96 % |
| Précision | 99,74 % | 99,24–99,91 % |
| Rappel | 100 % (1 150 / 1 150) | 99,67–100 % |
| F1 | 99,87 % | — |
| ROC-AUC | 99,90 % | — |
| Taux de faux positifs | 0,191 % (3 / 1 568) | 0,065–0,561 % |
La matrice de confusion est TN=1 565, FP=3, FN=0, TP=1 150. Les résultats faisant autorité se trouvent dans artifacts/metrics.json ; ce fichier contient également les résumés par pli et par variante, les hachages des sources de données, les assertions de fuite, la somme de contrôle du modèle et la configuration exacte. Si une métrique est utilisée dans un CV, un article ou une présentation, citez sa portée comme évaluation de caractéristiques synthétiques imbriquées avec exclusion d'une variante par pli.
Les lignes négatives comprennent 686 lignes de caractéristiques dérivées de PyPI, 478 négatives difficiles générées, 400 petites bénignes générées et 4 lignes de caractéristiques dérivées d'Office. Les familles de sources négatives sont réparties entre les plis plutôt que retenues en tant que familles. Les intervalles décrivent l'incertitude au niveau des lignes dans ce benchmark ; ils n'estiment ni l'incertitude de déploiement ni le décalage de domaine. La sortie LightGBM est rapportée comme un score non calibré, pas comme une probabilité. La politique de seuil est un point de fonctionnement de développement évalué avec des plis imbriqués ; de nouvelles archives bénignes analysées par la version actuelle restent nécessaires avant de considérer le taux de faux positifs mesuré comme une preuve en production.
Pourquoi utiliser des positifs synthétiques ? Les exemples publics et vérifiés de manière indépendante de cette technique étroite de contournement sont rares. La génération rend chaque mutation structurelle explicite et reproductible. La performance synthétique prouve que le détecteur reconnaît ces mutations ; elle ne remplace pas un benchmark du monde réel étiqueté de manière indépendante.
Consultez la fiche de données et la fiche de modèle pour la provenance, la sémantique des étiquettes et les modes de défaillance.
Installez les dépendances principales et vérifiez les artefacts validés. Les étapes supplémentaires de génération et d'actualisation reproduisent tous les positifs synthétiques sûrs et confirment que leurs caractéristiques validées correspondent toujours à l'analyseur actuel avant le réentraînement :
python -m pip install -e .
python -m zombieguard.evaluate --check
python data/scripts/generate_zombie_samples.py
python scripts/refresh_synthetic_features.py
python -m zombieguard.evaluate --train --check
L'entraînement lit les tables de caractéristiques et d'étiquettes validées et écrit :
src/zombieguard/assets/zombieguard_lgbm.txt — modèle LightGBM portable ;src/zombieguard/assets/zombieguard_lgbm.metadata.json — schéma et métadonnées d'intégrité ;artifacts/metrics.json — rapport d'évaluation lisible par machine.