Android — Android Manifest 02

CrhystamiL
3 min readNov 29, 2019

Cada aplicación tiene un archivo Android Manifest, el nombre estándar de este archivo es AndroidManifest.xml. Se encuentra en el directorio raíz del archivo APK o aplicación.

El archivo manifest describe la estructura de la aplicación, sus componentes (activities, services, content providers e intent receivers) y solicitudes de permisos. También contiene meta-datos generales de la aplicación. Como iconos de la aplicación, numero de versión y temas. El archivo puede listar otra información como las APIs compatibles para la aplicación y el tipo de almacenamiento en el que se puede instalar (externo o interno).

Un ejemplo del archivo manifest, incluye el nombre del paquete, también enumera la versión de la aplicación, SDK relevantes, permisos requeridos, proveedores de contenido, receptores de difusión y una descripción de la aplicación y sus actividades.

<manifest
package="com.owasp.myapplication"
android:versionCode="0.1" >

<uses-sdk android:minSdkVersion="12"
android:targetSdkVersion="22"
android:maxSdkVersion="25" />

<uses-permission android:name="android.permission.INTERNET" />

<provider
android:name="com.owasp.myapplication.myProvider"
android:exported="false" />

<receiver android:name=".myReceiver" >
<intent-filter>
<action android:name="com.owasp.myapplication.myaction" />
</intent-filter>
</receiver>

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Material.Light" >
<activity
android:name="com.owasp.myapplication.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>
</manifest>

La lista completa de opciones se encuentra en la documentación oficial.

Revisión de Seguridad

Juega un papel importante para cada aplicación de Android. El AndroidManifest determina los permisos que requerirá la aplicación, las acciones que la aplicación puede realizar y otras actividades generales.

  • El nombre del paquete de la aplicación
  • Componentes, actividades, servicios utilizados por la aplicación.
  • Permisos que necesita para consumir recursos del sistema o de otras aplicaciones.
  • Características de hardware y software.

El AndroidManifest.xml es lo mas importante que se debe verificar en el análisis estático de la aplicación. Los desarrolladores deben asegurarse que el archivo no contenta configuraciones erróneas.

allowBackup

android:allowBackup — el atributo define si los datos de la aplicación pueden ser respaldados y restaurados por un usuario, esto se realiza mediante la depuración usb.

Este proceso se puede realizar si el parámetro esta en TRUE y no es necesario tener un dispositivo rooteado. Por lo tanto las aplicaciones que manejen información confidencial de los usuarios como tarjetas de crédito, contraseña etc., deben tener este parámetro en FALSE.

<applicationandroid:allowBackup=”false”</application>

Debug

android:debuggable — define si la aplicación se puede depurar o no. Si este atributo esta como TRUE as un atacante puede acceder a los datos de la aplicación asumiendo los privilegios de la aplicación e incluso puede ejecutar código bajo los permisos de la aplicación.

En el caso que el atributo este en FALSE el atacante primero deberá rootear el dispositivo para extraer cualquier dato.

<applicationandroid:debuggable=”false”</application>

Permisos

android:protectionLevel — este atributo define el procedimiento que debe seguir el sistema antes de otorgar el permiso a la aplicación que lo ha solicitado. El propósito de proveer este permiso es para proteger la privacidad del usuario , las aplicación solicitan permisos para acceder a información como contactos,sms,etc., asi como ciertas funciones del sistema.

Depende el permiso solicitado, el sistema puede otorgar el permiso automáticamente o solicitar aprobación del usuario.

Niveles de proteccion

  • normal
  • dangerous
  • signature
  • signatureOrSystem

Se debe revisar todos los permisos que solicita la aplicación para garantizar que no presenten riesgos de seguridad.

<permission>android:protectionLevel=”signature”</permission>

Los desarrolladores deben revisar bien esos atributos del archivo AndroidManifest.xml para evitar riesgos de seguridad, ya que un atacante o auditor de seguridad puede realizar un análisis de este para encontrar diferentes vulnerabilidades

Para profundizar mas sobre la seguridad de este archivo pueden leer la documentación de android.

Happy hacking

--

--

CrhystamiL

CEH, CyberSecurity Researcher,Ethical Hacker, GNU/Linux Lover.