المصدر: تكنولوجيا Shenzhen Lingshi
الخلفية
تم اكتشاف هجمات على السلسلة ضد DualPools:
https://bscscan.com/tx/0x90f374ca33fbd5aaa0d01f5fcf5dee4c7af49a98dc56b47459d8b7ad52ef1e93
DualPools (https://dualpools.com)  ; استنادًا إلى VenusProtocol (https://venus.io/) المعدل، فهو مشروع DeFi يوفر خدمات المبادلة والإقراض والاقتراض وغيرها من الخدمات.
وضع التشغيل كالتالي:
p >
DualPools عبارة عن منصة إقراض لا مركزية. يقوم المستخدمون بإيداع الأصول الأساسية (الأصول الأساسية) من خلال الودائع والحصول على dToken المقابل، وعلى العكس من ذلك، عند سحب الأصول الأساسية من خلال الاسترداد، يتم تدمير الأصول المقابلة .dToken.
من بينها، يتم التحكم في نسبة التبادل بين الأصول الأساسية للأصول الأساسية وdToken بواسطة ExchangeRate (مؤشر السيولة). ببساطة، ExchangeRate هو قيمة dToken.
exchangeRate = (totalCash + TotalBorrows - TotalReserves) / TotalSupply
تحليل الهجوم
ببساطة، ينقسم الهجوم إلى قسمين:
1. استخدم المتسلل مجمع التداول الجديد DualPools للحصول على سيولة غير كافية (السيولة 0 )، مما يؤدي إلى رفع سعر dLINK بشكل كبير واقتراض الأصول الأساسية لمجموعات التداول الأخرى (WBNB، BTCB، ETH، ADA، BUSD).
2. استخدم مشكلة الاقتطاع الدقيق لاستعادة كل الارتباط المستثمر في المرحلة المبكرة.
تحليل تفصيلي للخطوة 1
اقترض المهاجم الأموال من خلال DODO Private Pool وPancakeSwapV3، وحصل على BNB وBUSD كأموال للهجوم الأولي. كما هو موضح أدناه :
في وقت لاحق، تم رهن BNB وBUSD من خلال VenusProtocol، وتم إقراض 11,500 LINK لتنفيذ هجمات ضد DualPools.
أولاً، حصل المهاجم على وحدتين كحد أدنى من dLINK من خلال تجمع المعاملات dLINK-LINKmint، ثم قام بنقل 114999999999999999999998 وحدة من LINK إلى تجمع المعاملات.
نظرًا لعدم تهيئة مجمع التداول، لا توجد سيولة. ويتم حساب معدل التبادل على النحو التالي:
exchangeRate = (totalCash + TotalBorrows - TotalReserves) / TotalSupply
في هذا الوقت، TotalCash هو رصيد LINK في مجمع المعاملات، وهو 1149999999999999999998+2=1150000000000000000000. TotalBorrows وtotalReserves كلاهما 0، وtotalSupply هو 2 (لأن المتسلل حصل على وحدتين كحد أدنى من dLINK من خلال النعناع). ولذلك، فإن سعر الصرف في هذا الوقت هو 5750000000000000000000 (زيادة قيمة dLINK بمقدار 575 مرة). نظرًا لأن المهاجم كان يمتلك 2 dLINKs وكانت قيمتها عالية بما يكفي، فقد اقترض المتسلل 50 BNB و0.17 BTCB و3.99 ETH و6378 ADA و911 BUSD من مجموعات أخرى.
تحليل تفصيلي للخطوة 2
< p style="text-align:left;">قام المهاجم باسترداد الحد الأدنى من وحدتي dLINK من دار سك العملة السابقة إلى 114999999999999999999898 وحدة من LINK من خلال الاسترداد الأساسي. لأنه تم التلاعب بسعر الصرف من قبل المهاجم إلى 5750000000000000000000. ولذلك، فإن dLINK المطلوب لتبادل 1149999999999999999898 الحد الأدنى من وحدات LINK هو 1149999999999999999898 / 575000000000000000000 = 1.999999999999999 أي 1.999999 كحد أدنى وحدات d LINK، ولكن نظرًا لاقتطاع دقة البيانات، يلزم وجود وحدة واحدة فقط كحد أدنى من dLINK.
في هذه المرحلة، قام المهاجم بإخراج 1149999999999999999898 وحدة من LINK التي استثمرها سابقًا. وبعد ذلك، سيتم إرجاع الأموال المقترضة من VenusProtocol وPancakeSwapV3 وDODO Private Pool لإكمال الهجوم.
الملخص
يستغل المهاجم ضعف السيولة في مجمع التداول الجديد DualPools للتلاعب بسعر صرف الأصل الأساسي، مما يتسبب في تشويه سعر dToken المطابق للأصل الأساسي، بحيث يمكن استخدام dToken صغير جدًا كضمان لإقراض كمية كبيرة من الأصول الأساسية الأخرى. ثم يتم استخدام مشكلة الاقتطاع الخاصة بتقسيم العقود الذكية لاسترداد الأصول المستثمرة في الهجوم السابق. في هذه المرحلة، اكتمل الهجوم على مشروع DeFi DualPools. ص>