В воскресенье, 22 апреля 2018 года, операторы гонконгской криптобиржи OKex стали свидетелями необычной (слишком высокой) активности, связанной с активом BeautyChain. По просьбе команды этого сервиса OKex заблокировала вывод токенов и приостановила торги этим активом. Как оказалось позже, опасения были не напрасны: используя уязвимость смарт-контрактов BeautyChain, хакеры взломали торговую площадку и увели очень много токенов BEC. Чтобы написать это число, к восьмерке нужно добавить 63 нуля.
Участники Coinmonks – криптосообщества на medium — проанализировали смарт-контракт BeautyChain и рассказали, в чем проблема этого алгоритма. Баг, посредством которого злоумышленники хакнули смарт-контракт BeautyChain называется batchOverflow. Наличием такой ошибки может похвастаться еще дюжина смарт-контрактов, используемых в работе ERC20-сервисов.
batchOverflow является частью функции batchTransfer, где и вычисляется локальная переменная суммы транзакции. Из-за ошибки один из параметров может быть записан как число с 63 нулями.
Coinmonks пытались связаться с представителями сервисов, смарт-контракты которых имеют ту же уязвимость, но из-за используемого в Ethereum принципа «код есть закон» платформа не предусматривает четкого механизма решения таких проблем.
Coinmonks предупреждают о том, что ситуация может повториться на других криптобиржах, торгующих активами с аналогичным багом. Еще одна сложность может возникнуть с нецентрализованными обменниками, поскольку они, в отличие от OKex, даже не смогут остановить такую атаку.
* * *