Insecure Filesystem Access
Accès Non Sécurisé au Système de Fichiers
Description
L'application manipule des fichiers en utilisant des autorisations non sécurisées (lisibles ou inscriptibles par tous) ou cible des périphériques de mémoire externes tels qu'une carte SD avec des autorisations faibles.
Selon le concept de conception de sécurité d'Android, les fichiers sont utilisés uniquement pour la persistance des informations et sont sauvegardés temporairement (cache), et ils doivent être privés en principe. L'échange d'informations entre applications ne doit pas se faire par un accès direct aux fichiers, mais via un système de liaison inter-applications, comme un Content Provider ou un Service. En utilisant cela, le contrôle d'accès inter-applications peut être réalisé.
Autorisation de lecture pour tous
Les fichiers lisibles par tous (world readable) peuvent présenter un risque s'ils stockent des informations sensibles pouvant être compromises si elles sont consultées par une partie non autorisée, comme un relevé de compte bancaire ou un fichier de stockage de clés de session.
Autorisation d'écriture pour tous
Les fichiers inscriptibles par tous (world writable) peuvent présenter un risque s'ils servent à effectuer des actions sensibles, telles qu'une liste d'URL ou des paramètres de session.
Stockage externe
L'accès au stockage externe dans les applications ciblant Android 9 (niveau d'API 28) et inférieur à l'aide de getExternalFilesDir() donne aux autres applications le droit de lire et de modifier ces fichiers.
La méthode par laquelle les applications accèdent aux fichiers dans le stockage externe des appareils fonctionnant sous Android 10 (niveau d'API 29) ou supérieur a été modifiée. Pour les applications ciblant Android 10, une vue filtrée pour afficher les fichiers dans le stockage externe est fournie par défaut. Chaque application peut enregistrer les fichiers de l'application dans le répertoire spécifique à l'application et a en permanence des autorisations d'accès en lecture-écriture pour les fichiers créés, de sorte que l'autorisation n'a pas besoin d'être déclarée.
Recommandation
-
Le fichier doit être créé comme un fichier privé en principe : Quel que soit le contenu des informations à stocker, les fichiers doivent être définis comme privés, en principe. Du point de vue de la conception de la sécurité Android, l'échange d'informations et son contrôle d'accès doivent être effectués dans le système Android, par exemple via un Content Provider et un Service, etc., et au cas où cela serait impossible, il faut envisager de le substituer par l'autorisation d'accès aux fichiers comme méthode alternative.
-
Ne pas créer de fichiers autorisant l'accès en lecture/écriture à partir d'autres applications : Lors de l'autorisation d'autres applications à lire/écrire des fichiers, les informations stockées dans les fichiers ne peuvent pas être contrôlées. Ainsi, le partage d'informations en utilisant des fichiers publics en lecture/écriture ne doit pas être envisagé, tant du point de vue de la sécurité que de la conception des fonctionnalités.
-
L'utilisation de fichiers stockés dans un périphérique externe (par ex. carte SD) doit être le minimum requis : Stocker des fichiers dans un périphérique de mémoire externe comme une carte SD, conduit à des problèmes potentiels du point de vue de la sécurité et des fonctionnalités.
- Les informations sensibles ne doivent pas être enregistrées dans un fichier sur un périphérique de mémoire externe, en principe.
- Dans le cas où des informations sensibles sont enregistrées dans un fichier sur un périphérique de mémoire externe, elles doivent être chiffrées.
- Dans le cas où l'enregistrement dans un fichier sur un périphérique de mémoire externe d'informations qui causeraient des problèmes si elles étaient modifiées par d'autres applications ou utilisateurs, elles doivent être enregistrées avec une signature électronique.
- Lors de la lecture de fichiers dans un périphérique de mémoire externe, utilisez les données après avoir vérifié la sécurité des données à lire.
- L'application doit être conçue en supposant que les fichiers dans un périphérique de mémoire externe peuvent être supprimés à tout moment.
-
L'utilisation d'autorisations d'accès public doit être réservée aux cas où cela est strictement requis. D'autres moyens de partager des données entre applications sont recommandés au lieu de partager des fichiers en utilisant des autorisations non sécurisées.
-
L'application doit être conçue en tenant compte de la portée du fichier.
Liens
Normes
- OWASP_MASVS_L1:
- MSTG_STORAGE_2
- OWASP_MASVS_L2:
- MSTG_STORAGE_2
- CWE_TOP_25:
- CWE_276
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_7_3
- REQ_11_3
- OWASP_MASVS_v2_1:
- MASVS_STORAGE_2
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5
- HIPAA_CONTROLS:
- SECURITY221
- SECURITY212
- SECURITY213