
Uma correção para o bug batchOverflow https://medium.com/@peckshield/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536
Uma correção para o bug batchOverflow encontrado pela equipe PeckShield.
O contrato original apenas fazia uma verificação para garantir que o remetente tinha whatever suficiente para pagar o valor total (valor de entrada x número de endereços). Se ocorresse um overflow, esse valor poderia ser zero, o que permitiria que o teste na linha 12 passasse.

Uma correção possível é adicionar outro teste para verificar se o saldo do remetente menos o valor é menor que o saldo atual. Se ocorresse um overflow, os saldos seriam iguais, tornando a transação inválida. No entanto, isso ainda não corrige o problema. Se o atacante tiver um saldo pequeno, digamos 10 whatever, ele poderia manipular _value para transbordar para um valor menor que o saldo atual que possui e, assim, passar por essa barreira.
Uma correção melhor seria simplesmente verificar se o valor total transferido é maior ou igual a _value. Se ocorresse um overflow, esse teste não passaria. Para o atacante passar por essa barreira, ele precisaria de um mínimo daquele número mágico / 20, o que ainda é uma quantidade muito grande e provavelmente impossível de obter sem explorar outro bug.
Garanta que você tenha o truffle instalado e execute o comando truffle test a partir da raiz do seu projeto. Deve parecer algo assim.
