
Una correzione per il bug batchOverflow https://medium.com/@peckshield/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536
Una correzione per il bug batchOverflow trovato dal team di PeckShield.
Il contratto originale eseguiva solo un controllo per assicurarsi che il mittente avesse abbastanza whatever per pagare l'importo totale (valore di input x numero di indirizzi). Se si verificava un overflow, questo importo poteva essere zero, il che avrebbe permesso al test su line 12 di essere superato.

Una possibile correzione è aggiungere un altro test per verificare se il saldo del mittente meno l'importo è inferiore al suo saldo attuale. Se si verificava un overflow, i saldi sarebbero stati uguali, rendendo la transazione non valida. Questo però non risolverebbe comunque il problema. Se l'attaccante ha un saldo piccolo, diciamo 10 whatever, potrebbe manipolare _value per farlo overfloware a un importo inferiore al saldo attualmente in suo possesso e quindi superare questo controllo.
Una soluzione migliore sarebbe semplicemente verificare che l'importo totale trasferito sia maggiore o uguale a _value. Se si verificasse un overflow, questo test non verrebbe superato. Per superare questo controllo, un attaccante avrebbe bisogno di almeno quel numero magico / 20, che è comunque una quantità molto grande e probabilmente impossibile da ottenere senza sfruttare un altro bug.
Assicurati di avere truffle installato ed esegui il comando truffle test dalla radice del tuo progetto. Dovrebbe apparire più o meno così.
