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