Debug Symbols Present in the Android Application
Símbolos de depuración presentes en la aplicación de Android
Descripción
La aplicación se distribuye con símbolos de depuración e información de depuración, como información de depuración, números de línea y nombres descriptivos de funciones o métodos, lo que facilita la ingeniería inversa.
Cabe destacar que la mayoría de las herramientas de reporte de fallos (crash reporting) admiten la carga de símbolos para realizar la simbolización del seguimiento de pila (stack trace) y no requieren que los símbolos estén presentes en la aplicación.
Para verificar que las bibliotecas nativas no se distribuyan con símbolos de depuración, use el siguiente comando:
readelf --debug-dump=info <library>
Recomendación
Elimine todos los símbolos y datos de depuración de la aplicación.
Para hacerlo, aquí hay algunas recomendaciones:
- Configure el tipo de compilación (build type) para excluir la información de depuración compilando en modo de lanzamiento (release mode).
android {
...
buildTypes {
release {
debuggable false
...
}
}
}
- Use ProGuard para eliminar los símbolos de depuración nativos.
buildTypes {
...
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
}
}
- Use el comando
strippara eliminar los símbolos de las bibliotecas nativas:
strip -s <library>
Enlaces
Estándares
- OWASP_MASVS_L1:
- MSTG_CODE_3
- OWASP_MASVS_L2:
- MSTG_CODE_3
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- OWASP_MASVS_v2_1:
- MASVS_RESILIENCE_3
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213