34 200 смарт-контрактов на блокчейне Ethereum содержат критические уязвимости — Исследование
В ноябре прошлого года пользователь, известный под псевдонимом DevOps199, наткнулся на уязвимость в коде библиотеки Ethereum-кошелька Parity и случайно заблокировал $150 млн.
В настоящее время в блокчейне Ethereum работают сотни тысяч смарт-контрактов, управляющих кошельками, токенами, приложениями или использующихся для хранения средств. Группа исследователей утверждает, что они нашли способ предотвратить негативные последствия таких уязвимостей, обнаруживая их заранее. Более того, они сами смогли идентифицировать 34 200 уязвимых смарт-контрактов и протестировали 3 000 из них, что в теории могло бы им позволить украсть $6 млн в эфире. Об этом пишет Motherboard.
«Мы работаем с приложениями, у которых есть две очень неприятных особенности: они используются для управления вашими деньгами и их нельзя исправить», — пояснил Илья Сергей, помощник профессора из Университетского колледжа Лондона и соавтор исследования.
Смарт-контракт – это самоисполняющийся код в блокчейне Ethereum. Люди взаимодействуют со смарт-контрактами, передавая им инструкции через транзакции. Анализ этого кода сопряжён с особыми трудностями, так как он предназначен для исполнения в блокчейне и не несёт особого смысла для человека, поэтому уязвимости обычно обнаруживаются, когда бывает слишком поздно.
Сергей и его коллеги хотели провести масштабное исследование и обнаружить все возможные уязвимости. Для этого они рассмотрели Ethereum как торговый автомат.
«Представьте, что ваша задача – взаимодействовать с торговым автоматом не стандартным образом, а попытаться взломать его и заставить обслуживать вас бесплатно», — пояснил исследователь. «Предположим, вы вносите несколько монет и начинаете нажимать на кнопки в случайном порядке в надежде, что внутренний механизм автомата – вы не знаете его устройства – в конце концов откроется, и в заберёте конфету».
Чтобы поэкспериментировать с аппаратом, исследователи скачали блокчейн Ethereum, по сути создав его форк для личного пользования, и начали запускать разнообразные сценарии, пытаясь добиться нежелательных последствий. Когда эти последствия наступали, они помечали смарт-контракт «с отслеженной уязвимостью».
Проанализировав таким образом около миллиона смарт-контрактов, исследователи обнаружили, что в 34 200 из них содержались критические уязвимости, включая контракт, уничтоженный DevOps199. Они проверили свои предположения на 3 000 смарт-контрактов, и в 89% случаев вызвали те самые нежелательные последствия.
По словам исследователя, они тщетно пытались найти создателей уязвимых смарт-контрактов. Даже если бы им это и удалось, никто не гарантирует, что создатели послушали бы их. Именно это произошло в случае с Parity: компанию известили о проблеме за несколько месяцев до происшествия, однако она решила отложить её решение на более поздний срок.
Поскольку исследователи не сообщают, в каких именно смарт-контрактах были обнаружены уязвимости, условно их можно считать безопасными.
«Если кто-то захочет воспользоваться нашей идеей, ему, по крайней мере, придётся проделать столько работы, сколько сделали мы», — подытожил Сергей.
Фото: Markusenes
Источник: ttrcoin.com