הכלי לניקוי קוד הוא קבוצה של כלי ניתוח דינמיים שמאתרים שגיאות בתוכניות בזמן הריצה באמצעות מכשירי מדידה נוספים שהמְקַמֵל הוסיף. זה כולל זיהוי בעיות של בטיחות זיכרון. מערכת Android תומכת בחיטוי הנתונים הבאים וממליצה מאוד להשתמש בהם:
AddressSanitizer (HWASan) בסיוע חומרה
HWASan הוא הכלי העיקרי לזיהוי בעיות של בטיחות בזיכרון. היא דורשת ARM64 ויכולה לזהות:
- זליגה או מחסור ב-buffer של סטאק ושל אשכול
- שימוש בערימה (heap) אחרי 'free'
- שימוש ב-Stack אחרי היקף
- שימוש ב-stack אחרי החזרה
- Double free או wild free
מנקה כתובות (ASan)
ASan הוא כלי שדומה ל-HWASan. הוא פועל בפלטפורמות נוספות, אבל אין תמיכה בו ב-Android.
KernelAddress sanitizer (KASan)
KASan הוא המקבילה בליבה לכלים של מרחב המשתמש שצוינו למעלה. הוא משתמש באותה הטמעה של המהדר. KASan ו-ASan/HWASan הם משלימים, כי הכלי אחד חל על הליבה והכלי השני על מרחב המשתמש. מומלץ להפעיל את שניהם בו-זמנית כדי לצמצם את מספר הגדרות ה-build ולצמצם את מטריצת הבדיקות.
UndefinedBehavior sanitizer (UBSan)
UBSan מבצע כלי למדידת ביצועים בזמן הידור כדי לבדוק סוגים שונים של התנהגות לא מוגדרת (לא בטוחה לזיכרון). הבדיקה הזו כוללת בדיקה של זליגת נתונים (overflow) במספרים שלמים עם סימן ובלי סימן (IntSan), בדיקות גבולות למערכים בגודל סטטי (BoundsSan) והרבה סוגים אחרים של התנהגות לא מוגדרת. אפשר להפעיל את IntSan ו-BoundsSan גם בסביבת הייצור כפעולת מיטיגציה לאבטחה.