Debug Symbols Present in the Android Application
Symboles de débogage présents dans l'application Android
Description
L'application est livrée avec des symboles de débogage et des informations de débogage telles que les informations de débogage, les numéros de ligne et les noms descriptifs de fonctions ou de méthodes, ce qui facilite la rétro-ingénierie (reverse engineering).
Il est à noter que la plupart des outils de rapport de plantage (crash reporting) prennent en charge le téléchargement de symboles pour effectuer la symbolisation des traces d'exécution (stack trace) et n'exigent pas que les symboles soient présents dans l'application.
Pour vérifier que les bibliothèques natives ne sont pas livrées avec des symboles de débogage, utilisez la commande suivante :
readelf --debug-dump=info <library>
Recommandation
Supprimez tous les symboles et données de débogage de l'application.
Pour ce faire, voici quelques recommandations :
- Configurez le type de build pour exclure les informations de débogage en compilant en mode release.
android {
...
buildTypes {
release {
debuggable false
...
}
}
}
- Utilisez ProGuard pour supprimer les symboles de débogage natifs.
buildTypes {
...
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
}
}
- Utilisez la commande
strippour supprimer les symboles des bibliothèques natives :
strip -s <library>
Liens
Normes
- 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