← नवीनतम पेपर
💻 computer science

CHC-based Automated Verification of WebAssembly Programs

यह शोधपत्र कॉन्स्ट्रेंड हॉर्न क्लॉज़ का उपयोग करके वेबअसेंबली के एक उपसमुच्चय के लिए एक स्वचालित स्टैटिक सत्यापन पद्धति प्रस्तावित करता है, जो प्रकार-आधारित फ़िल्टरिंग के माध्यम से अप्रत्यक्ष फ़ंक्शन कॉल्स को प्रभावी ढंग से संभालता है और कंट्रोल-फ्लो विश्लेषण सारांशीकरण के माध्यम से बड़े पैनिक हैंडलर्स का प्रबंधन करता है।

मूल लेखक: Akihisa Yagi, Ken Sakayori, Naoki Kobayashi

प्रकाशित 2026-07-21
📖 7 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Akihisa Yagi, Ken Sakayori, Naoki Kobayashi

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

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

इसे करने के लिए, कंप्यूटर वैज्ञानिक अक्सर एक "सैटिस्फिएबिलिटी सॉल्वर" (Satisfiability Solver) का उपयोग करते हैं। इस सॉल्वर को एक बहुत ही स्मार्ट जासूस के रूप में सोचें जो नियमों के एक सेट को देख सकता है और तुरंत बता सकता है कि कोई परिदृश्य संभव है या असंभव। यदि नियम कहते हैं "ड्रोन को आकाश में होना चाहिए" और "ड्रोन को जमीन पर होना चाहिए" एक ही समय में, तो जासूस जानता है कि यह एक विरोधाभास है और योजना असुरक्षित है। यह शोध पत्र उस जासूस को वेबअसेम्बली के विशिष्ट, पेचीदा नियमों को समझने के लिए प्रशिक्षित करता है, विशेष रूप से उन हिस्सों को जिनमें अन्य फंक्शनों को अप्रत्यक्ष रूप से (indirectly) कॉल करना और विशाल त्रुटि संदेशों (error messages) को संभालना शामिल है।


रूप बदलने वाले कॉल का रहस्य (The Mystery of the Shapeshifting Call)

लेखकों, टोक्यो विश्वविद्यालय के अकिहिसा यागी, केन साकायोरी और नाओकी कोबायाशी के सामने एक पेचीदा पहेली थी। वेबअसेम्बली प्रोग्राम एक विशाल पुस्तकालय की तरह हैं जहाँ किताबों (फंक्शनों) को गतिशील रूप से शेल्फ से निकाला जा सकता है। कभी-कभी, कोड यह नहीं कहता "किताब A खोलें"; इसके बजाय, यह कहता है "शेल्फ नंबर 5 पर मौजूद किताब खोलें।" इसे इनडायरेक्ट फंक्शन कॉल (indirect function call) कहा जाता है।

समस्या यह है कि यदि आप यह देखने के लिए हर एक किताब की जाँच करने की कोशिश करते हैं कि शेल्फ नंबर 5 पर क्या हो सकता है, तो जासूस (सॉल्वर) अभिभूत हो जाता है। यह एक मिलियन तालों में से सही चाबी खोजने के लिए हर एक संभावित संयोजन की जाँच करने जैसा है। सहज दृष्टिकोण (naive approach) सभी संभावनाओं को सूचीबद्ध करना होगा, लेकिन यह कागजी कार्रवाई का एक ऐसा पहाड़ बना देता है जिसे कोई भी कंप्यूटर उचित समय में हल नहीं कर सकता।

लेखकों का समाधान एक बहुत ही सख्त लाइब्रेरियन की तरह कार्य करना था। उन्होंने महसूस किया कि वेबअसेम्बली का एक नियम है: आप किसी किताब को शेल्फ से तभी निकाल सकते हैं जब वह उस विशिष्ट शैली (type) से मेल खाती हो जिसे आप खोज रहे हैं। इसलिए, लाइब्रेरी की हर किताब की जाँच करने के बजाय, उनकी विधि उस "शैली" को देखती है जिसकी कॉल साइट पर आवश्यकता है और उन सभी किताबों को बाहर कर देती है जो फिट नहीं बैठतीं। यह उम्मीदवारों की सूची को नाटकीय रूप से छोटा कर देता है, जिससे जासूस का काम बहुत आसान हो जाता है। उन्होंने एक दूसरा तरीका भी जोड़ा: यदि लाइब्रेरी के शेल्फ लॉक हैं और कभी बदलते नहीं हैं (रीड-ओनली), तो वे पहले से ही गणना कर सकते हैं कि कौन सी किताब कहाँ है, जिससे एक जटिल पहेली एक सरल "यदि यह, तो वह" नियमों की सूची में बदल जाती है।

विशाल घबराहट बटन (The Giant Panic Button)

दूसरा चुनौतीपूर्ण कार्य "पैनिक हैंडलर" (panic handler) था। कल्पना कीजिए कि एक प्रोग्राम, जब वह कोई गलती करता है, तो केवल रुकता नहीं है; बल्कि वह यह समझाने के लिए एक विशाल, 10,000-चरणीय भाषण शुरू कर देता है कि वास्तव में क्या गलत हुआ, जिसमें डायग्नोस्टिक चार्ट और एरर कोड भी शामिल हैं, और अंत में हार मान लेता है। वेबअसेम्बली में, ये पैनिक हैंडलर कोड के विशाल ब्लॉक होते हैं जो तब ट्रिगर होते हैं जब चीजें गलत होती हैं।

सुरक्षा जांचकर्ता के लिए, ये विशाल भाषण एक भटकाव हैं। एकमात्र बात जो मायने रखती है वह यह है कि प्रोग्राम अंततः सुरक्षित रूप से चलना बंद कर देता है (एक "अनरीचेबल" निर्देश तक पहुँच जाता है)। त्रुटि संदेश बनाने का लंबा, घुमावदार रास्ता वास्तव में इस तथ्य को नहीं बदलता कि प्रोग्राम क्रैश हो रहा है। हालाँकि, यदि जासूस उस 10,000-चरणीय भाषण के हर एक चरण का पता लगाने की कोशिश करता है, तो वह फंस जाता है।

लेखकों ने एक "सारांशकरण" (summarization) तकनीक पेश की। उन्होंने महसूस किया कि यदि कोड का एक ब्लॉक केवल क्रैश होने की ओर ले जा रहा है, तो वे बीच के व्यक्ति को हटा सकते हैं। उन्होंने इन लंबे, घुमावदार रास्तों की पहचान करने के लिए एक कंट्रोल-फ्लो विश्लेषण का उपयोग किया और उन्हें एक सरल शॉर्टकट से बदल दिया: "यदि आप इस कमरे में प्रवेश करते हैं, तो आप अंततः क्रैश हो जाएंगे।" यह एक टूर गाइड को यह बताने जैसा है, "लॉबी के बारे में 50 मिनट के इतिहास के लेक्चर को छोड़ दें; बस हमें बता दें कि निकास अवरुद्ध है।" यह सुरक्षा जांच को त्रुटि संदेश के शोर में खो जाने के बिना महत्वपूर्ण सुरक्षा मुद्दों पर केंद्रित रखता है।

परिणाम: एक कार्य प्रगति पर है (The Results: A Work in Progress)

अपने विचारों का परीक्षण करने के लिए, टीम ने WASMVERIFIER नामक एक प्रोटोटाइप टूल बनाया। उन्होंने इसमें रस्ट (Rust) और सी (C) में लिखे गए कुछ प्रोग्रामों सहित 90 अलग-अलग प्रोग्राम डाले और उनसे यह सिद्ध करने को कहा कि वे सुरक्षित हैं।

परिणाम उत्साहजनक लेकिन पूर्ण नहीं थे। दो अलग-अलग डिटेक्टिव सॉल्वरों (Z3 Spacer और Eldarica) का उपयोग करते हुए, टूल ने लगभग 54 से 56 प्रोग्रामों की सुरक्षा को सत्यापित या खंडित किया। हालाँकि, यह लगभग 20 से 22 प्रोग्रामों पर अटक गया, जिसका कारण समय समाप्त होना (एक "टाइमआउट") या मेमोरी की कमी थी। लगभग 11 से 12 मामलों में, इसने एक "फॉल्स अलार्म" (गलत चेतावनी) दी, यह सोचकर कि एक प्रोग्राम असुरक्षित था जबकि वह वास्तव में ठीक था। लेखक बताते हैं कि ये गलत चेतावनियाँ इसलिए हुईं क्योंकि उनके टूल को कुछ असमर्थ निर्देशों को "क्रैश" प्लेसहोल्डर के साथ बदलना पड़ा, जिससे सुरक्षा जांच बहुत अधिक सतर्क हो गई।

यह शोध पत्र सुझाव देता है कि जबकि यह दृष्टिकोण पूरी तरह से स्वचालित सुरक्षा जांच के लिए एक मजबूत कदम है, यह अभी तक कोई जादू की छड़ी नहीं है। लेखक नोट करते हैं कि विधि को अभी भी परिष्कृत किया जा रहा है, विशेष रूप से बिट्स (बिट-वेक्टर्स) पर जटिल गणित को संभालने और उन निर्देशों से निपटने के तरीके में जिन्हें वे अभी पूरी तरह से नहीं समझते हैं। उन्हें संदेह है कि यह पद्धति सुदृढ़ (sound) और पूर्ण (complete) है, लेकिन उन्होंने अभी तक इसके लिए औपचारिक गणितीय प्रमाण नहीं लिखा है, जिससे यह भविष्य के कार्य के रूप में शेष रह गया है।

संक्षेप में, यह शोध पत्र दिखाता है कि अप्रत्यक्ष कॉल को फ़िल्टर करने के बारे में स्मार्ट होकर और त्रुटि प्रबंधन के बिखरे हुए हिस्सों को सारांशित करके, हम वेबअसेम्बली के लिए स्वचालित सुरक्षा जांच को बहुत अधिक व्यावहारिक बना सकते हैं। यह एक ठोस आधार है, लेकिन जासूस को हर मामले को सुलझाने के लिए अभी और अधिक प्रशिक्षण की आवश्यकता है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →