Faille permettant une attaque par traversée de répertoires

Ces informations sont destinées aux développeurs d'applications présentant une faille permettant une attaque par traversée de répertoires.

Que se passe-t-il ?

Depuis le 16 janvier 2018, Google Play bloque la publication de nouvelles applications ou mises à jour présentant une faille permettant une attaque par traversée de répertoires. Veuillez consulter la notification dans la console PlayPassé les délais indiqués dans la console Play, toutes les applications présentant des failles de sécurité non résolues pourront être supprimées de Google Play.

Action requise

  1. Connectez-vous à la console Play et accédez à la section "Alertes" pour savoir quelles sont les applications concernées et connaître les délais à respecter pour résoudre ces problèmes.
  2. Mettez à jour les applications concernées et corrigez la faille.
  3. Envoyez les versions mises à jour des applications concernées.

Votre application sera à nouveau examinée. Le processus peut durer plusieurs heures. Si votre application est approuvée et publiée, aucune autre action de votre part n'est requise. Si l'application n'est pas approuvée, sa nouvelle version ne sera pas publiée, et vous recevrez une notification par e-mail.

Informations supplémentaires

Les implémentations d'openFile dans les exportations de ContentProviders peuvent présenter une faille si les paramètres URI entrants ne sont pas validés correctement. Une application malveillante peut fournir un URI modifié (par exemple, contenant la chaîne "/../") pour inciter votre application à retourner le ParcelFileDescriptor d'un fichier se trouvant en dehors du répertoire concerné, ce qui lui permet d'accéder à tout fichier accessible par votre application.

Deux stratégies sont recommandées pour corriger une faille permettant une attaque par traversée de répertoires dans un ContentProvider.

1. Si d'autres applications n'ont pas besoin d'accéder à votre ContentProvider

2. Si d'autres applications ont besoin d'accéder à votre ContentProvider

Vous devez vous assurer que les données entrées dans openFile et contenant des caractères de traversée de répertoires ne risquent pas d'amener votre application à renvoyer des fichiers inattendus. Pour cela, vous pouvez vérifier le chemin d’accès canonique du fichier. Par exemple :

public ParcelFileDescriptor openFile (Uri uri, String mode)
   throws FileNotFoundException {
 File f = new File(DIR, uri.getLastPathSegment());
 if (!f.getCanonicalPath().startsWith(DIR)) {
   throw new IllegalArgumentException();
 }
 return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
}
 

Avertissement : Notez que le fait d'appeler getLastPathSegment sur le paramètre Uri n'est pas une méthode sécurisée. Une application malveillante peut fournir un chemin d'URI encodé comme %2F..%2F..path%2Fto%2Fsecret.txt, de sorte que le résultat de getLastPathSegment soit /../../path/to/secret.txt. Par exemple, l'implémentation suivante est vulnérable aux attaques :

public ParcelFileDescriptor openFile(Uri uri, String mode){
 File f = new File(DIR, uri.getLastPathSegment());
 return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
}
 

Nous sommes là pour vous aider

Si vous avez des questions techniques sur cette faille, vous pouvez publier un message sur le site Stack Overflow en utilisant le tag "android-security". Si vous souhaitez obtenir des éclaircissements sur les étapes à suivre pour résoudre ce problème, vous pouvez contacter notre équipe d'assistance pour les développeurs.

Ces informations vous-ont elles été utiles ?

Comment pouvons-nous l'améliorer ?
false
Menu principal
14440396501209259451
true
Rechercher dans le centre d'aide
true
true
true
true
true
5016068
false
false