
Technique de codage sécurisée : le comportement par défaut des bibliothèques Zip peut entraîner l'exécution de code à distance
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.

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.

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


Nous pouvons injecter un fichier dans un zip dont le nom est préfixé par un
Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

Secure Code Warrior aquí para ayudar a su organización a proteger el código a lo largo de todo el ciclo de desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es responsable de la seguridad de las aplicaciones, desarrollador, responsable de la seguridad informática o cualquier otra persona involucrada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código no seguro.
Reserve una demostraciónChercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat


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.

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.

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

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.

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.

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

Haga clic en el enlace siguiente y descargue el PDF de este recurso.
Secure Code Warrior aquí para ayudar a su organización a proteger el código a lo largo de todo el ciclo de desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es responsable de la seguridad de las aplicaciones, desarrollador, responsable de la seguridad informática o cualquier otra persona involucrada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código no seguro.
Mostrar el informeReserve una demostraciónChercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat
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.

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.

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
Índice
Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

Secure Code Warrior aquí para ayudar a su organización a proteger el código a lo largo de todo el ciclo de desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es responsable de la seguridad de las aplicaciones, desarrollador, responsable de la seguridad informática o cualquier otra persona involucrada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código no seguro.
Reserve una demostraciónDescargarRecursos para ayudarle a empezar
Temas y contenidos de formación sobre el código seguro
Nuestro contenido de vanguardia evoluciona constantemente para adaptarse al panorama en constante cambio del desarrollo de software, teniendo en cuenta su función. Temas que abarcan desde la IA hasta la inyección de XQuery, ofrecidos para una variedad de puestos, desde arquitectos hasta ingenieros, pasando por jefes de producto y control de calidad. Descubra una visión general de lo que nuestro catálogo de contenidos tiene para ofrecer por tema y por función.
La Cámara de Comercio establece el estándar para la seguridad impulsada por desarrolladores a gran escala
Kamer van Koophandel comparte cómo ha integrado la codificación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de Trust Score y una cultura de responsabilidad compartida en materia de seguridad.
Modelado de amenazas con IA: convertir a cada desarrollador en un modelador de amenazas
Saldrá mejor equipado para ayudar a los desarrolladores a combinar ideas y técnicas de modelado de amenazas con las herramientas de IA que ya utilizan para reforzar la seguridad, mejorar la colaboración y crear software más resistente desde el principio.
Recursos para ayudarle a empezar
Cybermon está de vuelta: las missions Beat the Boss ya están disponibles bajo demanda.
Cybermon 2025 Beat the Boss ya está disponible todo el año en SCW. Implemente desafíos de seguridad avanzados relacionados con la IA y el LLM para reforzar el desarrollo seguro de la IA a gran escala.
Explicación de la ley sobre ciberresiliencia: lo que significa para el desarrollo de software seguro desde el diseño.
Descubra qué exige la ley europea sobre ciberresiliencia (CRA), a quién se aplica y cómo los equipos de ingenieros pueden prepararse mediante prácticas de seguridad desde el diseño, la prevención de vulnerabilidades y el refuerzo de las capacidades de los desarrolladores.
Facilitador 1: Criterios de éxito definidos y medibles
El facilitador 1 da inicio a nuestra serie de 10 partes titulada «Facilitadores del éxito», mostrando cómo combinar la codificación segura con resultados comerciales, como la reducción de riesgos y la rapidez, para garantizar la madurez a largo plazo de los programas.




%20(1).avif)
.avif)
