Sanitizer adalah sekelompok alat analisis dinamis yang menemukan kesalahan dalam program saat runtime melalui instrumentasi tambahan yang dimasukkan oleh kompiler. Ini termasuk mendeteksi masalah keamanan memori . Android mendukung dan sangat menyarankan penggunaan pembersih berikut:
HWAddress Sanitizer (HWASan)
HWASan adalah pembersih utama yang memberikan deteksi masalah keamanan memori. Ini membutuhkan ARM64 dan dapat mendeteksi:
- Tumpukan dan tumpukan buffer overflow atau underflow
- Tumpukan penggunaan setelah gratis
- Penggunaan tumpukan setelah cakupan
- Tumpukan penggunaan setelah pengembalian
- Bebas ganda atau bebas liar
Pembersih Alamat (ASan)
ASan adalah alat yang mirip dengan HWASan. Ini berfungsi di lebih banyak platform, tetapi tidak didukung di Android.
Pembersih Alamat Kernel
KASan adalah mitra kernel dari alat userspace di atas. Ini berbagi implementasi kompiler yang sama. KASAN dan ASan/HWASan saling melengkapi karena satu alat berlaku untuk kernel dan alat lainnya berlaku untuk ruang pengguna. Kami merekomendasikan untuk mengaktifkan keduanya secara bersamaan untuk mengurangi jumlah konfigurasi build dan mengurangi matriks pengujian.
Pembersih Perilaku Tidak Terdefinisi (UBSan)
UBSan melakukan instrumentasi waktu kompilasi untuk memeriksa berbagai jenis perilaku tidak terdefinisi (bukan keamanan memori). Ini termasuk pemeriksaan luapan bilangan bulat yang ditandatangani dan tidak ditandatangani (IntSan), pemeriksaan batas untuk array berukuran statis (BoundsSan), dan banyak jenis perilaku tidak terdefinisi lainnya. IntSan dan BoundsSan juga cocok untuk diaktifkan dalam produksi sebagai mitigasi keamanan.