في 18 أكتوبر 2023 19:48:59 بتوقيت بكين ، تعرض مجمع إقراض Hope.money للهجوم بناء على قروض فلاش.
قامت Hope.money ببناء خدمة مالية لامركزية كاملة المكدس بما في ذلك منصة إقراض HopeLend ، وتبادل HopeSwap اللامركزي ، $HOPE المستقرة ، ورمز الحوكمة $LT.
البروتوكول المتضمن في الهجوم هو HopeLend ، وهي منصة إقراض لامركزية تسمح للمستخدمين بتوفير السيولة للبروتوكول أو الإفراط في الضمان لكسب الدخل.
بداية الحدث ونهايته
في تنفيذ كود HopeLend ، كانت هناك ثغرة أمنية قابلة للاستغلال في مجمع الإقراض ، بسبب مشكلة تقسيم الأعداد الصحيحة الخاطئة عند إتلاف شهادات الإيداع ، مما أدى إلى اقتطاع الفاصلة العشرية ، وتحقيق تدمير شهادات أقل من المتوقع ، والحصول على نفس الرموز المميزة للقيمة كما هو متوقع.
استغل المهاجم هذا الخلل لإفراغ مجموعات إقراض متعددة من الأموال على Hope.money.
تم نشر مجمع الإقراض hEthWbtc قبل 73 يوما ، ولكن لم تكن هناك أموال فيه ، لذلك قام المتسللون بضخ مبالغ كبيرة من المال في مجمع الإقراض لرفع معدل الخصم بشكل كبير ، وبالتالي إفراغ جميع مجمعات الإقراض الأخرى بسرعة في معاملة جماعية.
وبشكل أكثر دراماتيكية ، لم يتلق المتسلل المستغل الأموال اللازمة للاستغلال ، وتم اكتشاف معاملة هجومه من قبل الخاطف ، الذي قلد هجومه وسرق بنجاح جميع أموال عائدات الهجوم (527 ETH) ، وفي النهاية تم استخدام 50٪ من أموال عائدات الهجوم (263 ETH) من قبل اللصوص لرشوة عمال المناجم الذين قاموا بتعبئة الكتلة (الحمولة).
قام الهاكر الأولي الذي اكتشف الثغرة الأمنية بإنشاء عقد هجوم في الكتلة 18377039 ، وأجرى مكالمة لمهاجمة العقد في الكتلة 18377042 ، وفي ذلك الوقت قام الخاطف بمراقبة المعاملة في تجمع الذاكرة ومحاكاة عقد الهجوم الخاص بها ، كمدخل لعقد الخطف ، واستغلها في نفس الكتلة 18377042 ، وفشلت معاملة الهاكر الأولي في الكتلة 18377042 لأنه تم فرزها خلف الخاطف.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-420dceb701-dd1a6f-69ad2a.webp)
أين تذهب الأموال
بعد ساعة واحدة من استلام الخاطف للعائدات ، يتم تحويل الأموال إلى: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-2bec7812fd-dd1a6f-69ad2a.webp)
في 20 أكتوبر الساعة 13:30:23 ، اتصل الفريق الرسمي المشتبه به بالعنوان ، مما سمح للعدائين بترك 26 ETH (ربح 10٪) كمكافأة ، والحصول على رد من المتسابقين.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-b3c8715e62-dd1a6f-69ad2a.webp)
تم تحويل الأموال النهائية إلى قبو Multisig الخاص ب GnosisSafe بعد ساعة من الاتصال.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-a7c1f91d1a-dd1a6f-69ad2a.webp)
أدناه سوف نعرض نقاط الضعف الحقيقية وتفاصيل استغلال المتسللين.
المعلومات المسبقة
يقوم بروتوكول إقراض HopeLend بتنفيذ شوكات من Aave، لذلك تتم الإشارة إلى منطق العمل الأساسي المتعلق بنقاط الضعف في الورقة البيضاء ل Aave.
الودائع والقروض 0x00
Aave هو DeFi خالص ، يتم تحقيق أعمال الإقراض من خلال مجمعات السيولة ، ويتوقع المستخدمون الحصول على الدخل من الاقتراض عندما توفر ودائع Aave السيولة.
لا يتم توزيع دخل القرض بالكامل على المستخدمين ، وسيتم تضمين جزء صغير من دخل الفوائد في احتياطي المخاطر ، وهذا الجزء هو نسبة أصغر ، وسيتم توزيع معظم دخل القرض على المستخدم الذي يوفر السيولة.
عند إجراء إقراض الودائع في Aave ، تقوم Aave بتحويل عدد الودائع في نقاط زمنية مختلفة إلى حصة من عدد الودائع في النقطة الزمنية الأولية لمجمع السيولة من خلال الخصم ، وبالتالي يمكن حساب مجموع رأس المال والفائدة المقابلة للأصول الأساسية لكل عدد من الأسهم مباشرة باستخدام مؤشر المبلغ * ، مما يسهل إلى حد كبير الحساب والفهم.
يمكن فهمها على أنها عملية مشابهة لشراء الأموال ، والقيمة الصافية الأولية للصندوق هي 1 ، ويستثمر المستخدم 100 يوان للحصول على 100 سهم ، بافتراض أنه بعد فترة من الربح ، تصبح القيمة الصافية 1.03 ، في هذا الوقت يستثمر المستخدم 100 يوان مرة أخرى ، والحصة التي تم الحصول عليها هي 97 ، والحصة الإجمالية للمستخدم هي 197.
هذا هو في الواقع خصم الأصل وفقا للمؤشر. والسبب في ذلك هو أن رأس المال الفعلي للمستخدم ومجموع الفائدة مضروبا في المؤشر الحالي بالرصيد. عندما يكون الإيداع الثاني ، يجب أن يكون رأس المال الصحيح للمستخدم ومبلغ الفائدة 100 \ * 1.03 + 100 = 203 ، إذا لم يتم خصمه ، يقوم المستخدم الثاني بإيداع 100 بعد أن يصبح رأس المال ومبلغ الفائدة ( 100 + 100) \ * 1.03 = 206 ، خاطئ ، إذا تم خصمه ، يصبح مجموع رأس المال والفائدة (100 + 100 / 1.03) * 1.03 = 103 + 100 = 203 ، 203 النتيجة صحيحة.
عملية الهجوم
0x25126...... 403907(تجمع hETHWBTC)
0x5a63e...... 844e74 (عقد الهجوم - السحب النقدي)
المعتدي:
1. إقراض أموال القروض الأولية والتعهد بها
يقترض المهاجم أولا 2300 WBTC من Aave Lightning ، ويحصص 2000 ودائع WBTC إلى HopeLend ، وسيتم تحويل الأموال إلى عقد hEthWbtc الخاص ب HopeLende (0x251 ... 907) ، وكذلك الحصول على 2000 hETHWBTC المقابلة.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-39c44b60e7-dd1a6f-69ad2a.webp)
استعارة 2000 WBTC من HopeLend للحصول على قرض فلاش.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-493bd5cd96-dd1a6f-69ad2a.webp)
القيمة الحالية هي 1 hETHWBTC = 1 WBTC.
وفقا للتشغيل العادي للوصول إلى ETHWBTC للتبادل مرة أخرى إلى WBTC ، لن يؤثر ذلك على نسبة الصرف (فقط عندما يتم كسب الفائدة سيؤثر على نسبة الصرف ، سيحصل 1 hETHWBTC على المزيد من WBTC).
في هذه المرحلة ، بدأ المتسللون في التلاعب بمعدل الخصم من خلال سلسلة من العمليات المعقدة:
• قام المتسلل بتحويل أموال WBTC لعام 2000 مباشرة إلى عقد hEthWbtc الخاص ب HopeLen (0x 251 ... 907) ، هذه الخطوة ليست لسداد القرض.
• ثم ينسحب المتسلل ، الغالبية العظمى من WBTC (1999.999 ... ) ، لذا فإن الخطوة السابقة تتطلب العودة إلى WBTC لتجديد الأصول في المجمع.
• أخيرا ، يحتفظ المتسلل فقط بأصغر وحدة (1 e-8) من hEthWbtc ، والتي لا يمكن ذكرها بالكامل هنا ، لأنه من الضروري ترك القليل ، كحساب لمؤشر السيولة ، سيعتمد على إضافة زائد موجودة ، إذا تم مسحها ، مما أدى إلى أن يصبح مؤشر السيولة 0 ، لا يمكنك جعل النسبة في المجمع غير متوازنة.
• تدمير معظم wBTC التي تم استبدالها ب hEthWbtc في الخطوة السابقة ، وإضافة wBTC المتبقية من قرض الفلاش السابق ، وإعادة قرض الفلاش المقرض إلى مجمع HopeLend ، ودفع ما مجموعه 2001.8 WBTC (بما في ذلك الفائدة 1.8 wBTC).
• العملية المذكورة أعلاه تدمر معظم hEthWbtc ، تاركة فقط وحدة واحدة أصغر (1 e-8) من hEthWbtc في حساب القراصنة ، بحيث يتم تقليل المبلغ الإجمالي ل hETHWBTC ، وهناك 2001.8 wBTC في مجمع الإقراض ، وعند هذه النقطة يصل مؤشر السيولة إلى 126,000,000. وهذا ينطوي على معرفة أن فائدة مستخدمي الودائع تأتي بشكل أساسي من نمو السيولة في المجمع ، وأن مجمع الإقراض سيعدل ديناميكيا أسعار الفائدة على الاقتراض والودائع وفقا لسعر الفائدة على الودائع ومعدل الاستخدام.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e386610ea7-dd1a6f-69ad2a.webp)
هنا ، عندما يتلقى المجمع سيولة إضافية من فائدة القرض السريع (1.8 WBTC) ، يتم تضمين سبعين بالمائة (126،000،000) في مؤشر السيولة (LiquidityIndex) ، والذي يستخدم لحساب القيمة المخفضة لكل وحدة إيداع (hEthWbt).
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-56409cd0fd-dd1a6f-69ad2a.webp)
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-96bcc3e14e-dd1a6f-69ad2a.webp)
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9a75762f1e-dd1a6f-69ad2a.webp)
نظرا لأن المجمع كان فارغا قبل الاختراق ، فإن totalLiquidity هو 1 فقط بعد السداد ، والمبلغ هو 126000000 ، ومؤشر السيولة الأولي هو 1 ، مما يؤدي إلى نتيجة 126000001.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-c54ae6461b-dd1a6f-69ad2a.webp)
3. استمر في تضخيم معدل الخصم
ذهب المتسللون إلى اقتراض 2,000 WBTCs من HopeLend للحصول على قروض فلاش وأعادوا 1.8 WBTCs إضافية في كل مرة ، مما سمح لكل مؤشر سيولة بتجميع 126,000,000.
كرر المتسللون العملية 60 مرة ، وفي النهاية وصل مؤشر السيولة إلى 7،560،000،001 ، ويمكن أن تصل القيمة المخصومة لأصغر وحدة واحدة من hEthWBTC التي يحتفظ بها المهاجم إلى 75.6 WBTC (حوالي 2.14 مليون دولار).
هذا يسمح للمتسللين بالتلاعب ب hEthWBTC ، وتشويه قيمتها.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7a6cfad314-dd1a6f-69ad2a.webp)
4. تفريغ مجمعات أخرى من القروض حيث توجد أموال لتشكيل الأرباح
ثم راهن المهاجمون على 1 أصغر وحدة من hEthWBTC وأقرضوا كمية كبيرة من الأصول من مجمعات الرموز الخمسة الأخرى في HopeLond.
أدخل:
175.4 - مع
145, 522.220985 - USDT
123 ، 406.134999 - USDC
844 ، 282.284002229528476039 - الأمل
220 ، 617.821736563540747967 - stHOPE
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8aa289f7db-dd1a6f-69ad2a.webp)
تم تبادل هذه الرموز مقابل WBTC و WETH من خلال Uniswap كعائدات ، وبعد خصم الرسوم المختلفة ، حقق المتسلل في النهاية ربحا يبلغ حوالي 263 WETH (باستثناء 263.9 WETH التي رشت الحمولة).
لماذا يمكن للقراصنة اقتراض مبالغ كبيرة من المال من مجمعات أخرى:
عند اقتراض أو سحب الودائع ، سيتحقق عقد الإقراض من حالة الأصول المضمونة للمستخدم للتأكد من أن القرض لا يتجاوز الضمان.
نظرا لأن معدل الخصم قد تم التلاعب به من قبل المتسللين ويتم حساب معدل الخصم في قيمة الضمان في مضاعف الدخل الطبيعي ، فإن قيمة الضمان لوحدة واحدة من hEthWBTC في يديه تصل إلى 75.6 WBTC.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e21db310ea-dd1a6f-69ad2a.webp)
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9c0111bcf6-dd1a6f-69ad2a.webp)
في كل مرة اقترضوا فيها أموالا من مجمعات أخرى ، اجتاز المتسلل بسهولة التحقق من أصول الضمان.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-362c84f0ae-dd1a6f-69ad2a.webp)
في هذه المرحلة ، استثمر المهاجمون ما مجموعه 2000+ 1.8 \ * 60 WBTCs في HopeLend للتلاعب بمؤشر السيولة ، ولم يتبق سوى وحدة واحدة من hEtthWBTC.
5. استغلال نقاط الضعف الحرجة (أخطاء تقسيم الأعداد الصحيحة) لصرف الأموال
لإخراج wBTC للاستثمار السابق ، نشر المهاجمون عقد هجوم آخر: 0x 5 a 63 e ... 844 e 74 واستدعاء طريقة سحب AllBtc () هناك
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-821db2a3ae-dd1a6f-69ad2a.webp)
عملية الضعف هي كما يلي:
(1) الإيداع الأول 151.20000002 wBTC ، وفقا لمؤشر السيولة الحالي (1 أصغر وحدة hEthWBTC = 75.6 wBTC) ، يحصل المهاجم على أصغر وحدتين من hEthWBTC.
(3) تحتاج 113.4 wBTC إلى تدمير 1.9999999998 أصغر وحدة من hEthWBTC ، ولكن نظرا لدقة وظيفة div ، يتم تدمير وحدة واحدة فقط من hEthWBTC ، لذلك تصبح ثغرة أمنية قابلة للاستغلال ، ولا يزال بإمكان المتسللين الاحتفاظ بأصغر وحدة واحدة من hEthWBTC.
نقاط الضعف الحرجة
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7ff70593aa-dd1a6f-69ad2a.webp)
تستدعي طريقة حرق hEthWBTC شعاع القسمة عالي الدقة.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8ab92bd200-dd1a6f-69ad2a.webp)
هنا:
أ = 11340000000 (WBTC المراد إزالته)
ب = 7560000001000000000000000009655610336 (معدل الخصم)
على الرغم من أن (a \ * 1e27 + b / 2) / b = 1.9999999998 ، فإن طريقة div المضمنة في Solidity تقتطع وترجع 1 ، وهو ما يعادل 11340000000 / 7560000001 يتم اقتطاع المنازل العشرية بعد القسمة.
0x5a63 (عقد الهجوم - السحب النقدي) يستمر في إيداع 75.60000001 WBTC بالضبط للحصول على 1 وحدة دنيا أخرى hEthWBTC ، وبالتالي الاستمرار في الاحتفاظ بوحدتين كحد أدنى hEthWBTC.
في هذه الحلقة ، يتم سحب 113.400000000 wBTC وإيداع 75.60000001 wBTC ، يمكن لكل مهاجم الحصول على 37.8 wBTC من فراغ.
بعد 58 دورة ، سحب المهاجمون جميع wBTC المستثمرة مقدما وأعادوا بسلاسة قرض فلاش Aave.
خاتمة
نظرا لعدم تهيئة مجمع إقراض hEthWBTC ، يمكن للمهاجم بسهولة التلاعب بمؤشر السيولة لزيادته إلى الحد الأقصى ، ويتم تضخيم معدل السحب بشكل كبير كمقسوم عليه ، مما يسهل إخراج الاستثمار السابق في كتلة بسبب خطأ الاقتطاع من قسمة عدد صحيح.
في مجمع الإقراض الذي يعمل بشكل جيد ، ليس من السهل زيادة معدل الخصم بشكل كبير بسبب الزيادة الصغيرة في فوائد القروض بسبب السيولة الحالية في المجمع.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
CertiK: تحليل هجمات الإقراض على منصة الإقراض اللامركزية HopeLend
في 18 أكتوبر 2023 19:48:59 بتوقيت بكين ، تعرض مجمع إقراض Hope.money للهجوم بناء على قروض فلاش.
قامت Hope.money ببناء خدمة مالية لامركزية كاملة المكدس بما في ذلك منصة إقراض HopeLend ، وتبادل HopeSwap اللامركزي ، $HOPE المستقرة ، ورمز الحوكمة $LT.
البروتوكول المتضمن في الهجوم هو HopeLend ، وهي منصة إقراض لامركزية تسمح للمستخدمين بتوفير السيولة للبروتوكول أو الإفراط في الضمان لكسب الدخل.
بداية الحدث ونهايته
في تنفيذ كود HopeLend ، كانت هناك ثغرة أمنية قابلة للاستغلال في مجمع الإقراض ، بسبب مشكلة تقسيم الأعداد الصحيحة الخاطئة عند إتلاف شهادات الإيداع ، مما أدى إلى اقتطاع الفاصلة العشرية ، وتحقيق تدمير شهادات أقل من المتوقع ، والحصول على نفس الرموز المميزة للقيمة كما هو متوقع.
استغل المهاجم هذا الخلل لإفراغ مجموعات إقراض متعددة من الأموال على Hope.money.
تم نشر مجمع الإقراض hEthWbtc قبل 73 يوما ، ولكن لم تكن هناك أموال فيه ، لذلك قام المتسللون بضخ مبالغ كبيرة من المال في مجمع الإقراض لرفع معدل الخصم بشكل كبير ، وبالتالي إفراغ جميع مجمعات الإقراض الأخرى بسرعة في معاملة جماعية.
وبشكل أكثر دراماتيكية ، لم يتلق المتسلل المستغل الأموال اللازمة للاستغلال ، وتم اكتشاف معاملة هجومه من قبل الخاطف ، الذي قلد هجومه وسرق بنجاح جميع أموال عائدات الهجوم (527 ETH) ، وفي النهاية تم استخدام 50٪ من أموال عائدات الهجوم (263 ETH) من قبل اللصوص لرشوة عمال المناجم الذين قاموا بتعبئة الكتلة (الحمولة).
قام الهاكر الأولي الذي اكتشف الثغرة الأمنية بإنشاء عقد هجوم في الكتلة 18377039 ، وأجرى مكالمة لمهاجمة العقد في الكتلة 18377042 ، وفي ذلك الوقت قام الخاطف بمراقبة المعاملة في تجمع الذاكرة ومحاكاة عقد الهجوم الخاص بها ، كمدخل لعقد الخطف ، واستغلها في نفس الكتلة 18377042 ، وفشلت معاملة الهاكر الأولي في الكتلة 18377042 لأنه تم فرزها خلف الخاطف.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-420dceb701-dd1a6f-69ad2a.webp)
أين تذهب الأموال
بعد ساعة واحدة من استلام الخاطف للعائدات ، يتم تحويل الأموال إلى: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-2bec7812fd-dd1a6f-69ad2a.webp)
في 20 أكتوبر الساعة 13:30:23 ، اتصل الفريق الرسمي المشتبه به بالعنوان ، مما سمح للعدائين بترك 26 ETH (ربح 10٪) كمكافأة ، والحصول على رد من المتسابقين.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-b3c8715e62-dd1a6f-69ad2a.webp)
تم تحويل الأموال النهائية إلى قبو Multisig الخاص ب GnosisSafe بعد ساعة من الاتصال.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-a7c1f91d1a-dd1a6f-69ad2a.webp)
أدناه سوف نعرض نقاط الضعف الحقيقية وتفاصيل استغلال المتسللين.
المعلومات المسبقة
الودائع والقروض 0x00
Aave هو DeFi خالص ، يتم تحقيق أعمال الإقراض من خلال مجمعات السيولة ، ويتوقع المستخدمون الحصول على الدخل من الاقتراض عندما توفر ودائع Aave السيولة.
لا يتم توزيع دخل القرض بالكامل على المستخدمين ، وسيتم تضمين جزء صغير من دخل الفوائد في احتياطي المخاطر ، وهذا الجزء هو نسبة أصغر ، وسيتم توزيع معظم دخل القرض على المستخدم الذي يوفر السيولة.
عند إجراء إقراض الودائع في Aave ، تقوم Aave بتحويل عدد الودائع في نقاط زمنية مختلفة إلى حصة من عدد الودائع في النقطة الزمنية الأولية لمجمع السيولة من خلال الخصم ، وبالتالي يمكن حساب مجموع رأس المال والفائدة المقابلة للأصول الأساسية لكل عدد من الأسهم مباشرة باستخدام مؤشر المبلغ * ، مما يسهل إلى حد كبير الحساب والفهم.
يمكن فهمها على أنها عملية مشابهة لشراء الأموال ، والقيمة الصافية الأولية للصندوق هي 1 ، ويستثمر المستخدم 100 يوان للحصول على 100 سهم ، بافتراض أنه بعد فترة من الربح ، تصبح القيمة الصافية 1.03 ، في هذا الوقت يستثمر المستخدم 100 يوان مرة أخرى ، والحصة التي تم الحصول عليها هي 97 ، والحصة الإجمالية للمستخدم هي 197.
هذا هو في الواقع خصم الأصل وفقا للمؤشر. والسبب في ذلك هو أن رأس المال الفعلي للمستخدم ومجموع الفائدة مضروبا في المؤشر الحالي بالرصيد. عندما يكون الإيداع الثاني ، يجب أن يكون رأس المال الصحيح للمستخدم ومبلغ الفائدة 100 \ * 1.03 + 100 = 203 ، إذا لم يتم خصمه ، يقوم المستخدم الثاني بإيداع 100 بعد أن يصبح رأس المال ومبلغ الفائدة ( 100 + 100) \ * 1.03 = 206 ، خاطئ ، إذا تم خصمه ، يصبح مجموع رأس المال والفائدة (100 + 100 / 1.03) * 1.03 = 103 + 100 = 203 ، 203 النتيجة صحيحة.
عملية الهجوم
0x25126...... 403907(تجمع hETHWBTC)
0x5a63e...... 844e74 (عقد الهجوم - السحب النقدي)
المعتدي:
1. إقراض أموال القروض الأولية والتعهد بها
يقترض المهاجم أولا 2300 WBTC من Aave Lightning ، ويحصص 2000 ودائع WBTC إلى HopeLend ، وسيتم تحويل الأموال إلى عقد hEthWbtc الخاص ب HopeLende (0x251 ... 907) ، وكذلك الحصول على 2000 hETHWBTC المقابلة.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-39c44b60e7-dd1a6f-69ad2a.webp)
2. التلاعب بمعدل الخصم الأولي (مؤشر السيولة) مع مجمعات الإقراض الفارغة
استعارة 2000 WBTC من HopeLend للحصول على قرض فلاش.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-493bd5cd96-dd1a6f-69ad2a.webp)
القيمة الحالية هي 1 hETHWBTC = 1 WBTC.
وفقا للتشغيل العادي للوصول إلى ETHWBTC للتبادل مرة أخرى إلى WBTC ، لن يؤثر ذلك على نسبة الصرف (فقط عندما يتم كسب الفائدة سيؤثر على نسبة الصرف ، سيحصل 1 hETHWBTC على المزيد من WBTC).
في هذه المرحلة ، بدأ المتسللون في التلاعب بمعدل الخصم من خلال سلسلة من العمليات المعقدة:
• قام المتسلل بتحويل أموال WBTC لعام 2000 مباشرة إلى عقد hEthWbtc الخاص ب HopeLen (0x 251 ... 907) ، هذه الخطوة ليست لسداد القرض.
• ثم ينسحب المتسلل ، الغالبية العظمى من WBTC (1999.999 ... ) ، لذا فإن الخطوة السابقة تتطلب العودة إلى WBTC لتجديد الأصول في المجمع.
• أخيرا ، يحتفظ المتسلل فقط بأصغر وحدة (1 e-8) من hEthWbtc ، والتي لا يمكن ذكرها بالكامل هنا ، لأنه من الضروري ترك القليل ، كحساب لمؤشر السيولة ، سيعتمد على إضافة زائد موجودة ، إذا تم مسحها ، مما أدى إلى أن يصبح مؤشر السيولة 0 ، لا يمكنك جعل النسبة في المجمع غير متوازنة.
• تدمير معظم wBTC التي تم استبدالها ب hEthWbtc في الخطوة السابقة ، وإضافة wBTC المتبقية من قرض الفلاش السابق ، وإعادة قرض الفلاش المقرض إلى مجمع HopeLend ، ودفع ما مجموعه 2001.8 WBTC (بما في ذلك الفائدة 1.8 wBTC).
• العملية المذكورة أعلاه تدمر معظم hEthWbtc ، تاركة فقط وحدة واحدة أصغر (1 e-8) من hEthWbtc في حساب القراصنة ، بحيث يتم تقليل المبلغ الإجمالي ل hETHWBTC ، وهناك 2001.8 wBTC في مجمع الإقراض ، وعند هذه النقطة يصل مؤشر السيولة إلى 126,000,000. وهذا ينطوي على معرفة أن فائدة مستخدمي الودائع تأتي بشكل أساسي من نمو السيولة في المجمع ، وأن مجمع الإقراض سيعدل ديناميكيا أسعار الفائدة على الاقتراض والودائع وفقا لسعر الفائدة على الودائع ومعدل الاستخدام.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e386610ea7-dd1a6f-69ad2a.webp)
هنا ، عندما يتلقى المجمع سيولة إضافية من فائدة القرض السريع (1.8 WBTC) ، يتم تضمين سبعين بالمائة (126،000،000) في مؤشر السيولة (LiquidityIndex) ، والذي يستخدم لحساب القيمة المخفضة لكل وحدة إيداع (hEthWbt).
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-56409cd0fd-dd1a6f-69ad2a.webp)
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-96bcc3e14e-dd1a6f-69ad2a.webp)
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9a75762f1e-dd1a6f-69ad2a.webp)
نظرا لأن المجمع كان فارغا قبل الاختراق ، فإن totalLiquidity هو 1 فقط بعد السداد ، والمبلغ هو 126000000 ، ومؤشر السيولة الأولي هو 1 ، مما يؤدي إلى نتيجة 126000001.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-c54ae6461b-dd1a6f-69ad2a.webp)
3. استمر في تضخيم معدل الخصم
ذهب المتسللون إلى اقتراض 2,000 WBTCs من HopeLend للحصول على قروض فلاش وأعادوا 1.8 WBTCs إضافية في كل مرة ، مما سمح لكل مؤشر سيولة بتجميع 126,000,000.
كرر المتسللون العملية 60 مرة ، وفي النهاية وصل مؤشر السيولة إلى 7،560،000،001 ، ويمكن أن تصل القيمة المخصومة لأصغر وحدة واحدة من hEthWBTC التي يحتفظ بها المهاجم إلى 75.6 WBTC (حوالي 2.14 مليون دولار).
هذا يسمح للمتسللين بالتلاعب ب hEthWBTC ، وتشويه قيمتها.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7a6cfad314-dd1a6f-69ad2a.webp)
4. تفريغ مجمعات أخرى من القروض حيث توجد أموال لتشكيل الأرباح
ثم راهن المهاجمون على 1 أصغر وحدة من hEthWBTC وأقرضوا كمية كبيرة من الأصول من مجمعات الرموز الخمسة الأخرى في HopeLond.
أدخل:
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8aa289f7db-dd1a6f-69ad2a.webp)
تم تبادل هذه الرموز مقابل WBTC و WETH من خلال Uniswap كعائدات ، وبعد خصم الرسوم المختلفة ، حقق المتسلل في النهاية ربحا يبلغ حوالي 263 WETH (باستثناء 263.9 WETH التي رشت الحمولة).
لماذا يمكن للقراصنة اقتراض مبالغ كبيرة من المال من مجمعات أخرى:
عند اقتراض أو سحب الودائع ، سيتحقق عقد الإقراض من حالة الأصول المضمونة للمستخدم للتأكد من أن القرض لا يتجاوز الضمان.
نظرا لأن معدل الخصم قد تم التلاعب به من قبل المتسللين ويتم حساب معدل الخصم في قيمة الضمان في مضاعف الدخل الطبيعي ، فإن قيمة الضمان لوحدة واحدة من hEthWBTC في يديه تصل إلى 75.6 WBTC.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e21db310ea-dd1a6f-69ad2a.webp)
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9c0111bcf6-dd1a6f-69ad2a.webp)
في كل مرة اقترضوا فيها أموالا من مجمعات أخرى ، اجتاز المتسلل بسهولة التحقق من أصول الضمان.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-362c84f0ae-dd1a6f-69ad2a.webp)
في هذه المرحلة ، استثمر المهاجمون ما مجموعه 2000+ 1.8 \ * 60 WBTCs في HopeLend للتلاعب بمؤشر السيولة ، ولم يتبق سوى وحدة واحدة من hEtthWBTC.
5. استغلال نقاط الضعف الحرجة (أخطاء تقسيم الأعداد الصحيحة) لصرف الأموال
لإخراج wBTC للاستثمار السابق ، نشر المهاجمون عقد هجوم آخر: 0x 5 a 63 e ... 844 e 74 واستدعاء طريقة سحب AllBtc () هناك
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-821db2a3ae-dd1a6f-69ad2a.webp)
عملية الضعف هي كما يلي:
(1) الإيداع الأول 151.20000002 wBTC ، وفقا لمؤشر السيولة الحالي (1 أصغر وحدة hEthWBTC = 75.6 wBTC) ، يحصل المهاجم على أصغر وحدتين من hEthWBTC.
(2) أخرج (سحب) 113.4 wBTC ، واحسب عكسيا حصة hEthWBTC المقابلة له ، واحرق hEthWBTC.
(3) تحتاج 113.4 wBTC إلى تدمير 1.9999999998 أصغر وحدة من hEthWBTC ، ولكن نظرا لدقة وظيفة div ، يتم تدمير وحدة واحدة فقط من hEthWBTC ، لذلك تصبح ثغرة أمنية قابلة للاستغلال ، ولا يزال بإمكان المتسللين الاحتفاظ بأصغر وحدة واحدة من hEthWBTC.
نقاط الضعف الحرجة
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7ff70593aa-dd1a6f-69ad2a.webp)
تستدعي طريقة حرق hEthWBTC شعاع القسمة عالي الدقة.
! [CertiK: تحليل هجوم الإقراض على منصة الإقراض اللامركزية HopeLend] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8ab92bd200-dd1a6f-69ad2a.webp)
هنا:
أ = 11340000000 (WBTC المراد إزالته)
ب = 7560000001000000000000000009655610336 (معدل الخصم)
على الرغم من أن (a \ * 1e27 + b / 2) / b = 1.9999999998 ، فإن طريقة div المضمنة في Solidity تقتطع وترجع 1 ، وهو ما يعادل 11340000000 / 7560000001 يتم اقتطاع المنازل العشرية بعد القسمة.
0x5a63 (عقد الهجوم - السحب النقدي) يستمر في إيداع 75.60000001 WBTC بالضبط للحصول على 1 وحدة دنيا أخرى hEthWBTC ، وبالتالي الاستمرار في الاحتفاظ بوحدتين كحد أدنى hEthWBTC.
في هذه الحلقة ، يتم سحب 113.400000000 wBTC وإيداع 75.60000001 wBTC ، يمكن لكل مهاجم الحصول على 37.8 wBTC من فراغ.
بعد 58 دورة ، سحب المهاجمون جميع wBTC المستثمرة مقدما وأعادوا بسلاسة قرض فلاش Aave.
خاتمة
نظرا لعدم تهيئة مجمع إقراض hEthWBTC ، يمكن للمهاجم بسهولة التلاعب بمؤشر السيولة لزيادته إلى الحد الأقصى ، ويتم تضخيم معدل السحب بشكل كبير كمقسوم عليه ، مما يسهل إخراج الاستثمار السابق في كتلة بسبب خطأ الاقتطاع من قسمة عدد صحيح.
في مجمع الإقراض الذي يعمل بشكل جيد ، ليس من السهل زيادة معدل الخصم بشكل كبير بسبب الزيادة الصغيرة في فوائد القروض بسبب السيولة الحالية في المجمع.