
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.
L'artefact actuel rapporte :
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.L'intégration continue exécute le linting, l'audit de sécurité des dépendances et statique, la compilation en octets, les tests avec couverture, les constructions de paquets sur Python 3.11 et 3.12, l'alignement générateur/analyseur, la vérification des artefacts validés et un test fumée isolé d'entraînement et de vérification.
src/zombieguard/ paquet scanner installable et ressources de version
tests/ tests unitaires, adversariaux et CLI autonomes
data/processed/ table de caractéristiques et étiquettes validées
data/scripts/ générateurs de données synthétiques sûrs
scripts/ aides à la curation et à l'audit des jeux de données
artifacts/metrics.json métriques de version reproductibles
docs/ fiches de données et de modèle
Les logiciels malveillants bruts, les corpus téléchargés, les identifiants et les modèles d'essai entraînés localement ne font pas partie du dépôt.
--max-size-mb activée et ajoutez des limites de mémoire et de temps au niveau du processus dans les déploiements en production.Lisez CONTRIBUTING.md avant de modifier l'analyseur, le jeu de données ou le protocole d'évaluation. Ne validez pas d'échantillons de logiciels malveillants, d'identifiants API ou d'affirmations de benchmark sans artefact reproductible.
Pour signaler une vulnérabilité ou un contournement de l'analyseur, suivez SECURITY.md. Merci de ne pas joindre de logiciels malveillants actifs à un ticket public.
Sous licence Apache 2.0.
Fiche de données · Fiche de modèle · Politique de sécurité · Contribuer · CI
| 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 |
| 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 % |