Undeclared Permissions
Autorisations non déclarées
Description
Les applications peuvent exposer leurs fonctionnalités à d'autres applications en définissant des autorisations que ces autres applications peuvent demander.
Pour appliquer votre propre autorisation, vous devez d'abord la déclarer dans votre fichier AndroidManifest.xml à l'aide de l'élément <permission> avant de l'appliquer à vos composants à l'aide de android:permission=.
Si l'application applique une autorisation sans la déclarer, une application malveillante peut déclarer cette même autorisation avec un niveau de protection normal, la demander, et invoquer le composant protégé de votre application.
De plus, les autorisations non déclarées peuvent constituer un risque de sécurité, car l'utilisateur peut ne pas être conscient que l'application accède à des données sensibles ou à des ressources du système. Cela peut entraîner des violations de la vie privée ou d'autres problèmes de sécurité, comme l'accès à la localisation de l'utilisateur sans son consentement.
Recommandation
Avant de déclarer des autorisations dans votre application, déterminez si vous avez réellement besoin de l'autorisation en premier lieu, ou s'il existe un moyen alternatif de prendre en charge la fonctionnalité dans votre application.
- Déclarer une autorisation dans le fichier manifeste :
Avant d'appliquer une autorisation sur un composant, assurez-vous qu'elle est déclarée à l'aide de l'élément <permission>.
Par exemple, une application qui souhaite contrôler qui peut démarrer l'une de ses activités pourrait déclarer une autorisation pour cette opération de la manière suivante :
- Étape 1 : Je déclare une autorisation avec le nom
com.example.myapp.permission.DEADLY_ACTIVITYet je renseigne les attributs nécessaires. - Étape 2 : J'applique l'autorisation
com.example.myapp.permission.DEADLY_ACTIVITYsur mon activité.
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<permission
android:name="com.example.myapp.permission.DEADLY_ACTIVITY"
android:label="@string/permlab_deadlyActivity"
android:description="@string/permdesc_deadlyActivity"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous"/>
...
<activity android:exported="true" android:name="com.important.PushActivity"
android:permission="com.example.myapp.permission.DEADLY_ACTIVITY"/>
</manifest>
-
N'utilisez que l'ensemble minimal d'autorisations nécessaire aux fonctionnalités de votre application. Cela peut être accompli en examinant le code de votre application et en identifiant les ressources ou les données spécifiques dont l'application a besoin pour fonctionner correctement. Pour chaque autorisation demandée par votre application, assurez-vous qu'elle offre des avantages clairs aux utilisateurs et que la demande est effectuée d'une manière qui leur est évidente.
-
Utilisez les vérifications Lint dans Android Studio pour détecter et prévenir les autorisations non déclarées. Lint est un outil intégré à Android Studio qui analyse le code et les ressources d'une application pour identifier les problèmes potentiels, y compris les autorisations non déclarées. Lint peut être exécuté en sélectionnant "Analyze" -> "Run Inspection by Name" -> "Missing Permissions" dans Android Studio.
-
Analysez les autorisations de l'application à l'aide d'outils tels que APK Analyzer. APK Analyzer est un outil intégré à Android Studio qui permet aux développeurs d'inspecter le contenu d'un fichier APK, y compris ses autorisations, activités, services et autres composants. Les développeurs peuvent également utiliser des frameworks de test axés sur la sécurité tels qu'Appium, Selendroid et Robotium pour détecter et prévenir les vulnérabilités de sécurité, y compris les autorisations non déclarées.
-
Prenez en compte les dépendances de votre application : lorsque vous incluez une bibliothèque, vous héritez également de ses exigences en matière d'autorisations. Soyez conscient des autorisations que chaque dépendance requiert et de l'utilisation qui en est faite.
Liens
Normes
- OWASP_MASVS_L1:
- MSTG_PLATFORM_4
- OWASP_MASVS_L2:
- MSTG_PLATFORM_4
- CWE_TOP_25:
- CWE_276
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_7_3
- REQ_11_3
- OWASP_MASVS_v2_1:
- MASVS_PRIVACY_4
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5