Solutions désinfectantes

Les outils de nettoyage sont un groupe d'outils d'analyse dynamique qui détectent les erreurs dans les programmes au moment de l'exécution via une instrumentation supplémentaire insérée par le compilateur. Cela inclut la détection des problèmes de sécurité de la mémoire. Android est compatible avec les nettoyeurs suivants et vous recommande vivement de les utiliser:

AddressSanitizer (HWASan) assisté par le matériel

HWASan est le principal outil de nettoyage qui permet de détecter les problèmes de sécurité de la mémoire. Il nécessite ARM64 et peut détecter:

  • Débordement positif/négatif de la pile ou du tampon de tas de mémoire
  • Bugs "use-after-free" au niveau des tas de mémoire
  • Utilisation de la pile après le champ d'application
  • Utilisation de la pile après le retour
  • Bugs de type "double free" ou "wild free"

Address Sanitizer (ASan)

ASan est un outil semblable à HWASan. Il fonctionne sur davantage de plates-formes, mais n'est pas compatible avec Android.

KernelAddress Sanitizer (KASan)

KASan est le pendant du kernel des outils de l'espace utilisateur ci-dessus. Il partage la même implémentation de compilateur. KASan et ASan/HWASan sont complémentaires, car l'un s'applique au noyau et l'autre à l'espace utilisateur. Nous vous recommandons d'activer les deux en même temps pour réduire le nombre de configurations de compilation et la matrice de test.

UndefinedBehavior Sanitizer (UBSan)

UBSan effectue une instrumentation au moment de la compilation pour rechercher différents types de comportements non définis (non sécurisés en termes de mémoire). Cela inclut la vérification des débordements d'entiers signés et non signés (IntSan), les vérifications des limites pour les tableaux de taille statique (BoundsSan) et de nombreux autres types de comportements non définis. IntSan et BoundsSan peuvent également être activés en production pour atténuer les risques de sécurité.