Aller au contenu

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 strip pour 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