GWP-ASan et KFENCE sont des outils de détection probabiliste de mémoire 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épassements de tampon et les utilisations après libération avec une surcharge de performances négligeable. Même avec un faible taux d'échantillonnage pour les allocations protégées, lorsqu'ils sont déployés à grande échelle, ils peuvent détecter efficacement les bogues de sécurité de la mémoire. Depuis leur introduction, ces outils ont permis d'identifier de nombreux bugs de la plateforme 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 bogues détectés sur les appareils des utilisateurs finaux.
Les développeurs doivent vérifier la présence de plantages en vérifiant /data/tombstones
, logcat
ou en surveillant le pipeline DropboxManager
du fournisseur pour détecter les bogues des utilisateurs finaux.
Pour plus d'informations, consultez nos documents sur le débogage du code natif Android.
Débogage du code natif de la plateforme AndroidGWP-ASan pour détecter les bugs de sécurité de la mémoire de l'espace utilisateur
GWP-ASan a été introduit dans Android 11 pour les allocations de tas d'espace utilisateur. Lorsque GWP-ASan détecte un bug, il enregistre un rapport de crash avec Cause: [GWP-ASan]:
et met fin au processus. Les rapports de bogues contiennent des informations supplémentaires sur l'allocation et la désallocation qui facilitent l'identification de la cause première.
GWP-ASan est activé de manière aléatoire, au démarrage, pour 1 % des processus ou applications système et pour les applications qui définissent le android:gwpAsanMode
dans leur fichier AndroidManifest.xml
.
KFENCE pour détecter les bogues de sécurité de la mémoire du noyau
Android 12 a introduit KFENCE pour les allocations de tas du noyau. Lorsque KFENCE détecte un bug, il enregistre un rapport de crash commençant par BUG: KFENCE,
désactive les pages de garde et poursuit l'exécution. Cela active un mécanisme de détection des bogues 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