I disinfettanti sono un gruppo di strumenti di analisi dinamica che rilevano errori nei programmi in fase di esecuzione tramite strumentazione aggiuntiva inserita dal compilatore. Ciò include il rilevamento dei problemi di sicurezza della memoria . Android supporta e consiglia vivamente l'utilizzo dei seguenti disinfettanti:
HWAdisinfettante per indirizzi (HWASan)
HWASan è il principale disinfettante per fornire il rilevamento dei problemi di sicurezza della memoria. Richiede ARM64 e può rilevare:
- Overflow o underflow del buffer di stack e heap
- Utilizzo dell'heap dopo la disponibilità
- Impila l'uso dopo l'ambito
- Utilizzo dello stack dopo la restituzione
- Doppio gratis o wild free
Disinfettante per indirizzi (ASan)
ASan è uno strumento simile a HWASan. Funziona su più piattaforme, ma non è supportato su Android.
Disinfettante KernelAddress
KASan è la controparte kernel degli strumenti dello spazio utente di cui sopra. Condivide la stessa implementazione del compilatore. KASAN e ASan/HWASan sono complementari poiché uno strumento si applica al kernel e un altro allo spazio utente. Ti consigliamo di abilitarli entrambi contemporaneamente per ridurre il numero di configurazioni di build e ridurre la matrice di test.
Sanitizzante per comportamenti indefiniti (UBSan)
UBSan esegue la strumentazione in fase di compilazione per verificare vari tipi di comportamento indefinito (non di sicurezza della memoria). Ciò include il controllo dell'overflow di interi con segno e senza segno (IntSan), il controllo dei limiti per array di dimensioni statiche (BoundsSan) e molti altri tipi di comportamento indefinito. IntSan e BoundsSan sono adatti anche per l'abilitazione in produzione come mitigazione della sicurezza.