Один патч закрыли 19 октября, а 26 октября срочно включили обратно. Между этими событиями прошло всего 7 дней 🦖
🚨 行情变了群里说
В Glamsterdam — следующем крупном обновлении Ethereum — обнаружилась уязвимость, из-за которой депозиты для стейкинга могли попасть не на тот счёт. Исследователь Avsetsin выявил её во время тестирования. Она затрагивала три ведущих протокола стейкинга: Lido, Origin и Rocket Pool. Пока потерь нет ⚠️
Проблема была связана с разделением ролей. В обновлении сборщики блоков и валидаторы стейкинга разделены на две группы. Обе группы должны вносить ETH, и их средства нужно учитывать раздельно. Но правила в черновике при обработке депозитов, которые ещё не были зачислены во время обновления, учитывали только публичный ключ.
Получалось, что оператор мог сначала зарегистрироваться в качестве сборщика, используя определённый публичный ключ, а затем сервис стейкинга мог внести ETH на тот же ключ, чтобы запустить валидатора. Согласно правилам из черновика, обе суммы записывались на счёт сборщика. По словам самого исследователя, оператор мог вывести средства протокола.
Хуже того, валидатор вообще не создавался. У сервиса стейкинга не было подтверждения, а значит, он не мог доказать, что эти средства принадлежат ему 🔍
История исправления этой уязвимости сама по себе полна неожиданных поворотов. Предложение закрыли 19 октября. Мейнтейнер Justin Traglia объяснил это тем, что на тот момент клиентские реализации ещё не были готовы. 23 октября исследователь добавил тесты, а в понедельник патч снова открыли и включили. Новые правила сортируют ожидающие зачисления депозиты по данным для вывода средств, поэтому средства валидаторов остаются за валидаторами.
Теперь патч включён в спецификацию консенсуса, но командам клиентов ещё предстоит реализовать его самостоятельно. Запуск тестовой сети Hoodi, запланированный на 26 октября, уже отложили. На Sepolia тестирование уже проводилось, а сроки запуска в основной сети пока остаются неопределёнными.
На мой взгляд, дело не в том, что взломали код, — в правилах просто не учли важную границу. Потерь удалось избежать потому, что кто-то обнаружил проблему до запуска основной сети. Сам исследователь также отметил, что это лишь условное обнаружение уязвимости в коде, а не подтверждённая реальная атака. Но если подумать, сценарий, быстро выявленный с помощью ИИ, затронул сразу три ведущих протокола. Это показывает, что тестирования граничных условий перед обновлениями всё ещё недостаточно 📉
Стоит следить за тем, не возникнут ли похожие расхождения в понимании правил при реализации обновления в клиентах, а также за тем, когда Glamsterdam наконец запустят в основной сети 👀
Обсудим в комментариях: как вы считаете, что представляет больший риск для сферы стейкинга — код или правила?
Нажмите на аватар, чтобы посмотреть прямой эфир.
Каждый день рассказываю о главных событиях в Ethereum: не просто о том, что произошло, но и о логике и возможностях, которые за этим стоят 👀🚀
🚨 行情变了群里说
В Glamsterdam — следующем крупном обновлении Ethereum — обнаружилась уязвимость, из-за которой депозиты для стейкинга могли попасть не на тот счёт. Исследователь Avsetsin выявил её во время тестирования. Она затрагивала три ведущих протокола стейкинга: Lido, Origin и Rocket Pool. Пока потерь нет ⚠️
Проблема была связана с разделением ролей. В обновлении сборщики блоков и валидаторы стейкинга разделены на две группы. Обе группы должны вносить ETH, и их средства нужно учитывать раздельно. Но правила в черновике при обработке депозитов, которые ещё не были зачислены во время обновления, учитывали только публичный ключ.
Получалось, что оператор мог сначала зарегистрироваться в качестве сборщика, используя определённый публичный ключ, а затем сервис стейкинга мог внести ETH на тот же ключ, чтобы запустить валидатора. Согласно правилам из черновика, обе суммы записывались на счёт сборщика. По словам самого исследователя, оператор мог вывести средства протокола.
Хуже того, валидатор вообще не создавался. У сервиса стейкинга не было подтверждения, а значит, он не мог доказать, что эти средства принадлежат ему 🔍
История исправления этой уязвимости сама по себе полна неожиданных поворотов. Предложение закрыли 19 октября. Мейнтейнер Justin Traglia объяснил это тем, что на тот момент клиентские реализации ещё не были готовы. 23 октября исследователь добавил тесты, а в понедельник патч снова открыли и включили. Новые правила сортируют ожидающие зачисления депозиты по данным для вывода средств, поэтому средства валидаторов остаются за валидаторами.
Теперь патч включён в спецификацию консенсуса, но командам клиентов ещё предстоит реализовать его самостоятельно. Запуск тестовой сети Hoodi, запланированный на 26 октября, уже отложили. На Sepolia тестирование уже проводилось, а сроки запуска в основной сети пока остаются неопределёнными.
На мой взгляд, дело не в том, что взломали код, — в правилах просто не учли важную границу. Потерь удалось избежать потому, что кто-то обнаружил проблему до запуска основной сети. Сам исследователь также отметил, что это лишь условное обнаружение уязвимости в коде, а не подтверждённая реальная атака. Но если подумать, сценарий, быстро выявленный с помощью ИИ, затронул сразу три ведущих протокола. Это показывает, что тестирования граничных условий перед обновлениями всё ещё недостаточно 📉
Стоит следить за тем, не возникнут ли похожие расхождения в понимании правил при реализации обновления в клиентах, а также за тем, когда Glamsterdam наконец запустят в основной сети 👀
Обсудим в комментариях: как вы считаете, что представляет больший риск для сферы стейкинга — код или правила?
Нажмите на аватар, чтобы посмотреть прямой эфир.
Каждый день рассказываю о главных событиях в Ethereum: не просто о том, что произошло, но и о логике и возможностях, которые за этим стоят 👀🚀
