Биржи приостановили торговлю токенами ERC-20 из-за обнаруженной уязвимости в контрактах

Было обнаружено, что более десятка смарт-контрактов стандарта ERC-20 на базе Эфириума содержат ошибки, которые позволяют злоумышленникам создавать столько токенов, сколько они хотят.

Хотя ошибки, впервые выявленные 22 апреля и 24 апреля, были опубликованы компанией PeckShield, специализирующейся на безопасности блокчейна, напрямую не связаны со стандартом ERC-20, проблемы привели к приостановке торговли токенами ERC-20 на биржах OKEx, Poloniex, Changelly, Quoine и HitBTC. Huobi.Pro также объявила
25 апреля о приостановке торговли всеми монетами, однако впоследствии ограничение было изменено и касалось только токенов ERC-20. В данный момент Poloniex постепенно начала возобновлять операции.

В одном из примеров злоумышленник, воспользовавшийся ошибкой, перевел колоссальные 57.9 * 10 ^ 57 токенов BeautyChain – как показывают данные транзакций на Etherscan
– 22 апреля. Именно эта транзакция стала причиной начала поиска ошибки.

«Наше исследование показывает, что такая транзакция произошла от атаки «в естественных условиях», которая использует ранее неизвестную уязвимость в контракте. Для целей разработки мы называем эту особую уязвимость batchOverflow», – отмечает компания PeckShield. «Хотим заметить, что batchOverflow по сути представляет собой классическую проблему с переполнением в целочисленной арифметике».

Бесчисленные токены

В записи о batchOverflow рассказывается, что функция batchTransfer в контракте обозначает максимальное количество токенов, которые могут быть отправлены в транзакции, а также отмечается, что значение передаваемых токенов должно быть меньше общего количества токенов, которые были сгенерированы. Тем не менее, параметром «_value» – одним из двух, определяющих общее количество токенов – можно манипулировать, что позволяет изменить другую переменную, в результате чего злоумышленники могут создавать столько токенов, сколько захотят.

Кроме того, злоумышленник может обойти барьерные условия в контракте, которые обычно гарантируют передачу разумного количества токенов.

«С нулевым количеством, злоумышленник может пройти проверки работоспособности в строках 258-259 и сделать вычитание в строке 261 неактуальным», – говорится в записи. «И вот самое интересное: как показано в строках 262-265, баланс двух получателей будет добавлен при помощи чрезвычайно большого значения _value, и злоумышленнику это не будет стоит ни монеты!»

Хотя в первых сообщениях отмечалось, что все токены ERC-20 могут быть затронуты, функция «batchTransfer» не является частью стандарта токена. В статье на Medium не перечисляется список уязвимых проектов, хотя отмечается, что BeautyChain был первым обнаруженным проектом с этой уязвимостью. Чтобы подчеркнуть серьезность проблемы OKEx заявила
24 апреля, что приостанавливает торговлю токенами BeautyChain.

В то же время биржа объявила, что в свете ошибок было приостановлено внесение и снятие средств для проекта SmartMesh из-за «аномальных торговых операций». В PeckShield отмечают, что это, возможно, связано с ошибкой proxyOverflow, которая, как и batchOverflow, является классической проблемой с переполнением в целочисленной арифметике. Некоторыми переменными можно манипулировать, чтобы генерировать большое количество токенов. Один из пользователей Твиттера заметил, что злоумышленник создал $5 октодециллионов в токенах SmartMesh.

Как отмечалось в статье об ошибке, существует опасность того, что кто-то может использовать уязвимые криптовалюты для управления ценами в свою пользу путем торговли с биткоином, эфиром или другой торговой парой. В заявлении на сайте BeautyChain наличие ошибки подтверждается и отмечается, что торговля возобновится в будущем. Аналогичным образом, SmartMesh объявила, что она предпримет шаги для предотвращения манипулирования ценами.

Фабиан Фогельштеллер (Fabian Vogelsteller), разработчик, который впервые предложил стандарт ERC-20, заметил, что ошибки «просто показывают, что нам нужны лучшие передовые методы и инструменты для их обнаружения».