Мост KelpDAO был взломан, в результате чего злоумышленники вывели из LayerZero 116 500 rsETH на сумму $292 млн. Это привело к заморозке DeFi и падению общей стоимости активов на $13 млрд. Компания LayerZero, чья инфраструктура использовалась для этого моста, впоследствии указала на выбор конфигурации компанией KelpDAO как на основную причину атаки, в то время как предварительные данные связывают атаку с северокорейской группировкой Lazarus Group.
Как взломали мост KelpDAO?
KelpDAO – это протокол ликвидного рестейкинга, тип DeFi-платформы, которая принимает внесенные пользователем ETH, направляет их через EigenLayer для получения дополнительной прибыли сверх стандартных вознаграждений за стейкинг Ethereum и выпускает rsETH в виде торгуемого токена-квитанции. Представьте rsETH как чек на получение средств. Он представляет собой застейканные ETH и получаемую за них прибыль. И его можно торговать или использовать в качестве залога в рамках DeFi.
Такой программный мост построили с использованием стандарта OFT (Omnichain Fungible Token) от LayerZero. LayerZero – это кроссчейн-уровень обмена сообщениями. То есть инфраструктура, позволяющая различным блокчейнам отправлять друг другу проверенные инструкции.
KelpDAO развернула rsETH более чем в 20 сетях, включая:
- Base;
- Arbitrum;
- Linea;
- Blast;
- Mantle;
- Scroll.
Мост хранил резервы rsETH, которые обеспечивали обернутые версии токена во всех этих сетях второго уровня.
Злоумышленники обманули уровень обмена сообщениями LayerZero. Они заставили его поверить, что из другой сети поступила действительная межсетевая инструкция. Это привело к тому, что мост KelpDAO отправил 116 500 rsETH на адрес, контролируемый злоумышленниками.
Экстренная мультиподпись KelpDAO приостановила работу основных контрактов только через 46 минут. По данным CoinDesk, две последующие попытки провалились. Каждая из этих попыток содержала сообщение с целью вывода еще 40 000 rsETH, что составляет около $100 млн.
Как злоумышленники обошли слой проверки
Компания LayerZero впоследствии опубликовала подробный анализ технической стороны атаки. И оказалось, что она гораздо сложнее, чем простое обнаружение ошибки в смарт-контракте.
Проверка моста LayerZero основана на узлах RPC. Это сервера, позволяющие программному обеспечению читать и записывать данные в блокчейн. Злоумышленник выявил два узла RPC, от которых верификатор LayerZero зависел для подтверждения межсетевых транзакций. Он заменил программное обеспечение, работающее на этих двух узлах, вредоносными версиями. Они работали так, чтобы сообщать верификатору LayerZero только одно – что транзакция была действительной.
Однако компрометации двух узлов оказалось недостаточно. Поскольку верификатор LayerZero также проверил нескомпрометированные внешние RPC-узлы. Поэтому злоумышленники провели распределенную атаку типа «отказ в обслуживании» (DDoS) против этих внешних узлов, чтобы заставить систему переключиться на скомпрометированные узлы.
Журналы трафика, предоставленные LayerZero, показывают, что DDoS-атака проводилась с 10:20 до 11:40 утра. После срабатывания механизма переключения на резервный сервер зараженные узлы сообщили верификатору о получении легитимного межсетевого сообщения, и мост освободил rsETH. Затем вредоносное программное обеспечение узла самоуничтожилось, удалив свои бинарные файлы и локальные журналы.
