The Chromium Chronicle #9: ClusterFuzz

नौवां एपिसोड: माउंटेन व्यू में एड्रियन टेलर की पेशकश (दिसंबर 2019)
पिछले एपिसोड

आपको लग सकता है कि आपसे ज़्यादा प्राथमिकता वाली सुरक्षा से जुड़ी उन गड़बड़ियों को ठीक करने के लिए कहा गया है जिन्हें Google ने खोजा है ClusterFuzz. यह क्या है? क्या आपको उन गड़बड़ियों को गंभीरता से लेना चाहिए? तुम क्या कर सकती हो मदद चाहिए?

फ़ज़िंग फ़्लो चार्ट

clusterFuzz Chrome को इनपुट फ़ीड करता है और क्रैश की जानकारी देखता है. इनमें से कुछ Chrome बिल्ड के लिए कुछ और जांच करने की सुविधा चालू होती है. उदाहरण के लिए, AddressSanitizer, जो मेमोरी की सुरक्षा से जुड़ी गड़बड़ियों को ढूँढती है.

ClusterFuzz क्रैश होने की जगह के आधार पर कॉम्पोनेंट असाइन करता है और असाइन करता है क्रैश किस तरह का है और क्या यह सैंडबॉक्स किए गए क्रैश में हुआ है, इसके हिसाब से उसकी गंभीरता प्रोसेस. उदाहरण के लिए, हीप का इस्तेमाल करने के बाद, उसे ज़्यादा गंभीरता से लिया जाएगा. हालांकि, ऐसा तभी होगा, जब वह ब्राउज़र प्रोसेस में होता है. इस मामले में यह अहम होता है (किसी सैंडबॉक्स को असर!):

class Foo {
  Widget* widget;
};

void Foo::Bar() {
  delete widget;
  ...
  widget->Activate();  // Bad in the renderer process, worse in the
                       // browser process. Obviously, real bugs are
                       // more subtle. Usually.

ClusterFuzz, फ़ज़र्स या संगठन से बाहर सबमिट की गई गड़बड़ियों से इनपुट जनरेट करता है. कुछ फ़ज़्ज़र libFuzzer की मदद से काम करते हैं, जो कोड का कवरेज बढ़ाने के लिए. कुछ लोगों को इनपुट भाषा का व्याकरण समझ आता है protobufs में बदला गया. जब ClusterFuzz को क्रैश का पता चलता है, तो यह इनपुट टेस्ट केस को छोटा कर सकते हैं. साथ ही, आपत्तिजनक कॉन्टेंट को ढूंढने के लिए उसे अलग-अलग हिस्सों में भी बांट सकते हैं. मुझे बहुत कुछ मिलता है...

आप मदद कर सकते हैं:

  • ऑब्जेक्ट के लाइफ़टाइम और पूर्णांक ओवरफ़्लो.
  • नए फ़ज़्ज़र जोड़ें, खासकर जब आप गैर-भरोसेमंद डेटा या आईपीसी को प्रोसेस करते हों (देखें नीचे दिए गए लिंक, अक्सर < 20 लाइनें).
  • ClusterFuzz से रिपोर्ट की गई गड़बड़ियों को ठीक करना: इसकी गंभीरता के अनुभव से जुड़ी जांच पर भरोसा किया जा सकता है, क्योंकि ये फ़ैसले असल दुनिया में होने वाले शोषण पर आधारित होते हैं: यहां तक कि सिंगल बाइट ओवरफ़्लो की वजह से, हमलावर.

संसाधन