
Исправление ошибки 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 из корня вашего проекта. Результат должен выглядеть примерно так.
