SCW Icons
hero bg no divider
Blog

Technique de codage sécurisée : le comportement par défaut des bibliothèques Zip peut entraîner l'exécution de code à distance

Pieter De Cremer
Published Nov 13, 2017
Last updated on Mar 08, 2026

Cette semaine, nous allons parler du comportement par défaut des bibliothèques Zip. Si vous êtes développeur d'applications, il est fort probable que vous l'ayez déjà utilisé. La plupart des ressources téléchargées sur Internet sont au format zip, ce qui est logique ; les données compressées sont plus petites, elles se téléchargent donc plus rapidement et consomment moins de bande passante.

Si vous voulez des exemples plus concrets : des textures pour les jeux, des modules linguistiques pour la saisie automatique sur les claviers,... De nombreuses ressources ne sont pas automatiquement intégrées à l'application mais téléchargées ultérieurement.

Mais soyez prudent lorsque vous utilisez cette fonctionnalité, car les noms de fichiers des archives zip peuvent contenir des informations de traversée de chemin. Une fois extrait, cela entraînera la création de fichiers en dehors du répertoire prévu. Cela est souvent fait dans le but de remplacer des fichiers existants.

Zip Archives

Supposons que nous ayons une archive zip contenant les deux fichiers suivants :

fichier1
.. /fichier2

Lorsque cette archive est extraite, le fichier1 est extrait là où nous nous attendons à ce qu'il soit, dans le répertoire de décompression. Cependant, le fichier 2 a été écrit un répertoire plus haut que celui où nous avons demandé à la bibliothèque zip d'extraire l'archive.

Attention donc, si votre bibliothèque zip ne prend pas soin de gérer correctement ce cas, elle permettra à un attaquant d'écrire un fichier arbitraire dans le système. Vérifiez toujours si votre bibliothèque est sécurisée, cette règle empirique est valable pour toutes les bibliothèques, mais vous devez en particulier vérifier le comportement par défaut de votre bibliothèque zip pour ces types de fichiers.

Démontrons les conséquences lorsque ce cas n'est pas correctement traité sous Android. Sous Android, la bibliothèque Java Zip (java.util.zip) est utilisée, la bibliothèque permet par défaut de parcourir les chemins comme expliqué ci-dessus.

Le format exécutable Dalvik d'Android (.dex) limite le nombre de classes qu'un seul fichier peut avoir. Les applications qui ont besoin de plus de classes peuvent utiliser la bibliothèque MultiDEX Support qui a été ajoutée depuis le niveau d'API 21 (Android 5.0 Lollipop). Cette bibliothèque enregistre les fichiers .dex secondaires dans le répertoire de données de l'application, ce répertoire est accessible en écriture par l'utilisateur de l'application et ce code sera chargé et exécuté lorsque le fichier .dex sera nécessaire.

Cela signifie qu'un attaquant peut modifier le fichier .dex en le remplaçant à l'aide d'une archive zip malveillante et, pire encore, ce fichier sera chargé et exécuté, ce qui entraînera une vulnérabilité d'exécution de code à distance. Il ne s'agit pas simplement d'un exemple théorique, mais cela a été démontré sur l'application My Talking Tom, qui compte plus de 100 millions de téléchargements sur l'App Store. Voici une vidéo de l'exploit qui a été présentée à Black Hat.

Talking Tom

Vérifiez toujours le comportement de votre bibliothèque zip afin d'être conscient de ses insécurités. Si vous ne pouvez pas désactiver la traversée de chemin dans votre bibliothèque zip, assurez-vous de valider le nom de chaque entrée avant de l'extraire. Le nom doit être canonique et le chemin obtenu doit se trouver dans le répertoire dans lequel vous souhaitez extraire l'archive. Pendant que nous y sommes, vous devriez également vérifier la taille totale des archives extraites pour éviter les bombes zippées, mais ce billet sera publié pendant encore une semaine.

Si tu veux relever quelques défis lors de la traversée d'un chemin ou si vous souhaitez tester vos compétences en matière de codage sécurisé, consultez notre plateforme.

À la prochaine, et n'oubliez pas, code sécurisé ou pas de code !

- Nous pouvons injecter un fichier dans un zip dont le nom est préfixé par un nombre arbitraire de «../»
- Si la bibliothèque zip ne prend pas soin de gérer correctement ce cas, cela nous permettrait d'écrire en dehors du répertoire d'extraction prévu
- Si le fichier zip n'est pas fiable, cela donne à l'attaquant une vulnérabilité d'écriture arbitraire

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Afficher la ressource
Afficher la ressource

Nous pouvons injecter un fichier dans un zip dont le nom est préfixé par un

Vous souhaitez en savoir plus ?

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

learn more

Secure Code Warrior est là pour aider votre organisation à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité informatique ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Réservez une démo
Partagez sur :
linkedin brandsSocialx logo
Auteur
Pieter De Cremer
Published Nov 13, 2017

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

Partagez sur :
linkedin brandsSocialx logo

Cette semaine, nous allons parler du comportement par défaut des bibliothèques Zip. Si vous êtes développeur d'applications, il est fort probable que vous l'ayez déjà utilisé. La plupart des ressources téléchargées sur Internet sont au format zip, ce qui est logique ; les données compressées sont plus petites, elles se téléchargent donc plus rapidement et consomment moins de bande passante.

Si vous voulez des exemples plus concrets : des textures pour les jeux, des modules linguistiques pour la saisie automatique sur les claviers,... De nombreuses ressources ne sont pas automatiquement intégrées à l'application mais téléchargées ultérieurement.

Mais soyez prudent lorsque vous utilisez cette fonctionnalité, car les noms de fichiers des archives zip peuvent contenir des informations de traversée de chemin. Une fois extrait, cela entraînera la création de fichiers en dehors du répertoire prévu. Cela est souvent fait dans le but de remplacer des fichiers existants.

Zip Archives

Supposons que nous ayons une archive zip contenant les deux fichiers suivants :

fichier1
.. /fichier2

Lorsque cette archive est extraite, le fichier1 est extrait là où nous nous attendons à ce qu'il soit, dans le répertoire de décompression. Cependant, le fichier 2 a été écrit un répertoire plus haut que celui où nous avons demandé à la bibliothèque zip d'extraire l'archive.

Attention donc, si votre bibliothèque zip ne prend pas soin de gérer correctement ce cas, elle permettra à un attaquant d'écrire un fichier arbitraire dans le système. Vérifiez toujours si votre bibliothèque est sécurisée, cette règle empirique est valable pour toutes les bibliothèques, mais vous devez en particulier vérifier le comportement par défaut de votre bibliothèque zip pour ces types de fichiers.

Démontrons les conséquences lorsque ce cas n'est pas correctement traité sous Android. Sous Android, la bibliothèque Java Zip (java.util.zip) est utilisée, la bibliothèque permet par défaut de parcourir les chemins comme expliqué ci-dessus.

Le format exécutable Dalvik d'Android (.dex) limite le nombre de classes qu'un seul fichier peut avoir. Les applications qui ont besoin de plus de classes peuvent utiliser la bibliothèque MultiDEX Support qui a été ajoutée depuis le niveau d'API 21 (Android 5.0 Lollipop). Cette bibliothèque enregistre les fichiers .dex secondaires dans le répertoire de données de l'application, ce répertoire est accessible en écriture par l'utilisateur de l'application et ce code sera chargé et exécuté lorsque le fichier .dex sera nécessaire.

Cela signifie qu'un attaquant peut modifier le fichier .dex en le remplaçant à l'aide d'une archive zip malveillante et, pire encore, ce fichier sera chargé et exécuté, ce qui entraînera une vulnérabilité d'exécution de code à distance. Il ne s'agit pas simplement d'un exemple théorique, mais cela a été démontré sur l'application My Talking Tom, qui compte plus de 100 millions de téléchargements sur l'App Store. Voici une vidéo de l'exploit qui a été présentée à Black Hat.

Talking Tom

Vérifiez toujours le comportement de votre bibliothèque zip afin d'être conscient de ses insécurités. Si vous ne pouvez pas désactiver la traversée de chemin dans votre bibliothèque zip, assurez-vous de valider le nom de chaque entrée avant de l'extraire. Le nom doit être canonique et le chemin obtenu doit se trouver dans le répertoire dans lequel vous souhaitez extraire l'archive. Pendant que nous y sommes, vous devriez également vérifier la taille totale des archives extraites pour éviter les bombes zippées, mais ce billet sera publié pendant encore une semaine.

Si tu veux relever quelques défis lors de la traversée d'un chemin ou si vous souhaitez tester vos compétences en matière de codage sécurisé, consultez notre plateforme.

À la prochaine, et n'oubliez pas, code sécurisé ou pas de code !

- Nous pouvons injecter un fichier dans un zip dont le nom est préfixé par un nombre arbitraire de «../»
- Si la bibliothèque zip ne prend pas soin de gérer correctement ce cas, cela nous permettrait d'écrire en dehors du répertoire d'extraction prévu
- Si le fichier zip n'est pas fiable, cela donne à l'attaquant une vulnérabilité d'écriture arbitraire

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Afficher la ressource
Afficher la ressource

Remplissez le formulaire ci-dessous pour télécharger le rapport

Nous aimerions avoir votre autorisation pour vous envoyer des informations sur nos produits et/ou sur des sujets liés au codage sécurisé. Nous traiterons toujours vos données personnelles avec le plus grand soin et ne les vendrons jamais à d'autres entreprises à des fins de marketing.

Soumettre
scw success icon
scw error icon
Pour soumettre le formulaire, veuillez activer les cookies « Analytics ». N'hésitez pas à les désactiver à nouveau une fois que vous aurez terminé.

Cette semaine, nous allons parler du comportement par défaut des bibliothèques Zip. Si vous êtes développeur d'applications, il est fort probable que vous l'ayez déjà utilisé. La plupart des ressources téléchargées sur Internet sont au format zip, ce qui est logique ; les données compressées sont plus petites, elles se téléchargent donc plus rapidement et consomment moins de bande passante.

Si vous voulez des exemples plus concrets : des textures pour les jeux, des modules linguistiques pour la saisie automatique sur les claviers,... De nombreuses ressources ne sont pas automatiquement intégrées à l'application mais téléchargées ultérieurement.

Mais soyez prudent lorsque vous utilisez cette fonctionnalité, car les noms de fichiers des archives zip peuvent contenir des informations de traversée de chemin. Une fois extrait, cela entraînera la création de fichiers en dehors du répertoire prévu. Cela est souvent fait dans le but de remplacer des fichiers existants.

Zip Archives

Supposons que nous ayons une archive zip contenant les deux fichiers suivants :

fichier1
.. /fichier2

Lorsque cette archive est extraite, le fichier1 est extrait là où nous nous attendons à ce qu'il soit, dans le répertoire de décompression. Cependant, le fichier 2 a été écrit un répertoire plus haut que celui où nous avons demandé à la bibliothèque zip d'extraire l'archive.

Attention donc, si votre bibliothèque zip ne prend pas soin de gérer correctement ce cas, elle permettra à un attaquant d'écrire un fichier arbitraire dans le système. Vérifiez toujours si votre bibliothèque est sécurisée, cette règle empirique est valable pour toutes les bibliothèques, mais vous devez en particulier vérifier le comportement par défaut de votre bibliothèque zip pour ces types de fichiers.

Démontrons les conséquences lorsque ce cas n'est pas correctement traité sous Android. Sous Android, la bibliothèque Java Zip (java.util.zip) est utilisée, la bibliothèque permet par défaut de parcourir les chemins comme expliqué ci-dessus.

Le format exécutable Dalvik d'Android (.dex) limite le nombre de classes qu'un seul fichier peut avoir. Les applications qui ont besoin de plus de classes peuvent utiliser la bibliothèque MultiDEX Support qui a été ajoutée depuis le niveau d'API 21 (Android 5.0 Lollipop). Cette bibliothèque enregistre les fichiers .dex secondaires dans le répertoire de données de l'application, ce répertoire est accessible en écriture par l'utilisateur de l'application et ce code sera chargé et exécuté lorsque le fichier .dex sera nécessaire.

Cela signifie qu'un attaquant peut modifier le fichier .dex en le remplaçant à l'aide d'une archive zip malveillante et, pire encore, ce fichier sera chargé et exécuté, ce qui entraînera une vulnérabilité d'exécution de code à distance. Il ne s'agit pas simplement d'un exemple théorique, mais cela a été démontré sur l'application My Talking Tom, qui compte plus de 100 millions de téléchargements sur l'App Store. Voici une vidéo de l'exploit qui a été présentée à Black Hat.

Talking Tom

Vérifiez toujours le comportement de votre bibliothèque zip afin d'être conscient de ses insécurités. Si vous ne pouvez pas désactiver la traversée de chemin dans votre bibliothèque zip, assurez-vous de valider le nom de chaque entrée avant de l'extraire. Le nom doit être canonique et le chemin obtenu doit se trouver dans le répertoire dans lequel vous souhaitez extraire l'archive. Pendant que nous y sommes, vous devriez également vérifier la taille totale des archives extraites pour éviter les bombes zippées, mais ce billet sera publié pendant encore une semaine.

Si tu veux relever quelques défis lors de la traversée d'un chemin ou si vous souhaitez tester vos compétences en matière de codage sécurisé, consultez notre plateforme.

À la prochaine, et n'oubliez pas, code sécurisé ou pas de code !

- Nous pouvons injecter un fichier dans un zip dont le nom est préfixé par un nombre arbitraire de «../»
- Si la bibliothèque zip ne prend pas soin de gérer correctement ce cas, cela nous permettrait d'écrire en dehors du répertoire d'extraction prévu
- Si le fichier zip n'est pas fiable, cela donne à l'attaquant une vulnérabilité d'écriture arbitraire

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Afficher le webinaire
Commencez
learn more

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.

Secure Code Warrior est là pour aider votre organisation à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité informatique ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Afficher le rapportRéservez une démo
Télécharger le PDF
Afficher la ressource
Partagez sur :
linkedin brandsSocialx logo
Vous souhaitez en savoir plus ?

Partagez sur :
linkedin brandsSocialx logo
Auteur
Pieter De Cremer
Published Nov 13, 2017

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

Partagez sur :
linkedin brandsSocialx logo

Cette semaine, nous allons parler du comportement par défaut des bibliothèques Zip. Si vous êtes développeur d'applications, il est fort probable que vous l'ayez déjà utilisé. La plupart des ressources téléchargées sur Internet sont au format zip, ce qui est logique ; les données compressées sont plus petites, elles se téléchargent donc plus rapidement et consomment moins de bande passante.

Si vous voulez des exemples plus concrets : des textures pour les jeux, des modules linguistiques pour la saisie automatique sur les claviers,... De nombreuses ressources ne sont pas automatiquement intégrées à l'application mais téléchargées ultérieurement.

Mais soyez prudent lorsque vous utilisez cette fonctionnalité, car les noms de fichiers des archives zip peuvent contenir des informations de traversée de chemin. Une fois extrait, cela entraînera la création de fichiers en dehors du répertoire prévu. Cela est souvent fait dans le but de remplacer des fichiers existants.

Zip Archives

Supposons que nous ayons une archive zip contenant les deux fichiers suivants :

fichier1
.. /fichier2

Lorsque cette archive est extraite, le fichier1 est extrait là où nous nous attendons à ce qu'il soit, dans le répertoire de décompression. Cependant, le fichier 2 a été écrit un répertoire plus haut que celui où nous avons demandé à la bibliothèque zip d'extraire l'archive.

Attention donc, si votre bibliothèque zip ne prend pas soin de gérer correctement ce cas, elle permettra à un attaquant d'écrire un fichier arbitraire dans le système. Vérifiez toujours si votre bibliothèque est sécurisée, cette règle empirique est valable pour toutes les bibliothèques, mais vous devez en particulier vérifier le comportement par défaut de votre bibliothèque zip pour ces types de fichiers.

Démontrons les conséquences lorsque ce cas n'est pas correctement traité sous Android. Sous Android, la bibliothèque Java Zip (java.util.zip) est utilisée, la bibliothèque permet par défaut de parcourir les chemins comme expliqué ci-dessus.

Le format exécutable Dalvik d'Android (.dex) limite le nombre de classes qu'un seul fichier peut avoir. Les applications qui ont besoin de plus de classes peuvent utiliser la bibliothèque MultiDEX Support qui a été ajoutée depuis le niveau d'API 21 (Android 5.0 Lollipop). Cette bibliothèque enregistre les fichiers .dex secondaires dans le répertoire de données de l'application, ce répertoire est accessible en écriture par l'utilisateur de l'application et ce code sera chargé et exécuté lorsque le fichier .dex sera nécessaire.

Cela signifie qu'un attaquant peut modifier le fichier .dex en le remplaçant à l'aide d'une archive zip malveillante et, pire encore, ce fichier sera chargé et exécuté, ce qui entraînera une vulnérabilité d'exécution de code à distance. Il ne s'agit pas simplement d'un exemple théorique, mais cela a été démontré sur l'application My Talking Tom, qui compte plus de 100 millions de téléchargements sur l'App Store. Voici une vidéo de l'exploit qui a été présentée à Black Hat.

Talking Tom

Vérifiez toujours le comportement de votre bibliothèque zip afin d'être conscient de ses insécurités. Si vous ne pouvez pas désactiver la traversée de chemin dans votre bibliothèque zip, assurez-vous de valider le nom de chaque entrée avant de l'extraire. Le nom doit être canonique et le chemin obtenu doit se trouver dans le répertoire dans lequel vous souhaitez extraire l'archive. Pendant que nous y sommes, vous devriez également vérifier la taille totale des archives extraites pour éviter les bombes zippées, mais ce billet sera publié pendant encore une semaine.

Si tu veux relever quelques défis lors de la traversée d'un chemin ou si vous souhaitez tester vos compétences en matière de codage sécurisé, consultez notre plateforme.

À la prochaine, et n'oubliez pas, code sécurisé ou pas de code !

- Nous pouvons injecter un fichier dans un zip dont le nom est préfixé par un nombre arbitraire de «../»
- Si la bibliothèque zip ne prend pas soin de gérer correctement ce cas, cela nous permettrait d'écrire en dehors du répertoire d'extraction prévu
- Si le fichier zip n'est pas fiable, cela donne à l'attaquant une vulnérabilité d'écriture arbitraire

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Table des matières

Télécharger le PDF
Afficher la ressource
Vous souhaitez en savoir plus ?

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

learn more

Secure Code Warrior est là pour aider votre organisation à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité informatique ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Réservez une démoTélécharger
Partagez sur :
linkedin brandsSocialx logo
Centre de ressources

Ressources pour vous aider à démarrer

Plus de posts
Centre de ressources

Ressources pour vous aider à démarrer

Plus de posts