
Un correctif pour le bug batchOverflow https://medium.com/@peckshield/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536
Un correctif pour le bug batchOverflow découvert par l'équipe PeckShield.
Le contrat d'origine ne vérifiait que si l'expéditeur avait assez de whatever pour payer le montant total (valeur d'entrée x nombre d'adresses). Si un dépassement d'entier se produisait, ce montant pouvait être nul, ce qui permettait au test sur line 12 de réussir.

Un correctif possible consiste à ajouter un autre test pour vérifier si le solde de l'expéditeur moins le montant est inférieur à son solde actuel. Si un dépassement se produisait, les soldes seraient identiques, ce qui ferait de la transaction une transaction invalide. Cela ne résout toutefois pas le problème. Si l'attaquant dispose d'un petit solde, disons 10 whatever, il pourrait concevoir _value pour qu'il y ait un dépassement vers un montant inférieur au solde actuel qu'il détient, et ainsi franchir cette barrière.
Une meilleure solution consiste simplement à vérifier si le montant total transféré est supérieur ou égal à _value. Si un dépassement se produisait, ce test ne réussirait pas. Pour qu'un attaquant franchisse cette barrière, il lui faudrait au minimum ce nombre magique / 20, ce qui reste un montant très élevé et probablement impossible à obtenir sans exploiter un autre bug.
Assurez-vous d'avoir truffle installé et exécutez la commande truffle test depuis la racine de votre projet. Le résultat devrait ressembler à ceci.
