تعرض Poolz لهجوم تجاوز العددي، وخسارة تقارب 66.5 ألف دولار أمريكي
مؤخراً، تعرضت منصة Poolz لهجوم على شبكة الإيثيريوم و شبكة باينانس الذكية و شبكة بوليجون، مما أدى إلى سرقة كميات كبيرة من الرموز، بقيمة إجمالية تقدر بحوالي 66.5 ألف دولار أمريكي. وقع الهجوم في 15 مارس 2023 في الساعة 3:16 صباحاً (بتوقيت UTC).
وفقًا لمراقبة البيانات على السلسلة، تتضمن هذه الهجمة مجموعة متنوعة من الرموز، بما في ذلك MEE وESNC وDON وASW وKMON وPOOLZ. لقد قام المهاجمون بتبادل بعض الرموز المسروقة مقابل BNB، ولكن لم يتم نقل الأموال حتى الآن.
استغل المهاجمون ثغرة تجاوز سعة حسابية في عقد Poolz. على وجه التحديد، تكمن المشكلة في دالة getArraySum داخل دالة CreateMassPools. حيث يحدث تجاوز في النتيجة عند حساب عدد الرموز، نتيجة لتجاوز القيمة المضافة الحد الأقصى لنوع uint256، مما يؤدي إلى أن تصبح القيمة المرجعة 1.
تتبع عملية الهجوم كما يلي:
قام المهاجم أولاً بتبادل بعض رموز MNZ من خلال DEX معين.
بعد ذلك، يتم استدعاء دالة CreateMassPools، باستخدام ثغرة دالة getArraySum. يحتوي مصفوفة _StartAmount التي تم تمريرها من قبل المهاجم على قيم ضخمة، مما يؤدي إلى تجاوز في الجمع.
نظرًا لأن دالة CreatePool تستخدم _StartAmount لتسجيل خصائص المسبح، فإن المهاجم يقوم فعليًا بإدخال رمز واحد فقط، ولكن النظام يسجل قيمة ضخمة.
أخيرًا، يقوم المهاجم باستدعاء دالة السحب لسحب الرموز، وإكمال الهجوم.
لتجنب حدوث مثل هذه المشكلات مرة أخرى، يُنصح المطورون باستخدام إصدار أحدث من Solidity للتجميع، حيث يقوم الإصدار الجديد بإجراء فحوصات التدفق بشكل تلقائي. بالنسبة للمشاريع التي تستخدم إصدارًا قديمًا من Solidity، يمكن النظر في استخدام مكتبة SafeMath من OpenZeppelin لحل مشكلة تدفق الأعداد الصحيحة.
تذكّرنا هذه الحادثة مرة أخرى بأنه يجب أن نكون حذرين للغاية عند تطوير العقود الذكية، خاصة عند التعامل مع العمليات الرياضية المتعلقة بالأعداد الكبيرة. في الوقت نفسه، فإن إجراء تدقيق دوري للكود وفحوصات الأمان يعد من التدابير المهمة لضمان أمان المشروع.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تعرضت Poolz لهجوم يتمثل في تجاوز الحسابات مما أدى إلى خسارة قدرها 665000 دولار أمريكي
تعرض Poolz لهجوم تجاوز العددي، وخسارة تقارب 66.5 ألف دولار أمريكي
مؤخراً، تعرضت منصة Poolz لهجوم على شبكة الإيثيريوم و شبكة باينانس الذكية و شبكة بوليجون، مما أدى إلى سرقة كميات كبيرة من الرموز، بقيمة إجمالية تقدر بحوالي 66.5 ألف دولار أمريكي. وقع الهجوم في 15 مارس 2023 في الساعة 3:16 صباحاً (بتوقيت UTC).
وفقًا لمراقبة البيانات على السلسلة، تتضمن هذه الهجمة مجموعة متنوعة من الرموز، بما في ذلك MEE وESNC وDON وASW وKMON وPOOLZ. لقد قام المهاجمون بتبادل بعض الرموز المسروقة مقابل BNB، ولكن لم يتم نقل الأموال حتى الآن.
استغل المهاجمون ثغرة تجاوز سعة حسابية في عقد Poolz. على وجه التحديد، تكمن المشكلة في دالة getArraySum داخل دالة CreateMassPools. حيث يحدث تجاوز في النتيجة عند حساب عدد الرموز، نتيجة لتجاوز القيمة المضافة الحد الأقصى لنوع uint256، مما يؤدي إلى أن تصبح القيمة المرجعة 1.
تتبع عملية الهجوم كما يلي:
قام المهاجم أولاً بتبادل بعض رموز MNZ من خلال DEX معين.
بعد ذلك، يتم استدعاء دالة CreateMassPools، باستخدام ثغرة دالة getArraySum. يحتوي مصفوفة _StartAmount التي تم تمريرها من قبل المهاجم على قيم ضخمة، مما يؤدي إلى تجاوز في الجمع.
نظرًا لأن دالة CreatePool تستخدم _StartAmount لتسجيل خصائص المسبح، فإن المهاجم يقوم فعليًا بإدخال رمز واحد فقط، ولكن النظام يسجل قيمة ضخمة.
أخيرًا، يقوم المهاجم باستدعاء دالة السحب لسحب الرموز، وإكمال الهجوم.
لتجنب حدوث مثل هذه المشكلات مرة أخرى، يُنصح المطورون باستخدام إصدار أحدث من Solidity للتجميع، حيث يقوم الإصدار الجديد بإجراء فحوصات التدفق بشكل تلقائي. بالنسبة للمشاريع التي تستخدم إصدارًا قديمًا من Solidity، يمكن النظر في استخدام مكتبة SafeMath من OpenZeppelin لحل مشكلة تدفق الأعداد الصحيحة.
تذكّرنا هذه الحادثة مرة أخرى بأنه يجب أن نكون حذرين للغاية عند تطوير العقود الذكية، خاصة عند التعامل مع العمليات الرياضية المتعلقة بالأعداد الكبيرة. في الوقت نفسه، فإن إجراء تدقيق دوري للكود وفحوصات الأمان يعد من التدابير المهمة لضمان أمان المشروع.