The Chromium Chronicle #9: ClusterFuzz

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

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

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

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

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

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.

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

ये काम करने में आपकी मदद की जा सकती है:

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

रिसॉर्स

  • Chromium में फ़ज़ टेस्टिंग: नए डेटा फ़ॉर्मैट के लिए क्लस्टरफ़्यूज़ में नए फ़ज़र कैसे जोड़ें या सिर्फ़ इसलिए कि आपको शानदार खलनाय ढूंढने का क्रेडिट चाहिए.
  • Chrome Fuzzer Program के बारे में अपडेट और 'कैसे करें': फ़ज़र को योगदान देने वाले बाहरी लोगों ने भी लिखा होता है. उनके अनुभव के बारे में जानें और जानें कि शुरुआत करना कितना आसान हो सकता है.