
إصلاح لخلل batchOverflow https://medium.com/@peckshield/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536
إصلاح لـ ثغرة batchOverflow التي اكتشفها فريق PeckShield.
العقد الأصلي كان يتحقق فقط من أن المرسل يملك ما يكفي من whatever لدفع المبلغ الإجمالي (قيمة الإدخال x عدد العناوين). إذا حدث تجاوز، فقد يصبح هذا المبلغ صفرًا، مما يسمح باجتياز الاختبار في line 12.

أحد الإصلاحات الممكنة هو إضافة اختبار آخر للتحقق مما إذا كان رصيد المرسل ناقص المبلغ أقل من رصيده الحالي. إذا حدث تجاوز، فستكون الأرصدة متساوية، مما يجعل العملية غير صالحة. لكن هذا لن يحل المشكلة بعد. إذا كان لدى المهاجم رصيد صغير، مثل 10 whatever، فيمكن للمهاجم صياغة _value بحيث يتجاوز إلى مبلغ أصغر من الرصيد الحالي الذي يحمله، وبالتالي اجتياز هذه البوابة.
الإصلاح الأفضل هو ببساطة التحقق مما إذا كان المبلغ الإجمالي المحوَّل أكبر من أو يساوي _value. إذا حدث تجاوز، فلن يجتاز هذا الاختبار. ولكي يتجاوز المهاجم هذه البوابة، سيحتاج إلى حد أدنى من ذلك الرقم السحري / 20، وهو مبلغ كبير جدًا ويستحيل على الأرجح الحصول عليه دون استغلال ثغرة أخرى.
تأكد من تثبيت truffle وقم بتشغيل الأمر truffle test من جذر مشروعك. يجب أن يبدو الأمر شيئًا كهذا.
