Automatic, Expressive, and Scalable Fuzzing with Stitching
यह शोध पत्र STITCH को प्रस्तुत करता है, जो एक स्वचालित फ़ज़िंग सिस्टम है जो स्टैटिक टाइपिंग और डायनेमिक टाइपस्टेट ट्रैकिंग को रनटाइम-असेंबल की गई अनुक्रमों में "स्टिच" करने के लिए संयोजित करता है, जिससे स्केलेबल और अभिव्यंजक बग खोज सक्षम होती है जो कवरेज, परिशुद्धता और पाई गई नई कमजोरियों की संख्या में अत्याधुनिक उपकरणों से काफी बेहतर प्रदर्शन करती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप यह पता लगाने की कोशिश कर रहे हैं कि एक जटिल मशीन (जैसे कि कोई सॉफ्टवेयर लाइब्रेरी) किस-किस तरह से टूट सकती है। आपके पास एक रोबोट टेस्टर (एक "फज़र") है जिसका काम मशीन को रैंडम इनपुट देकर उसे छेड़ना है ताकि यह देखा जा सके कि वह क्रैश होती है या नहीं।
समस्या यह है कि आधुनिक सॉफ्टवेयर एक विशाल, जटिल लेगो (Lego) महल की तरह है। यदि आप बस रैंडम लेगो ब्रिक्स उस पर फेंकते हैं, तो आप ज्यादातर केवल उन्हीं हिस्सों को गिराएंगे जो पहले से ही ढीले थे, या आप टुकड़ों का एक ऐसा ढेर बना देंगे जो आपस में फिट ही नहीं बैठता। आप शायद ही कभी असली छिपे हुए संरचनात्मक दोषों (structural flaws) को ढूंढ पाएंगे क्योंकि रोबोट को यह नहीं पता कि ईंटों को आपस में कैसे जुड़ना चाहिए।
यह पेपर इस नए तरीके को पेश करता है जिससे आप रोबोट को वैध संरचनाएं बनाना सिखा सकते हैं ताकि वह असली दरारों को खोज सके। वे इस तकनीक को "स्टिचिंग" (Stitching) कहते हैं।
यहाँ सरल उपमाओं (analogies) का उपयोग करके इसका विवरण दिया गया है:
1. समस्या: "रैंडम थ्रो" बनाम "द रूलबुक"
- पुराना तरीका (फिक्स्ड सीक्वेंस): कल्पना कीजिए कि एक रोबोट है जिसे हमेशा एक विशिष्ट टावर बनाने के लिए प्रोग्राम किया गया है: ईंट A, फिर ईंट B, फिर ईंट C। यह तेज़ है, लेकिन यह केवल वही एक टावर बना सकता है। यदि असली बग तब होता है जब आप एक पुल बनाते हैं (ईंट A, फिर ईंट D), तो रोबोट उसे कभी नहीं ढूंढ पाएगा।
- पुराना तरीका (शुद्ध रैंडमनेस): कल्पना कीजिए कि एक रोबोट रैंडम तरीके से ईंटें उठाता है और उन्हें जोड़ने की कोशिश करता है। वह एक चौकोर छेद में गोल खूँटा डालने की कोशिश करता है। मशीन चिल्लाती है "ERROR!" और क्रैश हो जाती है, लेकिन यह कोई असली बग नहीं है; यह सिर्फ रोबोट की अनाड़ीपन है। रोबोट अपना सारा समय "अनाड़ी" त्रुटियों को खोजने में बर्बाद कर देता है बजाय इसके कि वह "संरचनात्मक" (structural) त्रुटियों को खोजे।
2. समाधान: "स्टिचिंग" (Stitching)
लेखक एक बीच का रास्ता प्रस्तावित करते हैं। रोबोट को एक निश्चित रेसिपी या रैंडम ईंटों का थैला देने के बजाय, वे उसे पहले से बने, वैध लेगो सेगमेंट्स (जिन्हें "ब्लॉक्स" कहा जाता है) का एक बॉक्स देते हैं।
- ब्लॉक्स (The Blocks): प्रत्येक ब्लॉक कोड का एक छोटा, वैध हिस्सा है जो एक चीज़ को सही ढंग से करता है (जैसे, "एक डॉक्यूमेंट बनाना")।
- स्टिचिंग (The Stitching): रोबोट को इन ब्लॉक्स को उठाने और उन्हें किसी भी क्रम में जोड़ने की अनुमति है, जब तक कि वे आपस में फिट बैठते हों।
- जादुई गोंद (Typestate): यह इस पेपर का सबसे बड़ा नवाचार है। आमतौर पर, लेगो के निर्देश केवल आकार के बारे में होते हैं (एक 2x4 की ईंट 2x4 के छेद में फिट होती है)। लेकिन वास्तविक सॉफ्टवेयर में 'स्टेट' (state) के बारे में नियम होते हैं। उदाहरण के लिए, "आप दीवार बनाने से पहले उस पर पेंट नहीं कर सकते," या "यदि चाबी खो गई है तो आप दरवाजा नहीं खोल सकते।"
- पेपर एक "जादुई गोंद" (जिसे एक्सट्रिंसिक टाइपस्टेट कहा जाता है) जोड़ता है जो ऑब्जेक्ट्स के इतिहास को ट्रैक करता है।
- यदि रोबोट एक "पेंट" ब्लॉक को एक "दीवार" ब्लॉक पर चिपकाने की कोशिश करता है जिसे अभी तक बनाया ही नहीं गया है, तो जादुई गोंद कहता है, "रुको, ठहरो! वह दीवार अभी अस्तित्व में ही नहीं है!" और रोबोट विनम्रता से उस विशिष्ट प्रयास को बिना पूरी मशीन को क्रैश किए रोक देता है।
- यह रोबंगी को असंभव संयोजनों पर समय बर्बाद किए बिना लाखों संयोजनों को एक्सप्लोर करने की अनुमति देता है।
3. दिमाग: LLM एजेंट (STITCH)
इन "ब्लॉक्स" और "नियमों" को हाथ से लिखना कठिन है। यह ऐसा है जैसे आँखों पर पट्टी बांधकर अंतरिक्ष यान के लिए मैनुअल लिखने की कोशिश करना।
यहाँ STITCH आता है, जो इस पेपर में वर्णित सिस्टम है। यह एक लार्ज लैंग्वेज मॉडल (एक AI जो कोड और डॉक्यूमेंटेशन को समझने में बहुत अच्छा है) का उपयोग करता है जो एक सुपर आर्किटेक्ट के रूप में कार्य करता है।
- चरण 1: आर्किटेक्ट ब्लूप्रिंट पढ़ता है। AI नियमों को समझने के लिए सॉफ्टवेयर के डॉक्यूमेंटेशन और कोड कमेंट्स को स्कैन करता है।
- चरण 2: यह ब्लॉक्स बनाता है। यह स्वचालित रूप से "लेगो सेगमेंट्स" के लिए कोड लिखता है।
- चरण 3: यह एक क्वालिटी कंट्रोल इंस्पेक्टर के रूप में कार्य करता है। AI रोबोट को चलाता है। यदि रोबोट क्रैश होता है, तो AI उस क्रैश को देखता है और पूछता है, "क्या मैंने रोबोट को एक गलत नियम दिया? या क्या मुझे एक असली बग मिला?"
- यदि यह एक गलत नियम था, तो AI नियम पुस्तिका को फिर से लिखता है (स्पेसिफिकेशन को ठीक करता है)।
- यदि यह एक असली बग था, तो यह मनुष्यों के लिए एक रिपोर्ट लिखता है।
4. परिणाम: छिपी हुई दरारों को खोजना
शोधकर्ताओं ने इस सिस्टम का परीक्षण 1,365 विभिन्न ओपन-सोर्स प्रोजेक्ट्स (जैसे कि आपके वेब ब्राउज़र, वीडियो प्लेयर और प्रिंटर को चलाने वाला सॉफ्टवेयर) पर किया।
- स्कोरकार्ड: अन्य शीर्ष-स्तरीय टूल्स की तुलना में, STITCH ने 30 वास्तविक, खतरनाक बग खोजे जबकि अन्य टूल्स ने मिलकर केवल 10 खोजे।
- दक्षता (Efficiency): यह बहुत तेज़ और सस्ता था। जहाँ अन्य टूल्स कोड का परीक्षण करने के लिए घंटों और हजारों डॉलर खर्च कर रहे थे, वहीं STITCH ने इसे मिनटों में और कुछ ही पैसों में कर लिया।
- वास्तविक दुनिया का प्रभाव: उन्होंने 102 अलग-अलग प्रोजेक्ट्स में 131 नए बग खोजे। इनमें से कई गंभीर सुरक्षा खामियां (जैसे कि एक रिमोट हैकर द्वारा प्रिंटर का नियंत्रण लेना) थीं जो वर्षों से छिपी हुई थीं। इन प्रोजेक्ट्स के मेंटेनर्स खुश थे और उन्होंने 73 बग्स को तुरंत पैच (ठीक) कर दिया।
सारांश
Stitching को एक रोबोट को आँखों पर पट्टी बांधने के बजाय एक स्मार्ट, खुद को सुधारने वाला निर्देश मैनुअल देने के रूप में समझें।
- इसके बिना: रोबोट या तो बहुत सख्त है (नए रास्ते चूक जाता है) या बहुत अनाड़ी है (नकली त्रुटियां पैदा करता है)।
- इसके साथ: रोबोट सॉफ्टवेयर के लॉजिक को समझता है, जानता है कि क्या अनुमत है और क्या नहीं, और वह मशीन को तोड़ने वाले एक विशिष्ट संयोजन को खोजने के लिए वैध चरणों को रचनात्मक रूप से जोड़ सकता है।
यह पेपर साबित करता है कि AI (नियम लिखने के लिए) को Stitching (गतिशील रूप से नियमों का पालन करने के लिए) के साथ जोड़कर, हम सॉफ्टवेयर के उन बग्स को स्वचालित रूप से ढूंढ सकते हैं जिन्हें इंसान और पुराने टूल्स वर्षों से मिस कर रहे थे।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।