Trending News

BTC
$23,319.42
-0.4
ETH
$1,666.10
+0.22
LTC
$98.43
-1.97
DASH
$61.34
-2.39
XMR
$171.71
+0.02
NXT
$0.00
-0.4
ETC
$23.84
+1.23

स्मार्ट अनुबंध सुरक्षा के बारे में सोच रहे हैं

0


पिछले दिनों समुदाय की मदद से हमने एथेरियम पर स्मार्ट अनुबंधों के साथ सभी प्रमुख बगों की एक सूची क्राउडसोर्स की है, जिसमें डीएओ के साथ-साथ विभिन्न छोटे 100-10000 ईटीएच चोरी और गेम और टोकन अनुबंधों में नुकसान शामिल हैं।

यह सूची (मूल स्रोत यहां) इस प्रकार है:

हम बग की श्रेणियों द्वारा सूची को वर्गीकृत कर सकते हैं:

  • वेरिएबल/फंक्शन नेमिंग मिक्सअप: फायरपोंज़ी, रुबिक्सी
  • सार्वजनिक डेटा जो सार्वजनिक नहीं होना चाहिए था: सार्वजनिक आरएनजी बीज कैसीनो, धोखा देने योग्य आरपीएस
  • पुन: प्रवेश (ए कॉलिंग बी कॉलिंग ए): डीएओ, मेकर का ईटीएच-समर्थित टोकन
  • 2300 गैस सीमा के कारण विफल भेजना: ईथर का राजा
  • ऐरे/लूप और गैस सीमाएं: सरकारी
  • बहुत अधिक सूक्ष्म गेम-सैद्धांतिक कमजोरियां जहां सीमा पर लोग बहस भी करते हैं कि वे बग हैं या नहीं: डीएओ

स्मार्ट अनुबंध सुरक्षा के लिए कई समाधान प्रस्तावित किए गए हैं, जिनमें बेहतर विकास वातावरण से लेकर बेहतर प्रोग्रामिंग भाषाएं औपचारिक सत्यापन और प्रतीकात्मक निष्पादन शामिल हैं, और शोधकर्ताओं ने ऐसे उपकरण विकसित करना शुरू किया. विषय के बारे में मेरी व्यक्तिगत राय यह है कि एक महत्वपूर्ण प्राथमिक निष्कर्ष निम्नलिखित है: स्मार्ट अनुबंध सुरक्षा में प्रगति आवश्यक रूप से स्तरित, वृद्धिशील और आवश्यक रूप से गहन रक्षा पर निर्भर होने वाली है. वहाँ मर्जी आगे कीड़े बनो, और हम और सबक सीखेंगे; वहाँ नहीं होगा एक जादू की तकनीक बनें जो सब कुछ हल करती है।

इस मौलिक निष्कर्ष का कारण इस प्रकार है। स्मार्ट अनुबंध की चोरी या हानि के सभी उदाहरण – वास्तव में, बहुत परिभाषा स्मार्ट अनुबंध की चोरी या हानि, मूल रूप से कार्यान्वयन और मंशा के बीच अंतर के बारे में है। यदि, किसी दिए गए मामले में, कार्यान्वयन और मंशा एक ही चीज है, तो “चोरी” का कोई भी उदाहरण वास्तव में एक दान है, और “हानि” का कोई भी उदाहरण स्वैच्छिक धन-जलन है, आर्थिक रूप से ETH को आनुपातिक दान के बराबर है। अपस्फीति के माध्यम से टोकन धारक समुदाय। यह अगली चुनौती की ओर जाता है: आशय मौलिक रूप से जटिल है.

इस तथ्य के पीछे के दर्शन को अनुकूल एआई अनुसंधान समुदाय द्वारा सबसे अच्छी तरह से औपचारिक रूप दिया गया है, जहां “के नाम हैं”मूल्य की जटिलता” और “मूल्य की नाजुकता“। थीसिस सरल है: मनुष्य के रूप में हमारे पास बहुत सारे मूल्य हैं, और बहुत जटिल मूल्य हैं – इतने जटिल कि हम स्वयं उन्हें पूरी तरह से व्यक्त करने में सक्षम नहीं हैं, और किसी भी प्रयास में अनिवार्य रूप से कुछ खुला कोने का मामला होगा। उपयोगिता की उपयोगिता एआई अनुसंधान के लिए अवधारणा महत्वपूर्ण है क्योंकि एक सुपर-इंटेलिजेंट एआई वास्तव में हर कोने के माध्यम से खोज करेगा, जिसमें कोने भी शामिल हैं जो हमें इतना अनजान लगता है कि हम उनके बारे में सोचते भी नहीं हैं, इसके उद्देश्य को अधिकतम करने के लिए। एक सुपर-इंटेलिजेंट एआई को कैंसर का इलाज करने के लिए कहें, और आणविक जीव विज्ञान में कुछ जटिल जटिल बदलावों के माध्यम से इसे 99.99% रास्ता मिल जाएगा, लेकिन जल्द ही यह महसूस होगा कि यह परमाणु युद्ध और/या जैविक महामारी के माध्यम से मानव विलुप्त होने से 100% तक टकरा सकता है। इसे इलाज के लिए कहें। मनुष्यों को मारे बिना कैंसर, और यह केवल सभी मनुष्यों को अपने आप को फ्रीज करने के लिए मजबूर कर देगा, यह तर्क देते हुए कि यह तकनीकी रूप से हत्या नहीं कर रहा है क्योंकि यह मनुष्यों को जगा सकता है अगर वह चाहता – यह बस नहीं होगा। और आगे भी।

स्मार्ट कॉन्ट्रैक्ट भूमि में स्थिति समान है। हम मानते हैं कि हम “निष्पक्षता” जैसी चीज़ों को महत्व देते हैं, लेकिन यह परिभाषित करना कठिन है कि निष्पक्षता का अर्थ क्या है। आप “डीएओ से 10000 ईटीएच चोरी करना किसी के लिए संभव नहीं होना चाहिए” जैसी बातें कहना चाह सकते हैं, लेकिन क्या होगा यदि किसी दिए गए निकासी लेनदेन के लिए, डीएओ ने वास्तव में हस्तांतरण को मंजूरी दे दी है क्योंकि प्राप्तकर्ता ने एक मूल्यवान सेवा प्रदान की है? लेकिन फिर, अगर स्थानांतरण को मंजूरी दे दी गई थी, तो हम कैसे जानते हैं कि इसे तय करने के तंत्र को गेम-सैद्धांतिक भेद्यता के माध्यम से मूर्ख नहीं बनाया गया था? गेम-सैद्धांतिक भेद्यता क्या है? “विभाजन” के बारे में क्या? ब्लॉकचेन-आधारित बाजार के मामले में, फ्रंट-रनिंग के बारे में क्या? यदि दिया गया अनुबंध एक “मालिक” निर्दिष्ट करता है जो फीस जमा कर सकता है, तो क्या होगा यदि किसी के लिए मालिक बनने की क्षमता वास्तव में नियमों का हिस्सा थी, मज़े में जोड़ने के लिए?

यह सब औपचारिक सत्यापन, टाइप थ्योरी, अजीब प्रोग्रामिंग लैंग्वेज और इस तरह के विशेषज्ञों के खिलाफ हड़ताल नहीं है; स्मार्ट लोग पहले से ही इन मुद्दों को जानते और सराहते हैं। हालांकि, यह दर्शाता है कि क्या हासिल किया जा सकता है इसके लिए एक मौलिक बाधा है, और “निष्पक्षता” कोई ऐसी चीज नहीं है जिसे किसी प्रमेय में गणितीय रूप से सिद्ध किया जा सके – कुछ मामलों में, निष्पक्षता के दावों का सेट इतना लंबा और जटिल है कि आपके पास आश्चर्य करने के लिए कि क्या दावों के सेट में बग हो सकता है।

शमन पथ की ओर

उस ने कहा, ऐसे बहुत से क्षेत्र हैं जहां मंशा और कार्यान्वयन के बीच अंतर को बहुत कम किया जा सकता है। एक श्रेणी सामान्य पैटर्न लेने और उन्हें हार्डकोड करने का प्रयास करना है: उदाहरण के लिए, रुबिक्सी बग को बनाने से बचा जा सकता था मालिक एक कीवर्ड जिसे केवल बराबर के लिए प्रारंभ किया जा सकता है संदेश भेजने वाला कंस्ट्रक्टर में और संभवतः ए में स्थानांतरित किया गया स्थानांतरण स्वामित्व समारोह। एक अन्य श्रेणी यथासंभव अधिक से अधिक मानकीकृत मध्य-स्तरीय घटकों को बनाने का प्रयास करना है; उदाहरण के लिए, हो सकता है कि हम हर कैसिनो को अपना खुद का रैंडम नंबर जेनरेटर बनाने से हतोत्साहित करना चाहें, और इसके बजाय लोगों को इसके लिए निर्देशित करना चाहें रांडो (या ऐसा कुछ मेरा रांडो ++ प्रस्तावएक बार लागू)।

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

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

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

जैसा कि यह पता चला है, बहुत सारे अनुबंध इस परिभाषा से आच्छादित हो सकते हैं। हालाँकि, उनमें से सभी नहीं कर सकते; एक अपवाद एक “सामान्य उद्देश्य विकेन्द्रीकृत विनिमय” अनुबंध का विचार है जहां कोई भी संपत्ति ए की दी गई राशि के लिए संपत्ति ए की दी गई राशि के लिए व्यापार करने की पेशकश कर सकता है, जहां ए और बी मनमाने हैं। ERC20-संगत टोकन। कोई केवल कुछ संपत्तियों के लिए एक विशेष-उद्देश्य अनुबंध कर सकता है, और इस प्रकार “विश्वसनीय कैली” छूट के अंतर्गत आता है, लेकिन एक सामान्य होना एक बहुत ही मूल्यवान विचार जैसा लगता है। लेकिन उस स्थिति में, एक्सचेंज को कॉल करने की आवश्यकता होगी स्थानांतरण करना और इससे स्थानांतरित करें अज्ञात अनुबंधों की और, हाँ, उन्हें चलाने के लिए पर्याप्त गैस दें और संभवतः एक्सचेंज का फायदा उठाने की कोशिश करने के लिए फिर से प्रवेश करें। इस मामले में, संकलक एक स्पष्ट चेतावनी फेंकना चाह सकता है जब तक कि “म्यूटेक्स लॉक” का उपयोग उन कॉलों के दौरान अनुबंध को फिर से एक्सेस करने से रोकने के लिए नहीं किया जाता है।

समाधान की तीसरी श्रेणी गहराई में रक्षा है। एक उदाहरण, नुकसान को रोकने के लिए (लेकिन चोरी नहीं) उन सभी अनुबंधों को प्रोत्साहित करना है जो एक समाप्ति तिथि के लिए स्थायी होने का इरादा नहीं रखते हैं, जिसके बाद मालिक अनुबंध की ओर से मनमाने ढंग से कार्रवाई कर सकता है; इस तरह, नुकसान तभी संभव होगा जब (i) अनुबंध खराब हो जाए, और साथ ही (ii) मालिक लापता या बेईमान हो। विश्वसनीय मल्टीसिग “मालिक” कम करने के लिए उभर सकते हैं (ii)। प्रतीक्षा अवधि जोड़कर चोरी को कम किया जा सकता है। डीएओ मुद्दे को दायरे में बहुत कम कर दिया गया था क्योंकि चाइल्ड डीएओ को 28 दिनों के लिए बंद कर दिया गया था। मेकरडीएओ में एक प्रस्तावित सुविधा किसी भी शासन परिवर्तन के सक्रिय होने से पहले देरी करना है, जिससे टोकन धारक अपने टोकन बेचने के लिए परिवर्तन के समय से नाखुश हैं; यह भी एक अच्छा तरीका है।

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

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

समुदाय द्वारा उठाए जा सकने वाले विशेष कदम हैं:

  1. बेहतर विकास परिवेश बनाने के साथ-साथ बेहतर ब्लॉक/स्रोत कोड एक्सप्लोरर बनाने की परियोजना पर काम करना, जिसमें इनमें से कुछ विशेषताएं शामिल हैं
  2. जितना संभव हो उतने घटकों का मानकीकरण
  3. विभिन्न स्मार्ट अनुबंध प्रोग्रामिंग भाषाओं के साथ-साथ औपचारिक सत्यापन और प्रतीकात्मक निष्पादन उपकरण के साथ प्रयोग करने की परियोजना को लेना
  4. कोडिंग मानकों, ईआईपी, सॉलिडिटी में बदलाव आदि पर चर्चा करना जो आकस्मिक या जानबूझकर त्रुटियों के जोखिम को कम कर सकता है
  5. यदि आप करोड़ों डॉलर का स्मार्ट अनुबंध एप्लिकेशन विकसित कर रहे हैं, तो सुरक्षा शोधकर्ताओं तक पहुंचने पर विचार करें और विभिन्न सत्यापन उपकरणों के लिए परीक्षण मामले के रूप में अपनी परियोजना का उपयोग करने पर उनके साथ काम करें।

ध्यान दें कि, जैसा कि पिछले ब्लॉग पोस्ट में कहा गया है, उपरोक्त में से अधिकांश के लिए DEVGrants और अन्य अनुदान उपलब्ध हैं।



Source link

Leave A Reply

Your email address will not be published.

Shares