В ноябре прошлого года проблема в коде ethereum-кошелька Parity привела к тому, что более $100 млн. в принадлежащем различным пользователям в эфире оказались «замороженными», когда разработчик под ником «devopps199» обнаружил уязвимость в смарт-конракте, на котором работал второй по популярности эфириум-клиент, и по случайности ее активировал.
Сам он тогда тогда признавался, что он новичок в смарт-контрактах, приводя аналогию с банковским хранилищем, на двери которого есть кнопка «запереть навсегда», и именно он стал тем, кто «случайно ее нажал».
Сегодня в блокчейне эфириума существуют тысячи аналогичных смарт-контрактов, на которых работают кошельки, хранятся токены или запускаются децентрализованные приложения. Группа независимых исследователей из Сингапура и Великобритании заявляет, что придумала новый подход к поиску уязвимостей в смарт-контрактах, который бы мог предотвратить подобные ошибки в будущем.
Однако это не самое интересное. Исследователи заявляют, что обнаружили еще 34 200 уязвимых смарт-контрактов в сети эфириума. Команда подтвердила, что всего на всего 10% из них приходится порядка $6 млн. средств в эфире, которые потенциально могли бы достаться злоумышленникам.
Авторы исследования на прошлой неделе опубликовали подробный отчет, который сейчас изучают специалисты.
Смарт-контракты представляют собой самоисполняющийся код в блокчейне эфириума. Пользователи взаимодействуют с ними за счет заданных условий и транзакций. Код контрактов публикуется не всегда, что приводит к тому, что компетентные разработчики не могут в полной мере видеть возможные уязвимости и своевременно исправлять их. Как правило, они обнаруживаются уже после того, как произошла та или иная роковая ошибка.
Проанализировав около миллиона действующих смарт-контрактов, исследователи обнаружили 34 200 содержащих критическую уязвимость (включая и многострадальный Parity). Проведя опыт на примерно 3000 контрактов из выборки, они смогли задействовать уязвимости почти на 90% из них.
Исследователи также пытались отследить авторов проблемных контрактов, но не смогли. К тому же, не факт, что разработчики бы стали прислушиваться — авторы Parity, как позже выяснилось, знали о проблеме, но не стали исправлять ее вовремя.
Конечно, авторы исследования не стали публиковать информацию о найденных уязвимостях, это могло бы привести к настоящей катастрофе. Злоумышленникам пришлось бы проделать как минимум аналогичное исследование, чтобы попытаться украсть эфир с того или иного контракта, поэтому можно сказать, что средства пользователей в относительной безопасности. Тем не менее, это показывает, что система пока далека от совершенства.