Igienizzanti

I disinfettanti sono un gruppo di strumenti di analisi dinamica che individuano gli errori nei programmi in fase di esecuzione tramite strumenti aggiuntivi inseriti dal compiler. Sono inclusi i problemi di sicurezza della memoria. Android supporta e consiglia vivamente di utilizzare i seguenti sterilizzatori:

AddressSanitizer con l'aiuto dell'hardware (HWASan)

HWASan è lo strumento di sanitizzazione principale per il rilevamento di problemi di sicurezza della memoria. Richiede ARM64 e può rilevare:

  • Overflow o underflow del buffer dello stack e dell'heap
  • Utilizzo dell'heap dopo il rilascio
  • Utilizzo dello stack dopo l'ambito
  • Utilizzo della pila dopo il reso
  • Doppio libero o libero selvaggio

Sanitizer degli indirizzi (ASan)

ASan è uno strumento simile a HWASan. Funziona su più piattaforme, ma non è supportato su Android.

KernelAddress sanitizer (KASan)

KASan è la controparte del kernel degli strumenti nello spazio utente sopra indicati. Condivide la stessa implementazione del compilatore. KASan e ASan/HWASan sono complementari in quanto uno strumento si applica al kernel e l'altro allo spazio utente. Ti consigliamo di attivarli entrambi contemporaneamente per ridurre il numero di configurazioni di compilazione e la matrice di test.

Strumento di analisi di UndefinedBehavior (UBSan)

UBSan esegue la misurazione in fase di compilazione per verificare la presenza di vari tipi di comportamenti non definiti (non sicuri per la memoria). Sono inclusi il controllo di overflow di interi con segno e senza segno (IntSan), i controlli dei limiti per gli array con dimensioni statiche (BoundsSan) e molti altri tipi di comportamenti non definiti. IntSan e BoundsSan sono adatti anche per l'attivazione in produzione come misura di mitigazione della sicurezza.