В среду хардфорк Эфириума Constantinople официально отложили на неопределённый срок. Причиной стала критическая уязвимость, которую нашли специалисты ChainSecurity. По словам эксперта в сфере безопасности криптовалют Серхио Демьена Лернера, этот баг обсуждали на Coinspect ещё несколько месяцев назад, то есть о нём было известно заранее. У Серхио более 15 тысяч фолловеров в Твиттере, многие из которых являются разработчиками протокола. Возникает резонный вопрос о том, почему эту ошибку не исправили в нужный момент.
Мы прекрасно знали, что некоторые контракты не смогут работать на EIP1283. Тогда мы даже создали пример контракта, в котором была учтена эта уязвимость. Мы были уверены, что разработчики Эфириума примут это к сведению.
Как пишет Trustnodes, Лернер также ссылается на твит, который был опубликован еще в сентябре.
duro uppercut…
— sgz (@sgz2001) September 18, 2018
Перестаньте думать, что send () в Solidity защищён от повторного входа. Это не так. CALL на нижнем уровне без передачи значения может создать обратный вызов с передачей менее 2300 газа. Всегда используйте логическую блокировку для защиты от повторного входа.
Серхио отмечает, что в тот момент они не сообщили об том Ethereum Foundation, так как были уверены, что разработчики знают об этом.
Я и по-прежнему уверен, что они должны это знать. Почему они решили перепроверить риски за 36 часов до непосредственного форка?
И ответ на этот вопрос скорее всего заключается в том, что кусок кода с этим багом был добавлен в самую последнюю минуту. Напомним, Constantinople был запланирован ещё на середину ноября, однако баг в тестнете вынудил отложить запуск.
Первоначально протокол EIP-1283 предложили ещё в августе 2018 года, однако он был принят только 28 ноября 2018 года. То есть после того, как форк был отложен из-за предыдущей ошибки, которую нужно было исправить, разработчики внедрили новый код.
Разработчики Metropolis объявляли выходной на весь декабрь. Поэтому сейчас не совсем понятно, проводились ли тестирования в тот период. Виталик Бутерин сам говорил, что проблема здесь заключается во «взаимодействии» между различными новыми функциями, которые при «перекрёстной коммуникации» показывают совсем не то поведение, которое от них ожидали получить. Больше данных ищите в крипточате.
Подписывайтесь на наш канал в Телеграме. Туземун уже скоро!
Два Биткоина
Автор: Валик Ткач