Ethereum talk
В ноябре 2018 в очень уважаемом мной интернет СМИ я заметил две публикации об уязвимостях Ethereum. На фоне общего падения крипторынка эти новости могли быть восприняты широкой аудиторией как негатив в сторону самой платформы Ethereum. Я и мои коллеги в IberGroup около двух лет занимаемся разработкой смарт контрактов на этой платформе. Поэтому считаю важным сделать небольшой разбор этих двух кейсов.
Итак, речь пойдёт о двух публикациях ForkLog:
- В сети появились сообщения об уязвимости в виртуальной машине Ethereum
- Раскрыты детали позволяющей опустошать кошельки криптовалютных бирж уязвимости
1. Уязвимость виртуальной машины
Да, был пост в Твиттере от компании NettLabs о выявленной ошибке в работе одной из реализаций виртуальной машины Ethereum - Py-EVM v0.2.0-alpha.33. Да, с подачи NettLabs, эта информация была размещена в Национальной базе уязвимостей США (NVD). Однако, сам по себе этот факт не может являться каким-либо подтверждением серьезности проблемы. На сайте NVD указано, что они НЕ занимаются активной проверкой уязвимостей, а полагаются на сторонние организации. В данном случае, такой стороной стала NettLabs. И как отметели в одном из комментов в Твиттере, они поставили этим действием под сомнение свой авторитет. Всем разработчикам в Ethereum сообществе известно, что реализация узла сети на Питоне используется для исследований и быстрого прототипирования новых функций. Если взглянуть на статистику основной Сети Ethereum, то среди более чем 12 тысяч узлов, вряд ли найдется больше 1-2 узлов, работающих на Питоне. Об этом же в reddit и написал Виталик Бутерин.
Хотя, конечно, часто хочется экономить на газе, но для этого есть другие, штатные способы ;-)
2. Опустошение кошельков криптовалютных бирж
Разработчики Level K официально опубликовали информацию о векторе атаки, который может привести к опустошению “горячих” кошельков обменников и бирж. Но этот вектор использует НЕ уязвимость платформы Ethereum, а особенности архитектуры некоторых бирж и обменников. Стоит лишь уточнить, что под опустошением “горячих” кошельков здесь имеется ввиду не кража эфира, а лишь тот факт, что весь эфир с такого кошелька может быть потрачен (сожжен) на оплату газа транзакции, которая переводит эфир клиенту биржи(обменника). Будучи реализованной в “чистом виде”, такая атака не дает профита (дохода) тому, кто её подготовил и провёл, но создать трудности обменнику, несомненно может.
С “незапамятных” времен существуют рекомендации о том, как лучше организовать вывод эфира с баланса смарт контракта. Если кратко - то либо нужно проверять сколько газа “хочет” потратить транзакция, либо транзакция по выводу эфира должна быть инициирована самим клиентом биржи или обменника. Тем, кто этим советам следовал - такая атака не страшна. К слову сказать, Level K в своем анализе справедливо указали на все эти особенности. В их публикации также описан сценарий, как злоумышленник все-таки может на этом «честно» заработать, но это уже тема другого разговора. Кому интересно - можно почитать о проекте GasToken.
Резюмируя сказанное выше, хочу подчеркнуть, что нет никаких оснований считать, что рассмотренные уязвимости относятся к самой платформе Ethereum. Экосистема Эфира по прежнему растёт, развивается и является одной из самых перспективных и “взрослых” платформ по передаче ценности (value) в Интернете.
Ссылки:
- https://forklog.com/v-seti-poyavilis-soobshheniya-ob-uyazvimosti-v-virtualnoj-mashine-ethereum/
- https://forklog.com/raskryty-podrobnosti-uyazvimosti-pozvolyayushhej-opustoshat-goryachie-koshelki-birzh-za-schet-szhiganiya-ethereum-gaza/
- https://twitter.com/NettaLab/status/1060889401805271042
- https://twitter.com/NettaLab/status/1060889400102383617
- https://nvd.nist.gov/vuln/detail/CVE-2018-18920
- https://github.com/ethereum/pyethereum
- https://github.com/ethereum/py-evm
- https://www.ethernodes.org/network/1
- https://www.reddit.com/r/ethereum/comments/9vkk2g/netta_labs_claim_to_have_found_a_vulnerability_in/e9d3wyx/
- https://medium.com/level-k/public-disclosure-malicious-gastoken-minting-236b2f8ace38
- https://solidity.readthedocs.io/en/latest/common-patterns.html
- https://drive.google.com/file/d/1mULop1LxHJJy_uzVBdc_xFItN9ck04Jj/view
- https://gastoken.io/