Новый баг batchOverflow в нескольких смарт-контрактах ERC20

Spread the love

Новая batchOverflow в нескольких смарт-контрактах ERC20.

22/22/2018, 03:28:52 система для сканирования и анализа переносов токенов на основе Ethereum (ERC-20), разработанная компанией PeckShield, подняла тревогу, связанную с необычной транзакцией токенов BEC.

баг batchOverflow

В этой конкретной сделке кто-то перечислил очень большое количество токена BEC — 0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000 (63 0 — Фактически осуществлялось две такие большие передачи токенов, причем каждая передача включает в себя столько же токенов из одного и того же контракта BeautyChain, но на два разных адреса).

Эта аномалия побудила заглянуть в соответствующий код смарт-контракта. Исследование показывает, что такая передача происходит от атаки «in-the-wild», которая использует ранее неизвестную уязвимость в контракте. Мы называем эту особую уязвимость batchOverflow. Такжеотмечаем, что batchOverflow по существу представляет собой проблему с переполнением целочисленного типа. Ниже мы рассмотрим более подробно уязвимость batchOverflow.

баг batchOverflow

Уязвимая функция находится в batchTransfer, и код показан на рисунке. Как указано в строке 257, локальная переменная суммы вычисляется как произведение cnt и _value. Второй параметр, т. е. _value, может быть произвольным 256-битным целым числом, например 0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000 (63 0 ‘). Имея два _receivers, переданных в batchTransfer (), с этим чрезвычайно большим значением, мы можем переполнить сумму и сделать ее равной нулю. При обнулении суммы злоумышленник может затем пройти проверки на работоспособность в строках 258-259 и сделать вычитание в строке 261 неактуальным.

При этом система для сканирования и анализа была использована и в других контрактов. Результаты показывают, что более десятка контрактов ERC20 также уязвимы для batchOverflow. Чтобы это продемонстрировать, был успешно выполнен один уязвимый контракт (который не торгуется ни при каких обменах), как эксплойт доказательной концепции.

баг batchOverflow

BatchOverflow в рамках нецентрализованных бирж с автономными торговыми операциями может вызвать дополнительные проблемы, поскольку они даже не могут остановить атакующих, отмывающих своих токены.

С другой стороны, очень вероятно, что злоумышленник обладает огромным количеством токенов, используя эти уязвимые контракты. Что если она перейдет на обмен криптовалюты и начнет торговать этими токенами для ETH, BTC или даже USD? При очень большом количестве токенов во владении (вероятно, больше, чем общее их количество в обращении), атака может легко манипулировать ценой связанных криптовалют.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *