
Una corrección para el error batchOverflow https://medium.com/@peckshield/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536
Una corrección para el batchOverflow bug encontrado por el equipo de PeckShield.
El contrato original solo realizaba una verificación para asegurarse de que el remitente tuviera suficiente whatever para pagar la cantidad total (valor de entrada x número de direcciones). Si ocurría un desbordamiento, esta cantidad podría ser cero, lo que permitiría que la prueba en la línea 12 pasara.

Una posible corrección es agregar otra prueba para verificar si el saldo del remitente menos la cantidad es menor que su saldo actual. Si ocurría un desbordamiento, los saldos serían iguales, lo que haría que la transacción fuera inválida. Sin embargo, esto aún no solucionaría el problema. Si el atacante tiene un saldo pequeño, digamos 10 whatever, podría manipular _value para que se desborde a una cantidad menor que el saldo actual que posee y así pasar este control.
Una mejor corrección sería simplemente verificar si la cantidad total transferida es mayor o igual que _value. Si ocurría un desbordamiento, esta prueba no pasaría. Para que un atacante supere este control, necesitaría un mínimo de ese número mágico / 20, que sigue siendo una cantidad muy grande y probablemente imposible de obtener sin explotar otro bug.
Asegúrate de tener truffle instalado y ejecuta el comando truffle test desde la raíz de tu proyecto. Debería verse algo así.
