Les désinfectants sont un groupe d'outils d'analyse dynamique qui détectent les erreurs dans les programmes au moment de l'exécution grâce à 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 prend en charge et recommande fortement l'utilisation des désinfectants suivants :
Désinfectant HWAddress (HWASan)
HWASan est le principal désinfectant permettant de détecter les problèmes de sécurité de la mémoire. Il nécessite ARM64 et peut détecter :
- Dépassement ou dépassement insuffisant de la pile et du tas
- Utilisation du tas après gratuité
- Utilisation de la pile après la portée
- Utilisation de la pile après le retour
- Double gratuit ou sauvage gratuit
Désinfectant d’adresse (ASan)
ASan est un outil similaire à HWASan. Il fonctionne sur davantage de plates-formes, mais n'est pas pris en charge sur Android.
Désinfectant KernelAddress
KASan est l'équivalent noyau des outils de l'espace utilisateur ci-dessus. Il partage la même implémentation du compilateur. KASAN et ASan/HWASan sont complémentaires puisqu'un outil s'applique au noyau et un autre à l'espace utilisateur. Nous recommandons d'activer les deux en même temps pour réduire le nombre de configurations de build et la matrice de test.
Désinfectant comportemental non défini (UBSan)
UBSan effectue une instrumentation au moment de la compilation pour vérifier différents types de comportements non définis (non liés à la sécurité de la mémoire). Cela inclut la vérification de dépassement d'entier signé et non signé (IntSan), la vérification des limites des tableaux de taille statique (BoundsSan) et de nombreux autres types de comportement non défini. IntSan et BoundsSan conviennent également à l'activation en production en tant que mesure d'atténuation de la sécurité.