وفقًا لرصد Beosin EagleEye للمخاطر الأمنية والإنذار المبكر ومراقبة منصة الحظر لشركة Beosin لتدقيق أمن blockchain ** ، تمت مهاجمة عقد LibertiVault على سلسلة Polygon وخسارة حوالي 123ETH و 56234USDT بقيمة حوالي 290،000 دولار أمريكي ، وتبلغ قيمة سلسلة Ethereum 35ETH و 96223USDT حوالي 160.000 دولار أمريكي ، بإجمالي أكثر من 450.000 دولار أمريكي. ** قام الموظفون الفنيون بالتحليل ووجدوا أن هذا الهجوم نتج عن ثغرة أمنية في إعادة الدخول في عقد LibertiVault.
اقترض المهاجم 5 ملايين دولار أمريكي باستخدام القرض السريع ، واستدعى وظيفة الإيداع لعقد LibertiVault للتعهد. سيستخدم منطق الرهن جزءًا من الرموز المرهونة للتبادل ، ثم يحسب مبلغ العملات المعدنية المسكوكة. مبلغ تستند العملات المسكوكة على العقد والإيداع. يعتمد الحساب على نسبة مبلغ التوكنات المودعة إلى الرصيد قبل إيداع العقد.
سوف تستدعي عملية التبادل عقد المخترق ، وفي هذا الوقت ، يعيد المخترق إدخال إيداع المكالمة للمرة الأولى ، ويعيد إدخال هذه الوظيفة للمرة الثانية ، حيث يقوم بإيداع 2.5 مليون دولار أمريكي في العقد.
بعد إعادة الدخول الثانية ، سيُسكر العقد عملات معدنية للمتسلل وفقًا لنسبة 2.5 مليون دولار أمريكي إلى رصيد USDT للعقد السابق. بعد اكتمال وظيفة الإيداع الخاصة بالعودة الأولى ، يقوم المتسلل بإيداع 2.5 مليون دولار أمريكي أخرى بداخله.
في هذه المرحلة ، اكتملت عملية التبادل في وظيفة الإيداع الخارجي ، وسيقوم العقد بسك العملات المعدنية وفقًا لنسبة 2.5 مليون دولار أمريكي إلى رصيد USDT للعقد.
تكمن المشكلة في النقطة الرابعة ، فمن الناحية المنطقية ، يجب أن يكون الحساب الثاني لرصيد العقد هو الرصيد السابق مضافًا إليه رصيد 2.5 مليون تم إدخاله لأول مرة كمعامل لهذا الحساب ، ولكن هنا في شكل إعادة الدخول ، تم الحصول على رصيد العقد في البداية ، لذلك لم تتغير المعلمات ، ولا يزال الرصيد الأصلي مستخدمًا للحساب ، مما أدى إلى سك عدد كبير من رموز القسائم للمتسللين.
أخيرًا ، قام المتسلل بإزالة الرموز المميزة وأعاد القرض السريع من أجل الربح.