Найти в Дзене
Ветераны Крипты

Глупые ошибки в умных контрактах

На этой неделе мы снова убедились в ограничениях смарт-контрактов. И снова проблема заключается не в самих контрактах, а в человеческих ошибках.

С тех пор, как Ethereum был запущен, в его смарт-контрактах была обнаружена длинная серия критических ошибок, которые привели к утере или краже сотен миллионов долларов. Стоит отметить, что это не совсем проблемы кода: смарт-контракты действовали ровно так, как были запрограммированы. Просто разработчики невольно ввели лазейки, которые можно было использовать.

Некоторые из них сводятся к ошибке разработчика. Код для мульти-кошельков Parity был профессионально проверен, но никто не заметил ошибку, которая привела бы к тому, что атакующий «суицидировал» контракт, чтобы сделать 150 миллионов долларов недоступными. Некоторые из ошибок относятся к используемому языку программирования, который позволяет охватить серые области, которые можно использовать. После взлома DAO один аналитик написал:

«На самом деле это не было недостатком или эксплойтом в самом контракте DAO: технически EVM функционировал так, как предполагалось, но Solidity вводила недостатки безопасности в контракты, которые не только упустило сообщество, но и пропустили сами разработчики языка. Я бы поставил по меньшей мере 50% вины за этот эксплойт прямо у ног дизайна языка Solidity … контракт, даже если он был закодирован с использованием передовой практики и точно соответствует языковой документации, оставался бы уязвимым для атаки »( См. Https://pdaian.com/blog/chasing-the-dao-attackers-wake/)

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

Принцип Ethereum означает, что очень сложно решать эти проблемы после выпуска токенов в свободное плавание. Ethereum — это интригующий проект и отличная песочница для разработчиков, чтобы создавать классные вещи. Но! Реальность такова, что в итоге эти продукты не готовы к реальному миру. Для практического пользования нам понадобится новая реализация смарт- контрактов: одна из них более предсказуема и, возможно, менее мощная.

Узнайте больше о batchOverflow на странице https://medium.com/@peckshield/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536

______________________________

Подписывайтесь на канал Ветераны Крипты в Telegram.