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

Leaf: An Instrumentation-based Dynamic Analysis Framework for Rust

यह शोधपत्र LEAF को प्रस्तुत करता है, जो एक Rust-नेटिव डायनेमिक एनालिसिस फ्रेमवर्क है जो प्रबंधनीय ओवरहेड के साथ विविध विश्लेषण कार्यों का समर्थन करने के लिए एक इवेंट-ड्रिवन इंटरफेस के माध्यम से MIR-स्तरीय सिमेंटिक सूचना और रनटाइम तथ्यों का लाभ उठाता है।

मूल लेखक: Mohammad Omidvar Tehrani, Marco Gaboardi, Nick Sumner, Steven Y. Ko

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

मूल लेखक: Mohammad Omidvar Tehrani, Marco Gaboardi, Nick Sumner, Steven Y. Ko

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

कोड के लिए जासूसों का टूलकिट

कल्पना कीजिए कि आप एक जासूस हैं जो एक अपराध को सुलझाने की कोशिश कर रहे हैं, लेकिन अपराध स्थल एक कंप्यूटर प्रोग्राम है। सॉफ्टवेयर की दुनिया में, "बग्स" (bugs) अपराध की तरह होते हैं—ऐसी गलतियाँ जो प्रोग्राम को क्रैश कर देती हैं, रहस्य लीक कर देती हैं या अजीब व्यवहार करने पर मजबूर कर देती हैं। लंबे समय तक, जासूसों को अपराध होने के बाद अपराध स्थल को देखना पड़ता था, या किसी अपराधी के काम शुरू करने से पहले ही उसके हर संभावित तरीके का अनुमान लगाना पड़ता था। लेकिन क्या होगा यदि आप प्रोग्राम द्वारा किए जाने वाले हर एक कदम पर एक छोटा, अदृश्य कैमरा लगा सकें जबकि वह चल रहा हो? आप इसे वास्तविक समय (real-time) में देख सकते हैं, यह देख सकते हैं कि वह ठीक कहाँ लड़खड़ाता है, वह क्या पकड़ता है, और वह कहाँ गलत हो जाता है।

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

LEAF: रस्ट जासूसों का नया चश्मा

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

यह कैसे काम करता है, इसे एक सरल उपमा से समझते हैं। कल्पना कीजिए कि एक शेफ (रस्ट कंपाइलर) एक रेसिपी (प्रोग्राम) लिख रहा है। शेफ उस रेसिपी को एक विशेष, विस्तृत भाषा में लिखता है जिसे MIR (मिड-लेवल इंटरमीडिएट रिप्रेजेंटेशन) कहा जाता है। यह भाषा एक ब्लूप्रिंट की तरह है जिसमें न केवल सामग्री शामिल है, बल्कि सख्त नियम भी हैं कि कौन चाकू छू सकता है, ओवन कब खोला जा सकता है, और भोजन कितनी देर तक ताजा रहता है। आमतौर पर, एक बार जब शेफ ब्लूप्रिंट पूरा कर लेता है, तो उसे एक व्यंजन (चल रहा प्रोग्राम) में बदल दिया जाता है, और विस्तृत नियम कहीं छिप जाते हैं।

LEAF व्यंजन बनने से पहले ब्लूप्रिंट में संशोधन करके हस्तक्षेप करता है। यह उस विस्तृत ब्लूप्रिंट को लेता है और निर्देशों में सीधे "प्रोब्स" (tiny, invisible probes - सूक्ष्म, अदृश्य टैग) डाल देता है। ये प्रोब्स इस तरह डिज़ाइन किए गए हैं कि प्रोग्राम के वास्तविक रूप से चलते समय सक्रिय हो सकें। ये प्रोब्स तब सक्रिय होते हैं जब प्रोग्राम एक विशिष्ट नियम का पालन करता है, और वे चिल्लाकर बताते हैं कि वास्तव में क्या हो रहा है, जिससे शेफ के मूल विस्तृत नियमों को सुरक्षित रखा जा सके। लेखक इस सूचना के प्रवाह को DMIR (डायनेमिक MIR) कहते हैं। यह एक लाइव कमेंट्री की तरह है जो केवल यह नहीं कहता कि "शेफ ने प्याज काटा," बल्कि यह कहता है, "शेफ ने प्याज काटा, और याद रखें, इस विशिष्ट रेसिपी में, प्याज को बाएं हाथ के चाकू से काटा जाना चाहिए, अन्यथा पूरा व्यंजन खराब हो जाएगा।"

यह साबित करने के लिए कि यह केवल एक अच्छा विचार नहीं बल्कि एक काम करने वाला उपकरण है, टीम ने LEAF का उपयोग करके तीन अलग-अलग "जासूसी मामले" बनाए:

  1. एक कॉनकोलिक एक्सेक्यूटर (Concolic Executor): यह एक सुपर-स्मार्ट टेस्टर है जो इनपुट का अनुमान लगाकर प्रोग्राम को तोड़ने की कोशिश करता है। यह एक ऐसे जासूस की तरह है जो ताले को खोलने के लिए हर संभव चाबी आज़माता है। LEAF का उपयोग करके, उन्होंने इसका एक संस्करण बनाया जो 11,749 लाइनों का कोड लंबा है और इसने जटिल प्रोग्रामों में पेचीदा बग्स को सफलतापूर्वक खोज निकाला।
  2. एक रस्ट-विशिष्ट सैनिटाइज़र (Sanitizer): यह उपकरण एक बहुत ही विशिष्ट प्रकार की रस्ट गलती की तलाश करता है जिसे "use-after-drop" कहा जाता है। कल्पना कीजिए कि आपने एक खिलौना फेंक दिया, लेकिन फिर भी उसके साथ खेलने की कोशिश की। रस्ट आमतौर पर इसे रोकता है, लेकिन कभी-कभी प्रोग्रामर्स को इसे मैन्युअल रूप से करना पड़ता है। LEAF के सैनिटाइज़र ने केवल 1,746 लाइनों के एक टूल में इन गलतियों को पकड़ा।
  3. एक कंट्रोल-फ्लो ट्रेसर (Control-Flow Tracer): यह एक सरल उपकरण है जो केवल इस बात का नक्शा बनाता है कि प्रोग्राम कहाँ गया। इसने दिखाया कि LEAF केवल 646 लाइनों के कोड के साथ एक प्रोग्राम की पूरी यात्रा को ट्रैक कर सकता है।

टीम ने केवल ये उपकरण बनाए ही नहीं; उन्होंने यह भी मापा कि LEAF प्रोग्राम में कितना "वजन" (भार) जोड़ता है। उन्होंने इसका परीक्षण आठ लोकप्रिय वास्तविक दुनिया के रस्ट प्रोग्रामों (जैसे वेब एड्रेस संभालने वाले टूल्स, एन्क्रिप्शन, और यहाँ तक कि एक WebAssembly रनटाइम) पर किया। उन्होंने पाया कि हालांकि LEAF प्रोग्राम को धीमा और फ़ाइल को बड़ा बनाता है, लेकिन इसकी लागत "सार्थक लेकिन प्रबंधनीय" है। उदाहरण के लिए, कुछ परीक्षणों में, प्रोग्राम सामान्य से लगभग 15 से 70 गुना धीमा चला, और फ़ाइल का आकार काफी बढ़ गया, लेकिन फिर भी यह काम करता रहा। उन्होंने यह भी पाया कि यदि आपको सभी विवरणों की आवश्यकता नहीं है, तो आप इसे तेज़ बनाने के लिए कुछ सुविधाओं को बंद कर सकते हैं।

शोध पत्र इस बारे में बहुत स्पष्ट है कि यह क्या नहीं करता है: यह दावा नहीं करता कि यह जादू है। यह स्वीकार करता है कि प्रोग्राम को इतनी बारीकी से देखने की लागत अधिक है। यदि आप हर एक सेंसर चालू कर देते हैं, तो प्रोग्राम सैकड़ों गुना धीमा हो सकता है। हालाँकि, लेखक दिखाते हैं कि चुनिकी (selective) होकर—केवल उन्हीं हिस्सों को देखते हुए जिनकी आपको परवाह है—आप आवश्यक जानकारी प्राप्त कर सकते हैं बिना प्रोग्राम को बाधित किए।

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

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

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

Digest आज़माएँ →