GWP-ASan et KFENCE sont des outils de détection de la mémoire probabiliste pour l'espace utilisateur et le noyau, respectivement. Lorsqu'elle est activée, un petit nombre d'allocations sont protégées par des pages de mémoire supplémentaires qui entourent la mémoire allouée. Cela permet de détecter les débordements de mémoire tampon et les utilisations après libération à un coût négligeable en termes de performances. Même avec un faible taux d'échantillonnage pour les allocations protégées, lorsqu'elles sont déployées à grande échelle, elles peuvent détecter efficacement les bugs de sécurité de la mémoire. Depuis leur introduction, ces outils ont permis d'identifier de nombreux bugs de plate-forme et se sont révélés être un outil précieux pour améliorer la stabilité et la sécurité. Nous encourageons les fournisseurs à les activer et à surveiller de près les bugs détectés sur les appareils des utilisateurs finaux.
Les développeurs doivent vérifier la présence de plantages en consultant /data/tombstones
, logcat
ou en surveillant le pipeline DropboxManager
du fournisseur pour détecter les bugs de l'utilisateur final.
Pour en savoir plus, consultez notre documentation sur le débogage du code natif Android.
Déboguer le code natif de la plate-forme AndroidGWP-ASan pour détecter les bugs de sécurité de la mémoire dans l'espace utilisateur
GWP-ASan a été introduit dans Android 11 pour les allocations de tas dans l'espace utilisateur. Lorsque GWP-ASan détecte un bug, il enregistre un rapport d'erreur avec Cause: [GWP-ASan]:
et met fin au processus. Les rapports de bugs contiennent des informations supplémentaires sur l'allocation et la désallocation, ce qui permet d'identifier plus facilement l'origine du problème.
GWP-ASan est activé de manière aléatoire, au démarrage, pour 1% des applications ou processus système, ainsi que pour les applications qui définissent android:gwpAsanMode
dans leur fichier AndroidManifest.xml
.
KFENCE pour détecter les bugs de sécurité de la mémoire du noyau
Android 12 a introduit KFENCE pour les allocations de tas de noyau. Lorsque KFENCE détecte un bug, il enregistre un rapport d'erreur à partir de BUG: KFENCE,
, désactive les pages de protection et poursuit l'exécution.
Cela permet d'activer un mécanisme de détection des bugs du noyau qui a un impact minimal sur l'expérience utilisateur.
Pour en savoir plus sur KFENCE, consultez la documentation disponible sur https://www.kernel.org.