जैसा कि डेफ़री प्रोटोकॉल एथेरियम इकोसिस्टम के भीतर गर्म होना जारी है, सिपहार्ट्रेस अधिक से अधिक कारनामे देख रहा है और वैक्टर पर हमला करने लगे हैं। यह पिछले सप्ताह, 28 दिसंबर, 2020 को, कवर प्रोटोकॉल के ढाल खनन अनुबंध, लोहार, का शोषण किया गया था। हैकर्स ने खनन अनुबंध में एक बग का उपयोग किया जिसमें COVER टोकन की अनंत मात्रा का टकराव हुआ और परियोजना से $ 4.4 मिलियन से अधिक की निकासी हुई।
कवर प्रोटोकॉल रिहा कल उनके पोस्टमार्टम में कहा गया था कि देवों के लिए अज्ञात, ब्लैकस्मिथ अनुबंध की प्रारंभिक तैनाती के बाद से बग मौजूद था, जिसमें पूरी तरह से सुरक्षा ऑडिट और महत्व के महत्व पर प्रकाश डाला गया था स्मार्ट अनुबंधस्मार्ट कॉन्ट्रैक्ट क्या हैं? एक स्मार्ट अनुबंध एक कंप्यूटर समर्थक है ... अधिक.
अनंत समय की एक समयरेखा
प्रारंभिक हमलावर की समयरेखा
- न्यू बैलेंसर लिक्विडिटी पूल था जोड़ा लोहार को। एसओएल अनुबंध।
- हमलावर जमा 1,326,879.99 BPT लोहार टोकन में अनुबंध।
- उसी पर हमला किया मार डाला शोषण, अनुबंध से धन वापस लेने से।
- हमलावर करने में सक्षम था जारी रखने के पुरस्कारों का खनन और लगभग $ 4.4M की धनराशि को वापस लेना।
घटनाओं के एक दिलचस्प मोड़ में, ग्रैप फाइनेंस से जुड़े "व्हाइट हैकर्स" ने बग को लगभग $ 4M मूल्य के कॉवर टोकन का दोहन किया। ग्रैप फाइनेंस ने अंततः कवर प्रोटोकॉल को धनराशि लौटा दी।
ग्रैप फाइनेंस डिप्लॉयर बाह्य स्वामित्व खाता (ईओए) समयरेखा
- नया तरलता पूल था अनुमोदित तरलता खनन के लिए।
- ग्रैप फाइनेंस डिप्लॉयर ईओए जमा किया 15,255.55 BPT (DAI / बेसिस) ब्लैकस्मिथ.सोल अनुबंध के माध्यम से कवर पर पूल में।
- मोटे तौर पर चार मिनट बाद, धन थे वापस लिया ग्रैप फाइनेंस डिप्लॉयर के ईओए बैलेंस में 1 वी छोड़ने पर कवर।
- एक और बाहरी उपयोगकर्ता वापस ले लिया उसी समय के आसपास ब्लैकस्मिथ.सोल अनुबंध से उनका अधिकांश संतुलन, जिसने ब्लैकस्मिथ.सोल अनुबंध पर डीएआई / बेसिस पूल के लिए सभी तरलता के साथ ग्रेप फाइनेंस का नेतृत्व किया।
- ग्रैप फाइनेंस डिप्लॉयर जमा किया 15,255.55 बीपीटी (डीएआई / आधार) पूल में वापस।
- फिर ग्रैप फाइनेंस डिप्लॉयर का दावा है पुरस्कार और, शोषण के कारण, 40,796,131,214,802,500,000.21 कवर टकसाल।
- टकसाल टोकन के कुछ जलने के बाद, ग्रैप फाइनेंस डिप्लॉयर भेजता वापस ईथर को कवर करने के लिए "अगली बार, अपनी खुद की गंदगी का ख्याल रखना।"
मिंट अनन्त टोकन कैसे करें- एक तकनीकी विश्लेषण
पृष्ठभूमि
यह शोषण हमें सॉलिडिटी प्रोग्रामिंग लैंग्वेज के मूल सिद्धांतों पर वापस ले जाता है, जिसका उपयोग एथेरियम के भीतर स्मार्ट अनुबंधों को लागू करने के लिए किया जाता है। एक बार इन अनुबंधों को संकलित करने के बाद, एथेरियम वर्चुअल मशीन (ईवीएम) उन निर्देशों (यानी ओपकोड्स) को समझने में सक्षम होगा जो विभिन्न कार्यों को निष्पादित करने और स्मृति और भंडारण में हेरफेर करने के लिए उपयोग किए जाते हैं। ईवीएम में तीन अलग-अलग क्षेत्र हैं जहां यह डेटा स्टोर कर सकता है: मेमोरी, स्टोरेज और स्टैक। इन क्षेत्रों को समझना महत्वपूर्ण है कि बग का दोहन कैसे किया गया।
एक कंप्यूटिंग डिवाइस पर रैंडम एक्सेस मेमोरी (RAM) के समान, "स्मृति“सॉलिडिटी के भीतर कीवर्ड एक विशिष्ट चर के लिए मेमोरी आवंटित करता है। इस उदाहरण में, उस चर को एक विशेष फ़ंक्शन में स्कैन किया गया है। एक बार फ़ंक्शन निष्पादित होने के बाद मेमोरी को साफ़ कर दिया जाता है, लेकिन फ़ंक्शन के वापस आने से पहले उस मेमोरी की सामग्री को स्टोरेज में धकेल दिया जाता है, तो यह बना रह सकता है।
"भंडारण“सॉलिडिटी के भीतर कीवर्ड चर को मैपिंग या डेटा संरचनाओं में डेटा के भंडारण में एक संकेतक के रूप में कार्य करने की अनुमति देता है। फंक्शन कॉल और ट्रांजेक्शन के बीच स्टोरेज डेटा लगातार बना रहता है। हुड के तहत, भंडारण अनिवार्य रूप से एक कुंजी-मूल्य स्टोर है जो 256-बिट शब्दों को 256-बिट शब्दों में मैप करता है।
ध्यान दें कि ईवीएम एक रजिस्टर मशीन नहीं है, बल्कि एक स्टैक मशीन है - इस प्रकार सभी गणनाएं एक डेटा क्षेत्र पर की जाती हैं जिसे कहा जाता है ढेर। स्टैक की अधिकतम क्षमता 1024 आइटम है, लेकिन केवल शीर्ष 16 आसानी से सुलभ हैं, जिसका उपयोग शीर्ष तत्व के नीचे 16 तत्वों में से एक के साथ स्वैप करने के लिए किया जा सकता है।
बग
हैकर्स ने कवर प्रोटोकॉल के ब्लैकस्मिथ.सोल का शोषण किया- एक शील्ड माइनिंग कॉन्ट्रैक्ट, जो कवर प्रोटोकॉल के भीतर सीएलएआईएम और एनओसीएलएआईएम टोकन जैसे विशिष्ट प्रोजेक्ट या पूल के टोकन में पुरस्कृत होने की अनुमति देता है।
बग को बेहतर ढंग से समझने के लिए, पहले, जनता को देखें पूल वैरिएबल जो एक मैपिंग है (यानी डेटा का भंडारण):
At लाइन 118, हम देखते हैं कि अनुबंध "मेमोरी" कीवर्ड के माध्यम से मेमोरी में पूल डेटा को कैश करता है।
तब से लाइन 121अनुबंध के रूप में भंडारण में पूल अद्यतन करता है अपडेटपूल (पता _lpToken) समारोह एक का उपयोग करता है पूल भंडारण पूल चर।
हालांकि, यदि आप नीचे में आगे देखो जमा (पता _lpToken, uint256 _amount) फ़ंक्शन, यह उसी का उपयोग करता है पूल लाइन 118 से वेरिएबल जिसे गणना के लिए फ़ंक्शन के भीतर मेमोरी में कैश किया गया था Pool.accRewardsPerToken। इस बिंदु पर, पूल चर से कॉपी किया गया था पूल मैपिंग और मेमोरी में सहेजा गया था।
नतीजतन, कोई भी परिवर्तन किए गए पूल चर के भीतर जमा (पता _lpToken, uint256 _amount) फ़ंक्शन परिवर्तन नहीं करेगा पूल इस तथ्य के कारण अनुबंध के ऑन-चेन स्टोरेज में मैपिंग कि "मेमोरी" कीवर्ड का उपयोग करने वाले चर केवल फ़ंक्शन के भीतर ही स्कैन किए जाते हैं। वहां से, अनुबंध अद्यतन करता है Pool.accRewardsPerToken के अंदर अपडेटपूल (पता _lpToken) फ़ंक्शन, जो भंडारण का उपयोग करता है। तो अब, भीतर अपडेटपूल (पता _lpToken) कार्य करें Pool.accRewardsPerToken यह बहुत हद तक तकनीकी रूप से एक नया पूल है और इससे जुड़ा नहीं होने के कारण अपडेट बढ़ता जाता है पूल याद में।
इस भेद्यता और स्मृति और भंडारण के बीच दुरुपयोग के बाद, माइनर.इनाम राइटऑफ़ के अंदर जमा (पता _lpToken, uint256 _amount) फ़ंक्शन गलत होने के साथ-साथ गलत तरीके से उपयोग किया जाता है पूल .acewewardsPerToken, जैसा कि हम अभी भी जमा फ़ंक्शन के भीतर हैं जो एक मेमोरी कैश्ड इंस्टेंस संभाल रहा है पूल.
डिपॉजिट फंक्शन के अलावा, कोई भी, जैसे कि ग्रैप फाइनेंस, निष्पादित होने पर टकसाल टोकन की एक पागल राशि प्राप्त कर सकते हैं। दावा-पता (पता _lpToken) समारोह। यह फ़ंक्शन, जिसका उपयोग उनके पुरस्कारों को हथियाने के लिए किया जाता है, कॉलिंग को समाप्त करता है _claimCoverRewards (पूल मेमोरी पूल, माइनर मेमोरी माइनर) जो संदर्भ माइनर.इनाम राइटऑफ़ कि हमने ऊपर प्रकाश डाला। जैसा कि चर वास्तविक से बहुत छोटा है Pool.accRewardsPerTokenटोकनों की एक बहुतायत खनन में अनुबंध का परिणाम है।
चाबी छीन लेना
CipherTrace को उम्मीद है कि शोषित बग में यह पृष्ठभूमि पूरी तरह से सुरक्षा ऑडिट के महत्व को सामने लाती है और जो भी हो blockchainएक ब्लॉकचेन- बिटकॉइन और अन्य सी की तकनीक अंतर्निहित ... अधिक एक करने के लिए तैनात करने के लिए चुनता है। जबकि ग्रैप फाइनेंस ने अपने द्वारा प्राप्त धन को शोषण के माध्यम से वापस कर दिया था, लेकिन मूल हैकर अभी भी डेफी प्रोटोकॉल से $ 4M से अधिक शुद्ध करने में सक्षम था, और COVER टोकन का मूल्य तब से लगभग 99% कम हो गया है।
स्रोत: https://ciphertrace.com/infinite-minting-exploit-nets-attacker-4-4m/