جیسا کہ Ethereum ایکو سسٹم کے اندر DeFi پروٹوکولز گرم ہوتے رہتے ہیں، CipherTrace زیادہ سے زیادہ کارنامے دیکھ رہا ہے اور حملہ آور ویکٹر سامنے آتے ہیں۔ اس پچھلے ہفتے، 28 دسمبر 2020 کو، کور پروٹوکول کے شیلڈ مائننگ کنٹریکٹ، لوہار کا استحصال کیا گیا۔ ہیکرز نے کان کنی کے معاہدے میں ایک بگ کا استعمال کیا تاکہ لامحدود مقدار میں COVER ٹوکنز کو ٹکسال کیا جا سکے اور پروجیکٹ سے $4.4 ملین سے زیادہ کا نقصان ہو سکے۔
پروٹوکول کا احاطہ کریں جاری کل ان کے پوسٹ مارٹم میں یہ بتاتے ہوئے کہ، ڈیوس کے لیے نامعلوم، یہ بگ لوہار کے معاہدے کی ابتدائی تعیناتی کے بعد سے موجود تھا، جس نے مکمل حفاظتی آڈٹ کی اہمیت کو اجاگر کیا۔ سمارٹ معاہدےسمارٹ معاہدے کیا ہیں؟ ایک سمارٹ معاہدہ ایک کمپیوٹر پرو ہے… مزید.
لامحدود منٹنگ کی ٹائم لائن
ابتدائی حملہ آور کی ٹائم لائن
- نیا بیلنسر لیکویڈیٹی پول تھا۔ شامل کیا Blacksmith.sol کے معاہدے پر۔
- حملہ آور ذخائر Blacksmith.sol کے معاہدے میں 1,326,879.99 BPT ٹوکن۔
- پھر وہی حملہ آور پھانسی معاہدہ سے فنڈز نکال کر استحصال۔
- حملہ آور کرنے میں کامیاب ہو گیا۔ جاری تقریباً $4.4M کے انعامات اور فنڈز نکالنا۔
واقعات کے ایک دلچسپ موڑ میں، گریپ فائنانس سے منسلک مبینہ "سفید ہیکرز" نے بھی اس مسئلے کا فائدہ اٹھاتے ہوئے تقریباً $4M مالیت کے کور ٹوکنز حاصل کیے ہیں۔ گریپ فنانس نے آخر کار کور پروٹوکول کو فنڈز واپس کردیئے۔
Grap Finance Deployer Externally Owned Account (EOA) ٹائم لائن
- نیا لیکویڈیٹی پول تھا۔ کی منظوری دے دی لیکویڈیٹی کان کنی کے لیے۔
- Grap Finance Deployer EOA جمع 15,255.55 BPT (DAI/Basis) بلیکسمتھ سول کنٹریکٹ کے ذریعے کور پر پول میں۔
- تقریبا چار منٹ بعد، فنڈز تھے واپس لے لیا گریپ فنانس تعینات کرنے والے کے EOA بیلنس میں 1 وی کو چھوڑنے والے کور پر۔
- ایک اور بیرونی صارف واپس چلایا Blacksmith.sol معاہدے سے ان کا زیادہ تر بیلنس اسی وقت کے آس پاس تھا جس کی وجہ سے Grap Finance کو Blacksmith.sol کے معاہدے پر DAI/Basis پول کے لیے تمام لیکویڈیٹی حاصل ہوئی۔
- گریپ فنانس تعینات کرنے والا جمع پول میں واپس 15,255.55 BPT (DAI/Basis)۔
- پھر Grap Finance Deployer دعوے انعامات اور، استحصال کی وجہ سے، منٹس 40,796,131,214,802,500,000.21 کور۔
- ٹکسال والے ٹوکن کے کچھ جلانے کے بعد، گریپ فنانس ڈیپلائر بھیجتا ہے بتاتے ہوئے کور پر واپس ایتھر "اگلی بار، اپنی گندگی کا خیال رکھنا۔"
لامحدود ٹوکن کو کیسے مِنٹ کیا جائے—ایک تکنیکی تجزیہ
پس منظر
یہ استحصال ہمیں سولیڈیٹی پروگرامنگ لینگویج کے بنیادی اصولوں پر واپس لے جاتا ہے، جو ایتھریم کے اندر سمارٹ معاہدوں کو نافذ کرنے کے لیے استعمال ہوتی ہے۔ ایک بار جب یہ معاہدے مرتب ہو جائیں گے، Ethereum Virtual Machine (EVM) ان ہدایات (یعنی opcodes) کو سمجھنے کے قابل ہو جائے گی جو مختلف فنکشنز کو انجام دینے اور میموری اور اسٹوریج میں ہیرا پھیری کے لیے استعمال ہوتی ہیں۔ ای وی ایم کے تین مختلف شعبے ہیں جہاں یہ ڈیٹا محفوظ کر سکتا ہے: میموری، اسٹوریج، اور اسٹیک. ان علاقوں کو سمجھنا یہ سمجھنے کے لیے اہم ہے کہ بگ کا استحصال کیسے کیا گیا۔
کمپیوٹنگ ڈیوائس پر رینڈم ایکسیس میموری (RAM) کی طرح، "میموری” کلیدی لفظ سولیڈیٹی کے اندر مخصوص متغیر کے لیے میموری مختص کرتا ہے۔ اس مثال میں، وہ متغیر ایک مخصوص فنکشن کے لیے دائرہ کار ہے۔ فنکشن کے مکمل ہونے کے بعد میموری صاف ہو جاتی ہے، لیکن اگر فنکشن واپس آنے سے پہلے اس میموری کے مواد کو اسٹوریج میں دھکیل دیا جائے تو وہ باقی رہ سکتی ہے۔
"ذخیرہ” کلیدی لفظ سالیڈیٹی کے اندر متغیرات کو نقشہ سازی یا ڈیٹا سٹرکچرز میں ڈیٹا کے ذخیرہ میں ایک پوائنٹر کے طور پر کام کرنے کی اجازت دیتا ہے۔ سٹوریج ڈیٹا فنکشن کالز اور ٹرانزیکشنز کے درمیان مستقل رہتا ہے۔ ہڈ کے نیچے، اسٹوریج بنیادی طور پر ایک کلیدی قدر کا اسٹور ہے جو 256 بٹ الفاظ کو 256 بٹ الفاظ سے نقشہ بناتا ہے۔
نوٹ کریں کہ ای وی ایم ایک رجسٹر مشین نہیں ہے بلکہ ایک اسٹیک مشین ہے- اس طرح تمام کمپیوٹیشن ڈیٹا ایریا پر کیے جاتے ہیں اسٹیک. اسٹیک میں 1024 آئٹمز کی زیادہ سے زیادہ گنجائش ہے، لیکن صرف ٹاپ 16 ہی آسانی سے قابل رسائی ہیں جنہیں اس کے نیچے کے 16 عناصر میں سے کسی ایک کے ساتھ سب سے اوپر والے عنصر کو تبدیل کرنے کے لیے استعمال کیا جا سکتا ہے۔
بگ
ہیکرز نے Cover Protocol's Blacksmith.sol کا استحصال کیا—ایک شیلڈ مائننگ کنٹریکٹ جو اسٹیکرز کو کور پروٹوکول کے اندر مخصوص پروجیکٹ یا پول کے ٹوکنز، جیسے CLAIM اور NOCLAIM ٹوکنز میں انعام دینے کی اجازت دیتا ہے۔
بگ کو بہتر طور پر سمجھنے کے لیے، پہلے آئیے عوام کو دیکھتے ہیں۔ تالابوں متغیر جو نقشہ سازی ہے (یعنی ڈیٹا کا ذخیرہ):
At لائن 118، ہم دیکھتے ہیں کہ معاہدہ "میموری" کلیدی لفظ کے ذریعے میموری میں پول ڈیٹا کو محفوظ کرتا ہے۔
پھر پر لائن 121، معاہدہ اسٹوریج میں پول کو بطور اپ ڈیٹ کرتا ہے۔ اپ ڈیٹ پول (پتہ _lpToken) تقریب استعمال کرتا ہے a پول اسٹوریج پول متغیر.
تاہم، اگر آپ مزید نیچے دیکھیں جمع (ایڈریس _lpToken، uint256 _amount) فنکشن، یہ ایک ہی استعمال کرتا ہے۔ پول لائن 118 سے متغیر جس کو فنکشن کے اندر میموری میں کیش کیا گیا تھا۔ pool.accRewardsPerToken. اس موقع پر ، پول متغیر کو سے کاپی کیا گیا تھا۔ تالابوں میپنگ اور میموری میں محفوظ کیا گیا۔
نتیجے کے طور پر، میں کی گئی کوئی بھی تبدیلی پول کے اندر متغیر جمع (ایڈریس _lpToken، uint256 _amount) فنکشن کو تبدیل نہیں کرے گا۔ تالابوں کنٹریکٹ کے آن چین اسٹوریج میں میپنگ اس حقیقت کی وجہ سے کہ متغیرات جو "میموری" کلیدی لفظ استعمال کرتے ہیں صرف فنکشن کے اندر ہی دائرہ کار ہوتے ہیں۔ وہاں سے، معاہدہ اپ ڈیٹ کرتا ہے pool.accRewardsPerToken کے اندر اپ ڈیٹ پول (پتہ _lpToken) فنکشن، جو اسٹوریج کا استعمال کرتا ہے۔ تو اب، اندر اندر اپ ڈیٹ پول (پتہ _lpToken) فنکشن pool.accRewardsPerToken جس کو اپ ڈیٹ کیا جاتا ہے اس میں کافی اضافہ ہوتا ہے کیونکہ یہ تکنیکی طور پر ایک نیا پول تھا اور اس سے وابستہ نہیں تھا۔ پول یاد میں
میموری اور اسٹوریج کے درمیان اس کمزوری اور غلط استعمال کے بعد، miner.rewardWriteoff کے اندر جمع (ایڈریس _lpToken، uint256 _amount) فنکشن کو غلط استعمال کرنے کے ساتھ ساتھ غلط حساب لگایا گیا ہے۔ pool.accRewardsPerToken، جیسا کہ ہم ابھی بھی ڈپازٹ فنکشن کے اندر ہیں جو میموری کیشڈ مثال کو سنبھال رہا ہے۔ پول.
ڈپازٹ فنکشن کے علاوہ، کوئی بھی، جیسے کہ گریپ فائنانس، جب وہ اس پر عمل درآمد کرتے ہیں تو مائنٹڈ ٹوکنز کی دیوانہ وار رقم حاصل کر سکتا ہے۔ انعامات کا دعوی کریں (ایڈریس _lpToken) فنکشن یہ فنکشن، جو ان کے انعامات کو حاصل کرنے کے لیے استعمال ہوتا ہے، کال ختم کرتا ہے۔ _claimCoverRewards (پول میموری پول، مائنر میموری مائنر) جو حوالہ دیتا ہے miner.rewardWriteoff جس پر ہم نے اوپر روشنی ڈالی ہے۔ چونکہ وہ متغیر اصل سے بہت چھوٹا ہے۔ pool.accRewardsPerToken, معاہدے کے نتیجے میں ٹوکنز کی کثرت پیدا ہوتی ہے۔
کلیدی لے لو
CipherTrace کو امید ہے کہ استحصال شدہ بگ کا یہ پس منظر مکمل سیکیورٹی آڈٹ اور اسمارٹ معاہدوں کی کسی بھی چیز پر غور کرنے کی اہمیت کو اجاگر کرے گا۔ blockchainایک بلاکچین - بٹ کوائن اور دیگر سی… مزید کوئی تعینات کرنے کا انتخاب کرتا ہے۔ جب کہ Grap Finance نے استحصال کے ذریعے حاصل کیے گئے فنڈز کو واپس کر دیا، اصل ہیکر اب بھی DeFi پروٹوکول سے $4M سے زیادہ کا جال حاصل کرنے میں کامیاب تھا، اور COVER ٹوکن کی قیمت تقریباً 99% تک گر گئی ہے۔
ماخذ: https://ciphertrace.com/infinite-minting-exploit-nets-attacker-4-4m/