Undeclared Permissions
Permisos no declarados
Descripción
Las aplicaciones pueden exponer su funcionalidad a otras aplicaciones definiendo permisos que esas otras aplicaciones pueden solicitar.
Para aplicar su propio permiso, primero debe declararlo en su AndroidManifest.xml usando el elemento <permission> antes de aplicarlo a sus componentes usando android:permission=.
Si la aplicación aplica un permiso sin declararlo, una aplicación maliciosa puede declarar ese permiso con un nivel de protección normal, solicitarlo e invocar el componente protegido de su aplicación.
Además, los permisos no declarados pueden ser un riesgo de seguridad, ya que el usuario puede no ser consciente de que la aplicación está accediendo a datos confidenciales o recursos del sistema. Esto podría dar lugar a violaciones de la privacidad u otros problemas de seguridad, como que una aplicación acceda a la ubicación del usuario sin su consentimiento.
Recomendación
Antes de declarar permisos en su aplicación, considere si necesita el permiso en primer lugar, o si hay una forma alternativa de admitir la funcionalidad en su aplicación.
- Declarar un permiso en el archivo de manifiesto:
Antes de aplicar un permiso en cualquier componente, asegúrese de que esté declarado mediante el elemento <permission>.
Por ejemplo, una aplicación que quiera controlar quién puede iniciar una de sus actividades podría declarar un permiso para esta operación de la siguiente manera:
- Paso 1: Declaro un permiso con el nombre
com.example.myapp.permission.DEADLY_ACTIVITYy completo los atributos necesarios. - Paso 2: Aplico el permiso
com.example.myapp.permission.DEADLY_ACTIVITYen mi actividad.
<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>
-
Utilice únicamente el conjunto mínimo de permisos necesario para la funcionalidad de su aplicación. Esto se puede lograr revisando el código de su aplicación e identificando los recursos o datos específicos que la aplicación requiere para funcionar correctamente. Para cada permiso que solicite su aplicación, asegúrese de que ofrezca beneficios claros a los usuarios y de que la solicitud se realice de una manera que les resulte obvia.
-
Utilice comprobaciones lint en Android Studio para detectar y evitar permisos no declarados. Lint es una herramienta integrada en Android Studio que analiza el código y los recursos de una aplicación para identificar posibles problemas, incluidos los permisos no declarados. Lint se puede ejecutar seleccionando "Analyze" -> "Run Inspection by Name" -> "Missing Permissions" en Android Studio.
-
Analice los permisos de la aplicación mediante herramientas como APK Analyzer. APK Analyzer es una herramienta integrada en Android Studio que permite a los desarrolladores inspeccionar el contenido de un archivo APK, incluidos sus permisos, actividades, servicios y otros componentes. Los desarrolladores también pueden utilizar marcos de pruebas centrados en la seguridad como Appium, Selendroid y Robotium para detectar y prevenir vulnerabilidades de seguridad, incluidos los permisos no declarados.
-
Tenga en cuenta las dependencias de su aplicación: cuando incluye una biblioteca, también hereda sus requisitos de permisos. Tenga en cuenta los permisos que requiere cada dependencia y para qué se utilizan esos permisos.
Enlaces
Estándares
- 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