ZIP Slip : La vulnérabilité d'extraction d'archives partout 📦

Comprendre la faille de sécurité critique qui touche des milliers d’applications
En juin 2018, des chercheurs en sécurité ont dévoilé l’une des vulnérabilités les plus répandues dans le développement logiciel moderne : ZIP Slip. Cette faille critique d’extraction d’archives permet à des attaquants d’écrire des fichiers arbitraires sur les systèmes cibles et potentiellement d’exécuter du code à distance. Bien qu’elle ait été divulguée publiquement il y a plusieurs années, de nouvelles occurrences continuent d’émerger, avec des CVEs récents en 2025 affectant des bibliothèques d’archivage populaires.
Qu’est-ce que ZIP Slip ?
ZIP Slip est une forme de faille d’écrasement arbitraire de fichiers exploitant la traversée de répertoires lors de l’extraction d’archives. L’attaque utilise des fichiers d’archive spécialement conçus contenant des noms de fichiers avec des séquences de traversée de répertoires (comme ../../evil.sh) qui, une fois extraits, écrivent des fichiers en dehors du répertoire de destination prévu.
La vulnérabilité ne se limite pas aux fichiers ZIP. Elle concerne plusieurs formats d’archives, notamment :
- ZIP (.zip)
- TAR (.tar, .tar.gz)
- JAR (Java Archive)
- WAR (Web Application Archive)
- APK (Android Package)
- CPIO (.cpiо)
- RAR (.rar)
- 7Z (.7z)
Cette large portée fait de ZIP Slip l’une des vulnérabilités les plus dangereuses dans la gestion des fichiers, affectant des applications de grandes organisations telles que HP, Amazon, Apache, Pivotal, Oracle, LinkedIn, Twitter, et bien d’autres.
Mécanismes techniques : comment fonctionne ZIP Slip
Le schéma de code vulnérable
Au cœur, ZIP Slip exploite une erreur simple mais critique dans le code d’extraction d’archives. Considérons cet exemple vulnérable en Java :
EnumerationcZipEntrye entries = zip.getEntries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
File file = new File(destinationDir, entry.getName());
FileOutputStream fos = new FileOutputStream(file);
// Extraction du fichier...
}
Le problème réside dans la deuxième ligne : new File(destinationDir, entry.getName()). Ce code concatène aveuglément le répertoire de destination avec le nom de l’entrée du ZIP sans validation. Si entry.getName() retourne quelque chose comme ../../../etc/cron.d/malicious, le fichier sera écrit dans /etc/cron.d/malicious au lieu de rester dans le répertoire de destination prévu.
Anatomie d’une archive malveillante
Créer une charge utile ZIP Slip malveillante consiste à fabriquer une archive avec des noms de fichiers spécialement formatés. Bien que les utilitaires de compression standard ne supportent pas la création de ces fichiers, les attaquants peuvent utiliser du code personnalisé ou des outils spécialisés pour les générer.
Une structure typique d’archive malveillante pourrait ressembler à :
exploit.zip
├── good_file.txt
├── ../../../../../../tmp/backdoor.sh
├── ../../../etc/cron.d/persistence
└── ../../../../var/www/html/shell.php
Lors de l’extraction par un code vulnérable, les fichiers sont écrits à des emplacements très éloignés du répertoire d’extraction prévu, pouvant écraser des fichiers système critiques, des fichiers de configuration ou des scripts exécutables.
Scénarios d’attaque réels
Scénario 1 : Upload de shell via application web
Un attaquant télécharge un fichier ZIP malveillant dans une application web avec une fonction d’installation de plugin. Le ZIP contient :
legitimate_plugin_files/...
../../../../var/www/html/shell.php
Après extraction, l’attaquant obtient un shell web à https://cible.com/shell.php, permettant l’exécution de code à distance avec les privilèges du serveur web.
Scénario 2 : Altération de la configuration système
Une archive malveillante ciblant un système Linux pourrait inclure :
../../.ssh/authorized_keys
../../../etc/cron.d/backdoor
Ce qui permet à l’attaquant d’ajouter sa clé SSH pour un accès persistant ou de créer des tâches planifiées exécutant du code malveillant.
Scénario 3 : Exploitation d’une application mobile
Pour des applications Android, un attaquant pourrait créer une mise à jour APK contenant :
../../data/data/com.target.app/shared_prefs/settings.xml
../../../lib/libmalicious.so
Ce qui écrase les préférences de l’application ou injecte des bibliothèques natives malveillantes.
Pourquoi cette vulnérabilité est partout
Le problème de l’écosystème
La prévalence de ZIP Slip découle de plusieurs problèmes systémiques dans le développement logiciel :
Absence de bibliothèques standard : Beaucoup d’écosystèmes de programmation, notamment Java, manquent de bibliothèques centralisées et de haut niveau pour le traitement des archives. Cela oblige les développeurs à écrire leur propre code d’extraction ou à copier des snippets vulnérables depuis des sources en ligne.
Culture de réutilisation du code : Les développeurs copient fréquemment du code depuis Stack Overflow, des dépôts GitHub, et autres sources communautaires. Lorsqu’un snippet vulnérable devient populaire, il se propage rapidement dans des milliers de projets.
Dépendances transitives : Les applications ne dépendent pas seulement des bibliothèques qu’elles incluent directement — elles héritent aussi des dépendances de ces bibliothèques. Une vulnérabilité dans une dépendance profondément imbriquée peut affecter plusieurs couches d’applications.
Manque de sensibilisation à la sécurité : Beaucoup de développeurs ne sont pas formés à reconnaître les vulnérabilités de traversée de chemin dans le contexte d’extraction d’archives, traitant la gestion des archives comme une opération de routine plutôt qu’une fonction critique en sécurité.
Cas récents découvertes
La vulnérabilité continue de réapparaître dans de nouveaux contextes :
CVE-2025-3445 (avril 2025) : Une vulnérabilité ZIP Slip a été découverte dans la bibliothèque Go
mholt/archiver, affectant les applications utilisant la fonctionarchiver.Unarchive(). La vulnérabilité permet la traversée de chemin via des liens symboliques spécialement conçus dans les ZIP.CVE-2024-21518 (2024) : L’installateur du marketplace d’OpenCart a été trouvé vulnérable au ZIP Slip, permettant des écritures arbitraires via le panneau d’administration.
CVE-2024-43399 (2024) : Le framework de sécurité mobile (MobSF) contenait une vulnérabilité critique ZIP Slip dans sa fonctionnalité d’analyse APK.
Ces découvertes récentes montrent qu’en dépit de plusieurs années de sensibilisation, de nouvelles instances continuent d’apparaître dans des bases de code héritées ou modernes.
Impact : ce que les attaquants peuvent réaliser
Conséquences immédiates
Exécution de code à distance (RCE) : Le résultat le plus grave de l’exploitation ZIP Slip. Les attaquants peuvent écraser des fichiers exécutables, scripts shell ou bibliothèques dynamiques qui seront ensuite exécutés par le système ou les utilisateurs.
Destruction de données : Les archives malveillantes peuvent cibler des fichiers de données critiques, des bases de données de configuration ou des sauvegardes, entraînant perte ou corruption.
Escalade de privilèges : En écrasant des fichiers système sensibles comme /etc/sudoers ou des clés SSH autorisées, les attaquants peuvent augmenter leurs privilèges sur le système cible.
Mécanismes de persistance : Les attaquants peuvent établir un accès à long terme en modifiant des scripts de démarrage, des tâches cron, des services systemd ou d’autres mécanismes d’exécution automatique.
Voies d’attaque secondaires
ZIP Slip sert souvent de point d’entrée pour des attaques plus sophistiquées :
- Attaques de chaîne d’approvisionnement : Compromission de systèmes de build ou de dépôts de dépendances par injection de code malveillant via ZIP Slip
- Mouvement latéral : Utilisation d’un système compromis pour extraire des archives malveillantes sur d’autres systèmes connectés au réseau
- Déploiement de ransomware : Écrasement de fichiers critiques avant leur chiffrement, rendant la récupération impossible sans sauvegardes
Détection des vulnérabilités ZIP Slip
Techniques d’audit de code
1. Recherche de motifs vulnérables
Cherchez du code qui extrait des archives sans validation appropriée :
// SIGNAL D'ALERTE : concaténation directe sans validation
File file = new File(baseDir, entry.getName());
// SIGNAL D'ALERTE : absence de vérification de la canonicalisation du chemin
String filePath = destinationDir + File.separator + entry.getName();
2. Analyse des fonctions de traitement d’archives
Examinez tout code qui : - Ouvre des fichiers ZIP, TAR, RAR ou autres - Parcourt les entrées d’archives - Écrit le contenu extrait sur le disque - Traite des fichiers d’archives téléchargés
3. Analyse des dépendances
Utilisez des outils automatisés pour identifier les dépendances vulnérables. Des plateformes de sécurité comme Snyk maintiennent des listes à jour des bibliothèques affectées dans plusieurs écosystèmes.
Stratégies de détection en temps réel
Surveillance du système de fichiers : Mettre en place une surveillance pour détecter des écritures de fichiers inattendues en dehors des répertoires désignés, notamment pour des chemins critiques comme /etc, /bin, et /lib.
Inspection du contenu des archives : Avant extraction, analyser le contenu des archives pour repérer des motifs de noms de fichiers suspects contenant :
- ../ ou ..\
- chemins absolus (commençant par / ou lettres de lecteur)
- caractères spéciaux ou astuces d’encodage conçus pour contourner les filtres
Extraction en sandbox : Extraire les archives dans des environnements isolés (conteneurs, VM) avant de déplacer le contenu vérifié vers des systèmes de production.
Stratégies de prévention et d’atténuation
Bonnes pratiques de codage
1. Validation et canonicalisation des chemins
Validez toujours les chemins de fichiers extraits par rapport au répertoire de destination prévu :
public static boolean isSafePath(File destination, ZipEntry entry) throws IOException {
File destinationFile = new File(destination, entry.getName());
String canonicalDestination = destination.getCanonicalPath();
String canonicalTarget = destinationFile.getCanonicalPath();
return canonicalTarget.startsWith(canonicalDestination + File.separator);
}
2. Utiliser des bibliothèques sécurisées
Privilégiez les bibliothèques avec une protection intégrée contre ZIP Slip :
- Java : Apache Commons Compress (versions récentes)
- Python : Utiliser
zipfileavec validation appropriée - .NET : Utiliser
System.IO.Compressionavec vérification des chemins - Node.js : Bibliothèques comme
extract-zipavec correctifs de sécurité
3. Mettre en œuvre une défense en profondeur
import os
import zipfile
def safe_extract(zip_path, extract_to):
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
for member in zip_ref.namelist():
# Normaliser et valider le chemin
member_path = os.path.normpath(os.path.join(extract_to, member))
# Vérifier qu'il reste dans le répertoire d'extraction
if not member_path.startswith(os.path.abspath(extract_to)):
raise Exception(f"Tentative de traversée de chemin : {member}")
# Vérifications supplémentaires
if os.path.isabs(member):
raise Exception(f"Chemin absolu non autorisé : {member}")
# Extraction sécurisée
zip_ref.extract(member, extract_to)
Protections au niveau applicatif
1. Restrictions sur le téléchargement de fichiers
- Limiter les formats d’archives acceptés à ceux nécessaires
- Imposer des limites de taille pour prévenir les attaques par zip bomb
- Exiger une authentification et une autorisation pour le téléchargement d’archives
- Journaliser toutes les opérations d’extraction avec des métadonnées détaillées
2. Principe du moindre privilège
Exécuter les processus d’extraction avec des permissions minimales : - Utiliser des comptes de service dédiés avec un accès restreint au système de fichiers - Mettre en œuvre des politiques de contrôle d’accès obligatoire (MAC) - Utiliser des conteneurs ou des sandbox pour le contenu non fiable
3. Validation des entrées
Avant de traiter une archive : - Scanner pour détecter des malwares et motifs suspects - Valider la structure et l’intégrité de l’archive - Vérifier les ratios de compression anormaux (potentiels zip bombs) - Rejeter les archives avec des noms d’entrée suspects
Considérations d’infrastructure
Isolation par conteneur : Extraire dans des conteneurs Docker ou autres technologies d’isolation, empêchant toute traversée de chemin d’affecter le système hôte.
Permissions du système de fichiers : Configurer des permissions strictes sur les répertoires système pour empêcher toute écriture non autorisée, même si la traversée de chemin réussit.
Segmentation réseau : Isoler les systèmes traitant des archives téléchargées par les utilisateurs des infrastructures critiques pour limiter la portée d’une attaque.
Tester la vulnérabilité ZIP Slip
Création de cas de test
Les équipes de sécurité doivent inclure des tests ZIP Slip dans leurs routines d’évaluation :
Cas de test 1 : Traversée simple
L'archive contient : ../../../etc/test.txt
Résultat attendu : Échec de l'extraction ou fichier dans le répertoire de destination
Cas de test 2 : Traversée encodée
L'archive contient : ..%2F..%2F..%2Fetc%2Ftest.txt
Résultat attendu : Échec de l'extraction après décodage
Cas de test 3 : Traversée Windows
L'archive contient : ..\..\..\Windows\System32\test.dll
Résultat attendu : Échec sur les systèmes Windows
Cas de test 4 : Chemins absolus
L'archive contient : /tmp/malicious.sh
Résultat attendu : Rejet des chemins absolus
Outils de test automatisés
Plusieurs outils peuvent aider à identifier les vulnérabilités ZIP Slip :
- Snyk : Analyse complète des dépendances avec détection ZIP Slip
- OWASP Dependency-Check : Outil open-source pour identifier les composants vulnérables
- SonarQube : Analyse statique avec règles de sécurité pour la traversée de chemin
- Scripts personnalisés : Rédiger des tests spécifiques pour votre code de gestion d’archives
Pourquoi chaque fonctionnalité de téléchargement doit faire l’objet d’une validation
La fonctionnalité de téléchargement de fichiers est omniprésente dans les applications modernes :
- Plateformes CMS : WordPress, Drupal, etc., permettant le téléchargement de plugins/thèmes
- Stockage cloud : Dropbox, Google Drive, OneDrive gèrent des milliards d’archives
- Outils de développement : Gestionnaires de paquets, pipelines CI/CD, plugins IDE traitent des archives en continu
- Applications mobiles : App stores, mécanismes de mise à jour, systèmes de distribution de contenu
- Logiciels d’entreprise : Gestion documentaire, sauvegardes, outils de collaboration
Chacune de ces situations constitue une surface d’attaque potentielle. Une extraction d’archive non validée peut compromettre l’ensemble du système, rendant la validation indispensable.
Le pipeline upload-à-exécution
Considérez le flux typique :
- L’utilisateur télécharge une archive
- Le serveur stocke temporairement le fichier
- Le processus d’extraction commence (POINT VULNÉRABLE)
- L’application traite le contenu extrait
- Le contenu devient accessible aux utilisateurs/systèmes
L’étape d’extraction est celle où ZIP Slip intervient. Au moment où l’application détecte quelque chose d’anormal (si jamais), des fichiers malveillants peuvent déjà avoir été écrits dans des emplacements critiques.
Réponse de l’industrie et état actuel
La communauté de la sécurité a déployé d’importants efforts pour traiter ZIP Slip :
Correctifs de bibliothèques : La majorité des grandes bibliothèques d’archivage ont publié des correctifs. L’équipe Snyk maintient un dépôt GitHub recensant les bibliothèques affectées et leur statut de correction dans différents écosystèmes.
Formation des développeurs : Les programmes de formation à la sécurité incluent désormais ZIP Slip comme sujet central dans les cursus de codage sécurisé.
Analyse automatisée : Les outils de sécurité modernes intègrent la détection ZIP Slip dans leurs bases de données de vulnérabilités, aidant les organisations à identifier les dépendances affectées.
Améliorations standardisées : Certains écosystèmes développent des bibliothèques centralisées et sécurisées pour le traitement des archives, réduisant la nécessité de solutions maison.
Cependant, des défis subsistent :
- Systèmes legacy : Les anciennes applications peuvent ne jamais recevoir de mises à jour
- Hell dépendances : La mise à jour de dépendances transitives vulnérables peut casser des applications
- Variantes zero-day : De nouvelles variantes continuent d’apparaître, comme en 2025
- Sensibilisation des développeurs : Beaucoup ignorent encore le problème
Résumé des bonnes pratiques
Pour les développeurs
- Ne jamais faire confiance aux chemins d’entrée d’archive - Validez toujours par rapport au répertoire d’extraction
- Utiliser des bibliothèques sécurisées - Privilégiez celles avec protections intégrées contre ZIP Slip
- Mettre en place des listes blanches - Définissez des emplacements acceptables et rejetez tout le reste
- Ajouter des tests de sécurité - Incluez des tests ZIP Slip dans vos suites de tests
- Suivre le principe du moindre privilège - Exécuter l’extraction avec des permissions minimales
Pour les équipes de sécurité
- Réaliser des audits réguliers - Scanner le code et les dépendances pour motifs vulnérables
- Mettre en place une surveillance - Détecter en temps réel des écritures suspectes
- Former les développeurs - S’assurer qu’ils comprennent les risques de traversée de chemin
- Tester les fonctionnalités de téléchargement - Cibler spécifiquement la gestion des archives lors de tests d’intrusion
- Avoir des plans de réponse aux incidents - Se préparer à une exploitation ZIP Slip éventuelle
Pour les organisations
- Mettre à jour les dépendances - Maintenir les bibliothèques d’archivage à jour avec les correctifs de sécurité
- Adopter DevSecOps - Intégrer la sécurité dans les pipelines CI/CD
- Imposer la revue de code - Exiger une validation de sécurité pour tout code de gestion d’archives
- Déployer une défense en profondeur - Utiliser plusieurs couches de protection (validation, sandboxing, permissions)
- Planifier les incidents - Prévoir des procédures de rollback en cas de compromission
L’avenir de la sécurité des archives
Alors que les applications continueront de dépendre fortement des fichiers d’archives pour la distribution logicielle, la sauvegarde de données, etc., l’importance d’une gestion sécurisée des archives ne fera que croître.
Menaces émergentes : De nouvelles variantes de ZIP Slip apparaissent, notamment : - Traversée basée sur des liens symboliques (voir CVE-2025-3445) - Astuces d’encodage pour contourner les filtres - Attaques TOCTOU lors de l’extraction
Problèmes cloud-native : Les fonctions serverless et les applications conteneurisées introduisent de nouveaux vecteurs d’attaque où ZIP Slip pourrait compromettre les politiques IAM, les fonctions Lambda ou l’orchestration de conteneurs.
IA et automatisation : Avec la génération de code par des outils IA, il devient crucial de s’assurer qu’ils ne reproduisent pas de motifs vulnérables.
Conclusion
ZIP Slip représente une tempête parfaite de vulnérabilités de sécurité : facile à exploiter, difficile à détecter, répandue dans tous les écosystèmes, et pouvant avoir des conséquences catastrophiques. La persistance de cette faille — avec de nouvelles instances en 2025 — montre que la simple prise de conscience ne suffit pas.
Toute application traitant des archives, en particulier celles acceptant des uploads utilisateur, doit mettre en œuvre une validation et des mesures de sécurité appropriées. Les enjeux sont trop élevés pour se reposer sur des suppositions d’intégrité ou faire confiance au fait que “cela ne nous arrivera pas”.
En comprenant les détails techniques de ZIP Slip, en mettant en place une validation robuste, en utilisant des bibliothèques sécurisées, et en restant vigilant via des tests et une surveillance, les développeurs et organisations peuvent protéger leurs systèmes contre cette menace omniprésente. La vulnérabilité est partout, mais avec des précautions appropriées, son exploitation peut être évitée.
Souvenez-vous : Ne faites pas confiance à un archive. Validez chaque chemin. Sécurisez vos extractions. La sécurité de votre système en dépend.
Ressources supplémentaires
- Recherche Snyk ZIP Slip : https://security.snyk.io/research/zip-slip-vulnerability
- Dépôt GitHub : https://github.com/snyk/zip-slip-vulnerability
- OWASP Path Traversal : https://owasp.org/www-community/attacks/Path_Traversal
- Avis CISA : Mises à jour régulières sur les systèmes de contrôle industriel affectés par ZIP Slip
- Base CVE : Recherchez “ZIP Slip” ou “traversée de chemin” pour les dernières divulgations
Longueur de l’article : ~2 000 mots
Dernière mise à jour : novembre 2025
Mots-clés SEO : vulnérabilité ZIP Slip, sécurité extraction d’archives, attaque traversée de chemin, sécurité upload de fichiers, exploitation ZIP, gestion sécurisée des archives, CVE-2025-3445, archive malveillante, exécution de code à distance
Related InstaTunnel pages
Continue from this article into the most relevant product guides and workflows.
Related Topics
Keep building with InstaTunnel
Read the docs for implementation details or compare plans before you ship.