सैनिटाइज़र, डाइनैमिक विश्लेषण टूल का एक ग्रुप है. ये टूल, कंपाइलर के डाले गए अतिरिक्त इंस्ट्रूमेंटेशन की मदद से, प्रोग्राम के रनटाइम पर गड़बड़ियों का पता लगाते हैं. इसमें मेमोरी की सुरक्षा से जुड़ी समस्याओं का पता लगाना भी शामिल है. Android, इन सैनिटाइज़र के साथ काम करता है और इनका इस्तेमाल करने का सुझाव देता है:
हार्डवेयर की मदद से काम करने वाला AddressSanitizer (HWASan)
HWASan मुख्य सैनिटाइज़र है, जो मेमोरी की सुरक्षा से जुड़ी समस्याओं का पता लगाता है. इसके लिए, ARM64 की ज़रूरत होती है. साथ ही, यह इनका पता लगा सकता है:
- स्टैक और हेप बफ़र ओवरफ़्लो या अंडरफ़्लो
- फ़्री होने के बाद हीप का इस्तेमाल
- स्कोप के बाद स्टैक का इस्तेमाल
- 'वापस जाएं' के बाद स्टैक का इस्तेमाल
- डबल फ़्री या वाइल्ड फ़्री
पते को सुरक्षित बनाने वाला टूल (ASan)
ASan, HWASan जैसा ही एक टूल है. यह कई प्लैटफ़ॉर्म पर काम करता है, लेकिन Android पर काम नहीं करता.
KernelAddress sanitizer (KASan)
KASan, ऊपर दिए गए यूज़रस्पेस टूल का कर्नेल वर्शन है. यह एक ही कंपाइलर लागू करता है. KASan और ASan/HWASan एक-दूसरे के साथ काम करते हैं, क्योंकि एक टूल, कर्नेल पर लागू होता है और दूसरा यूज़रस्पेस पर. हमारा सुझाव है कि बिल्ड कॉन्फ़िगरेशन की संख्या कम करने और टेस्टिंग मैट्रिक को कम करने के लिए, दोनों को एक साथ चालू करें.
UndefinedBehavior sanitizer (UBSan)
UBSan, कॉम्पाइल के समय इंस्ट्रूमेंटेशन करता है, ताकि अलग-अलग तरह के (मेमोरी सेफ़्टी के अलावा) अनिर्धारित व्यवहार की जांच की जा सके. इसमें, साइन वाले और साइन न होने वाले पूर्णांक के ओवरफ़्लो की जांच (IntSan), स्टैटिक साइज़ वाले ऐरे के लिए सीमाओं की जांच (BoundsSan), और कई तरह के अन्य अनिर्धारित व्यवहार शामिल हैं. IntSan और BoundsSan, सुरक्षा से जुड़ी समस्याओं को कम करने के लिए, प्रोडक्शन में भी इस्तेमाल किए जा सकते हैं.