सैनेटाइज़र

सैनिटाइज़र गतिशील विश्लेषण उपकरणों का एक समूह है जो कंपाइलर द्वारा डाले गए अतिरिक्त उपकरण के माध्यम से रनटाइम पर प्रोग्राम में गलतियों का पता लगाता है। इसमें मेमोरी सुरक्षा समस्याओं का पता लगाना शामिल है। एंड्रॉइड निम्नलिखित सैनिटाइज़र का समर्थन करता है और उनके उपयोग की पुरजोर अनुशंसा करता है:

एचडब्ल्यूएड्रेस सैनिटाइजर (एचडब्ल्यूएसन)

HWASan स्मृति सुरक्षा समस्याओं का पता लगाने वाला मुख्य सैनिटाइज़र है। इसके लिए ARM64 की आवश्यकता है और यह पता लगा सकता है:

  • स्टैक और हीप बफ़र ओवरफ़्लो या अंडरफ़्लो
  • मुफ़्त के बाद ढेर का उपयोग करें
  • स्कोप के बाद स्टैक का उपयोग
  • वापसी के बाद स्टैक का उपयोग करें
  • डबल फ्री या वाइल्ड फ्री

एड्रेस सेनिटाइजर (एएसएएन)

ASan, HWASan के समान एक उपकरण है। यह अधिक प्लेटफ़ॉर्म पर काम करता है, लेकिन Android पर असमर्थित है।

कर्नेलएड्रेस सैनिटाइज़र

KASan उपरोक्त यूजरस्पेस टूल का कर्नेल समकक्ष है। यह समान कंपाइलर कार्यान्वयन साझा करता है। KASAN और ASan/HWASan पूरक हैं क्योंकि एक उपकरण कर्नेल पर और दूसरा उपयोगकर्ता स्थान पर लागू होता है। हम बिल्ड कॉन्फ़िगरेशन की संख्या को कम करने और परीक्षण मैट्रिक्स को कम करने के लिए एक ही समय में दोनों को सक्षम करने की सलाह देते हैं।

अपरिभाषित व्यवहार सैनिटाइज़र (UBSan)

यूबीएसएन विभिन्न प्रकार के (गैर-मेमोरी-सुरक्षा) अपरिभाषित व्यवहार की जांच के लिए संकलन-समय उपकरण निष्पादित करता है। इसमें हस्ताक्षरित और अहस्ताक्षरित पूर्णांक अतिप्रवाह जाँच (इंटसैन), स्थिर आकार के सरणियों (बाउंडसैन) के लिए सीमा जाँच, और कई अन्य प्रकार के अपरिभाषित व्यवहार शामिल हैं। सुरक्षा शमन के रूप में उत्पादन में सक्षम बनाने के लिए IntSan और BoundsSan भी उपयुक्त हैं।