Chiral Analysis of Smart Contracts: Detecting Vulnerabilities from Relational Inconsistencies Across Business Paths
यह शोध पत्र "कायरल एनालिसिस" (chiral analysis) को प्रस्तुत करता है, जो कि 'कायरलडिटेक्टर' (ChiralDetector) टूल में कार्यान्वित एक रिलेशनल स्टैटिक एनालिसिस मॉडल है, जो सिमेंटिक रूप से युग्मित बिजनेस पाथ्स के बीच विसंगतियों की पहचान करके स्मार्ट कॉन्ट्रैक्ट कमजोरियों का पता लगाता है, जिससे प्रभावी रूप से उन जटिल लॉजिक बग्स का अनावरण होता है जिन्हें पारंपरिक सिंगल-फंक्शन एनालाइजर्स नहीं पकड़ पाते हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
जासूस की दुविधा: जब कोड 'चूक' के जरिए झूठ बोलता है
कल्पना कीजिए कि आप एक व्यस्त शहर में रहस्य सुलझाने की कोशिश कर रहे एक जासूस हैं। आमतौर पर, आप किसी ठोस सबूत की तलाश करते हैं: जैसे टूटी हुई खिड़की, कीचड़ भरा पदचिह्न, या कोई संदिग्ध नोट। कंप्यूटर कोड की दुनिया में, विशेष रूप से ब्लॉकचेन पर चलने वाले "स्मार्ट कॉन्ट्रैक्ट्स" में, पारंपरिक सुरक्षा उपकरण इसी तरह के जासूस की तरह काम करते हैं। वे कोड को लाइन-दर-लाइन स्कैन करते हैं, और दरवाज़े पर छूटे हुए ताले या गणना में गणितीय त्रुटि जैसी स्पष्ट गलतियों की तलाश करते हैं। ये उपकरण "लोकल" बग्स खोजने में माहिर हैं—वे गलतियाँ जो एक ही कमरे के भीतर होती हैं।
लेकिन क्या होगा अगर अपराध उस कमरे में है ही नहीं? क्या होगा अगर रहस्य यह है कि सामने का दरवाज़ा बंद है, लेकिन पिछला दरवाज़ा खुला रह गया है, और इन दोनों दरवाजों को एक ही सुरक्षा प्रणाली का हिस्सा होना चाहिए था? कंप्यूटर विज्ञान में, इसे "रिलेशनल" (संबंधात्मक) समस्या कहा जाता है। यह एक टूटे हुए हिस्से के बारे में नहीं है; यह दो ऐसे हिस्सों के बारे में है जिन्हें आपस में मेल खाना चाहिए था, लेकिन वे नहीं खा रहे हैं। यह शोध पत्र इन चालाक बग्स को पकड़ने के एक नए तरीके का अन्वेषण करता है, जो कोड के जोड़ों की तुलना करता है, जैसे कि वे एक-दूसरे के दर्पण प्रतिबिंब (मिरर इमेज) हों जिन्हें एक ही सत्य को प्रतिबिंबित करना चाहिए। यदि एक पथ कहता है "रुको" और दूसरा कहता है "चलो", तो सिस्टम टूटा हुआ है, भले ही अकेले देखने पर "रुको" और "चलो" दोनों ही बिल्कुल सही लगें।
शोध पत्र: काइरल विश्लेषण और मिरर टेस्ट
यह शोध पत्र एक चतुर नई विधि पेश करता है जिसे काइरल विश्लेषण (Chiral Analysis) कहा जाता है। "काइरल" शब्द रसायन विज्ञान से आया है, जो उन वस्तुओं का वर्णन करता है जो एक-दूसरे के दर्पण प्रतिबिंब हैं लेकिन उन्हें पूरी तरह से एक के ऊपर एक नहीं रखा जा सकता (जैसे आपके बाएं और दाएं हाथ)। स्मार्ट कॉन्ट्रैक्ट्स की दुनिया में, लेखक प्रस्तावित करते हैं कि कई व्यावसायिक संचालन जोड़ों में आते हैं: एक "सिंगल" ट्रेड और एक "बैच" ट्रेड, एक "खरीद" और एक "बिक्री", या कीमत का एक "पूर्वावलोकन" और उस कीमत का "निष्पादन"। ये जोड़े कोड के "काइरल जुड़वां" हैं।
मूल विचार सरल लेकिन शक्तिशाली है: इन जोड़ों के साथ इस तरह व्यवहार करें जैसे वे एक-दूसरे के होमवर्क की जाँच कर रहे हों। यदि कोई उपयोगकर्ता कोई वस्तु खरीदता है, तो कोड को उससे शुल्क लेना चाहिए। यदि वही उपयोगकर्ता बाद में वस्तु बेचता है, तो कोड को पैसे का प्रबंधन इस तरह से करना चाहिए जो मूल खरीद के साथ तर्कसंगत हो। यदि "खरीद" वाला पथ शुल्क डॉलर में लेता है, लेकिन "बिक्री" वाला पथ गलती से किसी अलग मुद्रा में रिफंड कर देता है, या यदि "बैच" वाला संस्करण उस पैसे को वापस करने में भूल जाता है जो "सिंगल" संस्करण वापस करता है, तो एक बग मौजूद है। शोध पत्र का तर्क है कि ये बग मानक स्कैनर्स के लिए अदृश्य हैं क्योंकि कोड की प्रत्येक व्यक्तिगत लाइन सही दिखती है। त्रुटि केवल तब दिखाई देती है जब आप दोनों पथों को दर्पण के सामने रखते हैं और देखते हैं कि वे मेल नहीं खाते।
इन अदृश्य त्रुटियों को खोजने के लिए, लेखकों ने ChiralDetector नामक एक प्रोटोटाइप टूल बनाया है। इस टूल को एक बहुत ही बुद्धिमान इंटर्न की तरह समझें जिसके पास एक विशिष्ट कार्य विवरण है। सबसे पहले, यह पूरे कोडबेस को पढ़ता है और हर संभावित "बिजनेस पाथ" (जैसे कि एक ग्राहक स्टोर में कौन सा रास्ता ले सकता है, उसका मानचित्र बनाना) का नक्शा तैयार करता है। फिर, यह एक "स्टैटिक रेंकर" (सरल नियमों का एक सेट) का उपयोग करता है ताकि यह अनुमान लगाया जा सके कि कौन से पथ काइरल जुड़वां हो सकते हैं। उदाहरण के लिए, यह buy नाम के फंक्शन और sell नाम के दूसरे फंक्शन को ढूंढ सकता है जो एक ही बैंक खाते को छूते हैं।
एक बार जब इसके पास संभावित जुड़वाओं की सूची आ जाती है, तो यह अपने मुख्य हथियार को बुलाता है: एक लार्ज लैंग्वेज मॉडल (LLM), जो एक प्रकार का AI है जो मानव भाषा और कोड को समझता है। AI केवल त्रुटियों को नहीं देखता; यह एक तर्कशास्त्री की तरह कार्य करता है। यह पूछता है, "यदि ये दो पथ एक-दूसरे के दर्पण होने चाहिए, तो उन्हें किन नियमों का पालन करना चाहिए?" यह सात विशिष्ट आयामों की जाँच करता है:
- गार्ड्स (Guards): क्या दोनों पथों ने एक ही पासवर्ड या अनुमति की जाँच की?
- एक्टर्स (Actors): क्या दोनों में एक ही व्यक्ति ने भुगतान किया और प्राप्त किया?
- स्टेट (State): क्या दोनों पथों ने डेटाबेस को एक ही तरह से अपडेट किया?
- वैल्यू (Value): क्या उन्होंने शुल्क और रिफंड को सुसंगत तरीके से संभाला?
- ऑर्डर (Order): क्या उन्होंने चीजों को एक ही क्रम में किया?
- फेलियर (Failure): यदि चीजें गलत होती हैं, तो क्या दोनों पथ एक ही तरह से क्रैश होते हैं या रिकवर करते हैं?
- एक्सटर्नल (External): क्या उन्होंने एक ही बाहरी स्रोतों पर भरोसा किया?
यदि AI को कोई बेमेल मिलता है, तो वह तुरंत "बग!" चिल्लाता नहीं है। वह अपने निष्कर्ष को एक "स्ट्रिक्ट वैलिडेटर" (कठोर सत्यापनकर्ता) के पास भेजता है। यह वैलिडेटर एक संदेही संपादक की तरह है जो AI को गलत साबित करने की कोशिश करता है। वह पूछता है, "क्या यह वास्तव में एक बग है, या यह केवल एक डिज़ाइन विकल्प है?" अंत में, टूल समान निष्कर्षों को एक साथ समूहित करता है ताकि 100 छोटी त्रुटियों के बजाय, वह एक बड़े मूल कारण की रिपोर्ट करे।
परिणाम: छिपे हुए ग्लिच का पता लगाना
लेखकों ने इस प्रणाली का परीक्षण Phi प्रोटोकॉल नामक एक वास्तविक प्रोजेक्ट पर किया। परिणाम बताते हैं कि यह दृष्टिकोण काम करता है, हालांकि यह अभी भी विकास के चरण में है।
उनके प्रयोग में जो हुआ वह यहाँ दिया गया है:
- टूल ने कोड पथों के 3,217 जोड़ों को देखना शुरू किया।
- स्पष्ट रूप से असंबंधित जोड़ों को हटाने के बाद, इसने गहराई से जांच के लिए 1,643 जोड़े रखे।
- AI डिटेक्टर ने 201 संभावित मुद्दे (संदिग्ध और पुष्ट उम्मीदवारों का मिश्रण) पाए।
- समान रिपोर्टों को समूहित करने और डुप्लिकेट हटाने के बाद, यह घटकर 101 समूहों तक सिमट गया।
- एक स्ट्रिक्ट वैलिडेटर ने इसे और घटाकर 44 पुष्ट सकारात्मक (positives) तक पहुँचा दिया।
- अंत में, एक मानव विशेषज्ञ द्वारा मूल कारणों की समीक्षा करने के बाद, टीम ने 13 अद्वितीय और प्रभावी मुद्दों की पहचान की।
ये 13 मुद्दे वे थे जिन्हें मानक उपकरण मिस कर गए। उदाहरण के लिए:
- "प्रूफ" का भ्रम: एक सिस्टम ने स्वामित्व के प्रमाण (proof of ownership) को किसी अन्य वस्तु के लिए पुन: उपयोग करने की अनुमति दी क्योंकि "buy" और "claim" पथों ने प्रमाण को विशिष्ट वस्तु से सही ढंग से नहीं जोड़ा था।
- फीस का भ्रम: सिस्टम के एक हिस्से ने शुल्क की गणना "बेसिस पॉइंट्स" (प्रतिशत की एक इकाई) में की, जबकि दूसरे हिस्से ने उसी संख्या को "wei" (मुद्रा की एक बहुत छोटी इकाई) के रूप में माना, जिससे भारी वित्तीय त्रुटियां हुईं।
- रिफंड का जाल: जब किसी उपयोगकर्ता ने अधिक भुगतान किया, तो "सिंगल" ट्रेड पथ ने उपयोगकर्ता को पैसा वापस कर दिया, लेकिन "बैच" ट्रेड पथ ने गलती से रिफंड एक मध्यवर्ती अनुबंध (intermediate contract) को भेज दिया, जिससे उपयोगकर्ता खाली हाथ रह गया।
लेखक सुझाव देते हैं कि यह विधि विशेष रूप रूप से "बिजनेस लॉजिक" बग्स—यानी, सिस्टम पैसे और नियमों के बारे में कैसे सोचता है, उससे जुड़ी त्रुटियों—को पकड़ने में अच्छी है, न कि केवल साधारण टाइपिंग की गलतियों को। वे नोट करते हैं कि यह प्रक्रिया पूर्ण नहीं है; इसने बहुत सारा "शोर" (गलत अलार्म) उत्पन्न किया जिसे साफ करना पड़ा, और यह AI की बुद्धिमत्ता पर निर्भर है कि वह संबंध को पहचान सके। हालांकि, तथ्य यह है कि इसने 13 विशिष्ट, उच्च-प्रभाव वाले मुद्दों को खोजा जिन्हें अन्य उपकरणों ने छोड़ दिया था, यह दर्शाता है कि कोड को "काइरल पेयर्स" के लेंस से देखना एक आशाजनक नया दिशा है।
शोध पत्र निष्कर्ष निकालता है कि हालांकि यह कोई जादुई छड़ी नहीं है जो हर सुरक्षा समस्या को हल कर दे, लेकिन यह उन बग्स को खोजने का एक संरचित तरीका प्रदान करता है जो कोड की लाइनों के बीच के स्थानों में छिपे होते हैं। कोड पथों को दर्पण प्रतिबिंबों के रूप में मानकर, हम अंततः उन दरारों को देख सकते हैं जो तब दिखाई देती हैं जब प्रतिबिंब वस्तु से मेल नहीं खाता।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।