Недавнее обновление Pectra на тестовой сети Ethereum Sepolia вызвало серьезные трудности, когда неизвестный злоумышленник использовал уязвимость для атаки на сеть. Эта ситуация подчеркивает важность тестирования программного обеспечения и своевременного реагирования на потенциальные угрозы в быстро развивающемся мире криптовалют. Обновление Pectra было запущено на финальной тестовой сети Sepolia в 7:29 утра 5 марта. Однако уже 8 марта разработчик Ethereum Мариус ван дер Виден сообщил, что команда начала получать сообщения об ошибках на своем узле geth, а также наблюдала за появлением пустых блоков. Проблема возникла из-за того, что контракт депозита вызывал неверный тип события — событие перевода вместо депозита.
Сначала разработчики выпустили исправление, но вскоре поняли, что пропустили один крайний случай. Неизвестный пользователь осуществил перевод нулевых токенов на адрес депозита, что снова вызвало ошибку. "Через несколько минут мы увидели множество пустых блоков, поэтому мы снова начали проверять пулы транзакций и нашли еще одну проблемную транзакцию, вызвавшую те же крайние случаи", — рассказал ван дер Виден. Изначально разработчики предположили, что ошибка произошла из-за ошибки одного из доверенных валидаторов. Однако вскоре они поняли, что транзакция пришла от новой учетной записи, недавно пополненной Faucet.
Стандарт ERC-20 не запрещает нулевые переводы токенов, что позволяет любому пользователю, даже не обладая токенами, осуществлять переводы на другие адреса. "Единственный способ остановить атаку заключался в фильтрации всех транзакций, которые взаимодействовали с контрактом депозита. Поэтому мы внедрили следующее частное исправление, которое развернули на некоторых узлах DevOps", — добавил он. Разработчики заподозрили, что злоумышленник следит за их сообщениями, поэтому они решили не распространять информацию об исправлении, а обновить только те узлы, которые они контролировали, чтобы получить больше полноценных блоков в сети. К 14:00 все узлы были обновлены с исправлением, и транзакция неизвестного пользователя была успешно обработана.
По словам ван дер Видена, они не потеряли финализацию в течение инцидента, а проблема была изолирована только на Sepolia, так как там использовался токен-гейтед контракт для депозита, в отличие от обычного контракта депозита основной сети. Несмотря на сложности, разработчики продолжили тестирование обновления Pectra на тестовой сети Holesky 26 февраля, которая также столкнулась с проблемами. В результате команда приняла решение отложить обновление Pectra до завершения дополнительных тестов. Обновление Pectra является частью более широкой работы Ethereum по улучшению эксплуатационных характеристик сети. Оно следует за обновлением Dencun, которое закончилось 13 марта 2024 года и направлено на снижение транзакционных сборов для сетей второго уровня и улучшение экономики сворачивания Ethereum.
Тем не менее, инцидент в Sepolia подчеркивает необходимость более строгого контроля и тестирования обновлений перед их развертыванием в реальных условиях. Это также призыв к разработчикам и рабочим группам в экосистеме Ethereum уделять больше внимания безопасности и учитывать различные сценарии использования, которые могут возникнуть в процессе работы. Ситуация с обновлением Pectra и последующими уязвимостями в Sepolia стал важным уроком для всех, кто работает в сфере блокчейна и криптовалют. Заранее предупрежденные пользователи могут сохранять и укреплять свои защитные меры, а разработчики, в свою очередь, должны быть проактивными в решении вопросов безопасности и уязвимостей. В заключение можно сказать, что инциденты подобного рода, как атака на сеть Sepolia, только подтверждают важность постоянного мониторинга безопасности и необходимости разработки более продвинутых методов защиты в быстро меняющемся мире криптотехнологий.
Хотя проблемы и возникают, важно извлекать уроки и делать все возможное, чтобы предотвратить их повторение в будущем. Таким образом, сообщество Ethereum и его разработчики должны оставаться внимательными и готовыми к быстрому реагированию на любые проблемы, которые могут возникнуть в процессе дальнейшего развития и внедрения новых технологий.