Répertoires exposés de manière incorrecte auprès de FileProvider

Catégorie OWASP : MASVS-STORAGE : stockage

Présentation

Un fichier FileProvider mal configuré peut exposer involontairement des fichiers et des répertoires à un pirate informatique. Selon la configuration, un pirate informatique peut lire ou écrire des données dans les fichiers exposés, ce qui peut entraîner l'exfiltration d'informations sensibles ou, dans le pire des cas, l'exécution de code arbitraire. Par exemple, une application dont la configuration est définie sur <root-path> peut permettre à un pirate informatique d'accéder à des informations sensibles stockées dans des bases de données ou d'écraser les bibliothèques natives de l'application, avec pour conséquence l'exécution de code arbitraire.

Impact

L'impact varie en fonction de la configuration et du contenu du fichier, mais entraîne généralement une fuite de données (lors de la lecture) ou un écrasement des données (lors de l'écriture).

Stratégies d'atténuation

Ne pas utiliser l'élément de chemin <root-path> dans la configuration

<root-path> correspond au répertoire racine de l'appareil (/). Permettre son utilisation dans la configuration offre un accès arbitraire aux fichiers et aux dossiers, y compris au bac à sable de l'application et au répertoire /sdcard, ce qui représente une surface d'attaque très large pour un pirate informatique.

Partager des plages de chemins étroits

Dans le fichier de configuration des chemins d'accès, évitez de partager une vaste plage de chemins d'accès telle que . ou /. Cela peut entraîner l'exposition accidentelle de fichiers sensibles. Partagez uniquement une plage de chemins d'accès limités/étroits et assurez-vous que seuls les fichiers que vous souhaitez partager se trouvent sous ce chemin. Vous éviterez ainsi d'exposer des fichiers sensibles par erreur.

Voici ce à quoi pourrait ressembler un fichier de configuration standard plus sûr :

XML

<paths>
    <files-path name="images" path="images/" />
    <files-path name="docs" path="docs" />
    <cache-path name="cache" path="net-export/" />
</paths>

Vérifier et valider les URI externes

Validez les URI externes (à l'aide d'un schéma content) et assurez-vous qu'ils ne pointent pas vers les fichiers locaux de votre application. Cela permet d'éviter toute fuite d'informations accidentelle.

Accorder des autorisations d'accès minimales

Un content URI peut disposer d'autorisations d'accès en lecture et en écriture. Assurez-vous que seule l'autorisation d'accès minimale requise est accordée. Par exemple, si seule l'autorisation de lecture est requise, n'accordez explicitement que l'autorisation FLAG_GRANT_READ_URI_PERMISSION.

Éviter d'utiliser <external-path> pour stocker/partager des informations sensibles

Les données sensibles, telles que les informations personnelles, ne doivent pas être stockées en dehors du conteneur d'applications ou des installations système permettant de stocker les identifiants. Évitez donc d'utiliser l'élément <external-path>, sauf si vous avez explicitement vérifié que les informations stockées/partagées ne sont pas sensibles.

Ressources