যেহেতু ডিফাই প্রোটোকলগুলি ইথেরিয়াম ইকোসিস্টেমের মধ্যে উত্তপ্ত হতে থাকে, তাই সিফারট্রেস আরও বেশি শোষণ এবং আক্রমণ ভেক্টরগুলিকে প্রকাশ করতে দেখছে। এই গত সপ্তাহে, 28শে ডিসেম্বর, 2020-এ, কভার প্রোটোকলের শিল্ড মাইনিং চুক্তি, ব্ল্যাকস্মিথ, শোষিত হয়েছিল। হ্যাকাররা খনন চুক্তিতে একটি বাগ ব্যবহার করে অসীম পরিমাণ কভার টোকেন মিন্ট করে এবং প্রকল্প থেকে $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/বেসিস) Blacksmith.sol চুক্তির মাধ্যমে কভারের পুলে।
- মোটামুটি চার মিনিট পরে, নিধি ছিল অপসারিত Grap Finance Deployer এর EOA ব্যালেন্সে 1 Wei রেখে কভারে।
- অন্য একজন বাইরের ব্যবহারকারী প্রত্যাহার Blacksmith.sol চুক্তি থেকে তাদের বেশিরভাগ ভারসাম্য একই সময়ে, যা Blacksmith.sol চুক্তিতে DAI/বেসিস পুলের জন্য সমস্ত তারল্য সহ গ্র্যাপ ফাইন্যান্সকে নেতৃত্ব দেয়।
- গ্র্যাপ ফাইন্যান্স নিয়োগকারী জমা পুলে ফিরে 15,255.55 BPT (DAI/বেসিস)।
- তারপর Grap Finance Deployer দাবি পুরষ্কার এবং, শোষণের কারণে, টাকশাল 40,796,131,214,802,500,000.21 কভার।
- মিন্টেড টোকেন কিছু পোড়ানোর পর, Grap Finance Deployer পাঠায় ফিরে ইথার কভার স্টেটিং "পরের বার, নিজের বিষ্ঠার যত্ন নেও।"
কিভাবে অসীম টোকেন মিন্ট করবেন—একটি প্রযুক্তিগত বিশ্লেষণ
পটভূমি
এই শোষণটি আমাদের সলিডিটি প্রোগ্রামিং ভাষার মৌলিক বিষয়গুলিতে ফিরিয়ে নিয়ে যায়, যা ইথেরিয়ামের মধ্যে স্মার্ট চুক্তি বাস্তবায়নের জন্য ব্যবহৃত হয়। একবার এই চুক্তিগুলি কম্পাইল হয়ে গেলে, Ethereum ভার্চুয়াল মেশিন (EVM) নির্দেশাবলী (অর্থাৎ opcodes) বুঝতে সক্ষম হবে যা বিভিন্ন ফাংশন চালানো এবং মেমরি এবং স্টোরেজ ম্যানিপুলেট করতে ব্যবহৃত হয়। ইভিএমের তিনটি ভিন্ন ক্ষেত্র রয়েছে যেখানে এটি ডেটা সংরক্ষণ করতে পারে: মেমরি, স্টোরেজ এবং স্ট্যাক. বাগটি কীভাবে কাজে লাগানো হয়েছিল তা বোঝার জন্য এই অঞ্চলগুলি বোঝা গুরুত্বপূর্ণ৷
একটি কম্পিউটিং ডিভাইসে র্যান্ডম অ্যাক্সেস মেমরির (RAM) অনুরূপ, "স্মৃতিসলিডিটির মধ্যে কীওয়ার্ড একটি নির্দিষ্ট ভেরিয়েবলের জন্য মেমরি বরাদ্দ করে। এই উদাহরণে, যে পরিবর্তনশীল একটি নির্দিষ্ট ফাংশন স্কোপ করা হয়. ফাংশনটি কার্যকর হওয়ার পরে মেমরিটি সাফ করা হয়, তবে ফাংশনটি ফিরে আসার আগে সেই মেমরির বিষয়বস্তুগুলি স্টোরেজে পুশ করা হলে তা থেকে যেতে পারে।
দ্য "স্টোরেজসলিডিটির মধ্যে কীওয়ার্ড ভেরিয়েবলগুলিকে ম্যাপিং বা ডেটা স্ট্রাকচারে ডেটা স্টোরেজের পয়েন্টার হিসাবে কাজ করতে দেয়। স্টোরেজ ডেটা ফাংশন কল এবং লেনদেনের মধ্যে স্থায়ী। হুডের অধীনে, স্টোরেজ মূলত একটি মূল-মূল্যের দোকান যা 256-বিট শব্দকে 256-বিট শব্দের সাথে মানচিত্র করে।
মনে রাখবেন যে ইভিএম একটি রেজিস্টার মেশিন নয় বরং একটি স্ট্যাক মেশিন - এইভাবে সমস্ত গণনা একটি ডেটা এলাকায় সঞ্চালিত হয় স্ট্যাক. স্ট্যাকের সর্বোচ্চ 1024টি আইটেমের ক্ষমতা রয়েছে, তবে শুধুমাত্র শীর্ষ 16টি সহজেই অ্যাক্সেসযোগ্য যা এটির নীচে থাকা 16টি উপাদানের একটির সাথে শীর্ষস্থানীয় উপাদানকে অদলবদল করতে ব্যবহার করা যেতে পারে এবং আরও অনেক কিছু।
পোকাটি
হ্যাকাররা কভার প্রোটোকলের Blacksmith.sol-কে শোষণ করেছে—একটি শিল্ড মাইনিং চুক্তি যা কভার প্রোটোকলের মধ্যে স্টেকারদের নির্দিষ্ট প্রকল্প বা পুলের টোকেন, যেমন ক্লেম এবং নোক্লেম টোকেনগুলিতে পুরস্কৃত করার অনুমতি দেয়৷
বাগটি আরও ভালভাবে বোঝার জন্য, প্রথমে জনসাধারণের দিকে তাকাই পুল ভেরিয়েবল যা একটি ম্যাপিং (যেমন ডেটা স্টোরেজ):
At লাইন 118, আমরা দেখতে পাই যে চুক্তি "মেমরি" কীওয়ার্ডের মাধ্যমে মেমরিতে পুল ডেটা ক্যাশ করে।
তারপর লাইন 121, চুক্তি হিসাবে স্টোরেজ পুল আপডেট আপডেটপুল (ঠিকানা _lpToken) ক্রিয়া ব্যবহার করে পুল স্টোরেজ পুল পরিবর্তনশীল।
যাইহোক, আপনি যদি আরও নিচে তাকান জমা (ঠিকানা _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, চুক্তির ফলে প্রচুর পরিমাণে টোকেন তৈরি হয়।
কী Takeaways
সিফারট্রেস আশা করে যে শোষিত বাগের এই পটভূমিটি পুঙ্খানুপুঙ্খ নিরাপত্তা নিরীক্ষার গুরুত্ব এবং স্মার্ট চুক্তির যেকোনটি বিষয়ে আলোকপাত করবে blockchainএকটি ব্লকচেইন — প্রযুক্তি অন্তর্নিহিত বিটকয়েন এবং অন্যান্য সি… অধিক কেউ মোতায়েন করতে বেছে নেয়। গ্র্যাপ ফাইন্যান্স তাদের শোষণের মাধ্যমে প্রাপ্ত তহবিল ফেরত দিলেও, আসল হ্যাকার এখনও DeFi প্রোটোকল থেকে $4M এর বেশি নেট করতে সক্ষম হয়েছিল এবং কভার টোকেনের মান তখন থেকে প্রায় 99% কমে গেছে।
সূত্র: https://ciphertrace.com/infinite-minting-exploit-nets-attacker-4-4m/