Services declared without permissions
Servicios declarados sin permisos
Descripción
Un service es un componente de la aplicación que puede encargarse de acciones a realizar en segundo plano, sin la interacción del usuario. Un service también se puede utilizar para exponer funcionalidades a otras aplicaciones. Esto corresponde a las llamadas a Context.bindService() para establecer una conexión con el servicio e interactuar con él.
Los servicios no protegidos pueden ser invocados por otras aplicaciones y potencialmente acceder a información confidencial o realizar acciones privilegiadas.
Recomendación
Un service puede exponer varios métodos a componentes externos. Es posible definir permisos arbitrarios para cada método utilizando el método checkPermission.
También es posible separar los servicios y restringir el acceso aplicando permisos en la etiqueta <service> del manifiesto.
<permission android:name="co.ostorlab.custom_permission" android:label="custom_permission"
android:protectionLevel="dangerous"></permission>
<service android:name="co.ostorlab.custom_service" android:permission="co.ostorlab.custom_permission">
<intent-filter>
<action android:name="co.ostorlab.ACTION"/>
</intent-filter>
</service>
El servicio puede aplicar permisos en llamadas IPC individuales llamando al método checkCallingPermission antes de ejecutar la implementación de esa llamada.
Enlaces
- Security Decisions Via Untrusted Inputs (OWASP Mobile Top 10)
- Service (Android Developer Documentation)
- CWE-280: Improper Handling of Insufficient Permissions or Privileges
Estándares
- OWASP_MASVS_L1:
- MSTG_PLATFORM_2
- OWASP_MASVS_L2:
- MSTG_PLATFORM_2
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_7_3
- REQ_11_3
- OWASP_MASVS_v2_1:
- MASVS_AUTH_1
- HIPAA_CONTROLS:
- SECURITY221
- SECURITY212
- SECURITY213
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5