تعرض Poolz لهجوم ثغرة تدفق حسابي، وخسائر تقدر بحوالي 66.5 ألف دولار أمريكي
مؤخراً، تعرض مشروع Poolz على شبكة الإيثيريوم و Binance Smart Chain و Polygon لهجوم، مما أدى إلى سرقة عدة رموز بقيمة إجمالية تبلغ حوالي 665,000 دولار أمريكي. وقع الهجوم في حوالي الساعة 3:16 صباحًا بتوقيت UTC في 15 مارس 2023.
وفقًا للبيانات على السلسلة، تتضمن هذه الهجمة عدة رموز، بما في ذلك MEE و ESNC و DON و ASW و KMON و POOLZ. وقد قام المهاجمون بتحويل بعض الرموز المسروقة إلى BNB، ولكن لم يتم تحويل هذه الأموال بعد.
الهجوم استغل بشكل رئيسي ثغرة تجاوز عددي في عقد Poolz. على وجه التحديد، تكمن المشكلة في دالة getArraySum داخل دالة CreateMassPools. حيث أن هذه الدالة، عند حساب السيولة الأولية لإنشاء مجموعة من البرك من قبل المستخدمين، لم تعالج القيم الكبيرة بشكل صحيح مما أدى إلى حدوث تجاوز عددي.
المهاجم يقوم من خلال معلمات إدخال مصممة بعناية، بجعل دالة getArraySum تعيد قيمة 1، بينما تكون القيمة المسجلة _StartAmount عددًا كبيرًا جدًا. وبالتالي، يحتاج المهاجم فقط إلى تحويل رمز واحد، ليتمكن من تسجيل الكثير من السيولة الأولية في النظام. بعد ذلك، يقوم المهاجم من خلال استدعاء دالة withdraw بسحب هذه السيولة "الوهمية"، وبالتالي إتمام الهجوم.
لتجنب حدوث مثل هذه المشكلات مرة أخرى، يوصي الخبراء بأن يستخدم المطورون إصدارات أحدث من مترجم Solidity، حيث تقوم الإصدارات الجديدة بإجراء فحوصات تلقائية للتجاوز. بالنسبة للمشاريع التي تستخدم إصدارات منخفضة من Solidity، يمكن النظر في استخدام مكتبة SafeMath من OpenZeppelin للتعامل مع العمليات العددية، لتجنب مخاطر التجاوز.
تذكرنا هذه الحادثة مرة أخرى بأن التعامل مع أمان العمليات الحسابية أمر بالغ الأهمية في تطوير العقود الذكية. يجب على المطورين أن يكونوا يقظين دائمًا بشأن مشكلات تجاوز السعة العددية المحتملة وأن يتخذوا التدابير المناسبة لحماية أمان العقد.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 12
أعجبني
12
7
مشاركة
تعليق
0/400
CryptoPunster
· 07-09 19:50
يا إلهي، لقد حدث شيء آخر في العقد، لقد خدع الناس لتحقيق الربح حتى في السراويل.
تعرض Poolz لهجوم تجاوز العددي بخسارة بلغت 665000 دولار أمريكي
تعرض Poolz لهجوم ثغرة تدفق حسابي، وخسائر تقدر بحوالي 66.5 ألف دولار أمريكي
مؤخراً، تعرض مشروع Poolz على شبكة الإيثيريوم و Binance Smart Chain و Polygon لهجوم، مما أدى إلى سرقة عدة رموز بقيمة إجمالية تبلغ حوالي 665,000 دولار أمريكي. وقع الهجوم في حوالي الساعة 3:16 صباحًا بتوقيت UTC في 15 مارس 2023.
وفقًا للبيانات على السلسلة، تتضمن هذه الهجمة عدة رموز، بما في ذلك MEE و ESNC و DON و ASW و KMON و POOLZ. وقد قام المهاجمون بتحويل بعض الرموز المسروقة إلى BNB، ولكن لم يتم تحويل هذه الأموال بعد.
الهجوم استغل بشكل رئيسي ثغرة تجاوز عددي في عقد Poolz. على وجه التحديد، تكمن المشكلة في دالة getArraySum داخل دالة CreateMassPools. حيث أن هذه الدالة، عند حساب السيولة الأولية لإنشاء مجموعة من البرك من قبل المستخدمين، لم تعالج القيم الكبيرة بشكل صحيح مما أدى إلى حدوث تجاوز عددي.
المهاجم يقوم من خلال معلمات إدخال مصممة بعناية، بجعل دالة getArraySum تعيد قيمة 1، بينما تكون القيمة المسجلة _StartAmount عددًا كبيرًا جدًا. وبالتالي، يحتاج المهاجم فقط إلى تحويل رمز واحد، ليتمكن من تسجيل الكثير من السيولة الأولية في النظام. بعد ذلك، يقوم المهاجم من خلال استدعاء دالة withdraw بسحب هذه السيولة "الوهمية"، وبالتالي إتمام الهجوم.
لتجنب حدوث مثل هذه المشكلات مرة أخرى، يوصي الخبراء بأن يستخدم المطورون إصدارات أحدث من مترجم Solidity، حيث تقوم الإصدارات الجديدة بإجراء فحوصات تلقائية للتجاوز. بالنسبة للمشاريع التي تستخدم إصدارات منخفضة من Solidity، يمكن النظر في استخدام مكتبة SafeMath من OpenZeppelin للتعامل مع العمليات العددية، لتجنب مخاطر التجاوز.
تذكرنا هذه الحادثة مرة أخرى بأن التعامل مع أمان العمليات الحسابية أمر بالغ الأهمية في تطوير العقود الذكية. يجب على المطورين أن يكونوا يقظين دائمًا بشأن مشكلات تجاوز السعة العددية المحتملة وأن يتخذوا التدابير المناسبة لحماية أمان العقد.