Skip to content
yieldo. Крипто-аналитика

Wormhole / Portal 🌉 Мост

$326.0M
Украдено средств
02.02.2022
Дата инцидента
Техника
Ошибка проверки подписей
Классификация
Проверка входных данных
Тип цели
DeFi-протокол
Затронутые сети
Solana Ethereum

Исход

Jump пополнила обеспечение моста ETH и восстановила покрытие выпущенных токенов. Похищенные активы продолжали отслеживать отдельно.

Данные проверены: 20.10.2026

2 февраля 2022 года злоумышленник взломал solana-часть кроссчейн-моста Wormhole — того самого, что был известен пользователям под брендом Portal — и отчеканил 120 000 wrapped ETH (whETH), не заложив ни одного реального ETH в качестве обеспечения. Часть монет, около 93 750 whETH, атакующий вывел обратно в нативный ETH на Ethereum, остальное обменял на SOL и другие активы. Итоговый ущерб составил около $326 млн — один из крупнейших взломов DeFi на тот момент (Chainalysis, Rekt).

Как устроена атака

Контракт Wormhole на Solana чеканит wrapped-токены только после проверки VAA (Verifiable Action Approval) — сообщения, подписанного набором guardian-узлов моста и подтверждающего, что на исходной цепи заблокировано соответствующее обеспечение. Для проверки этой подписи программа должна была вызывать системную программу Solana Secp256k1 и убеждаться, что вызов действительно пришёл от системной программы. Вместо актуального способа такой проверки контракт использовал устаревшую функцию load_instruction_at, которая не проверяла адрес вызывающего аккаунта (Halborn).

Атакующий воспользовался этим пробелом: создал поддельный аккаунт-«sysvar инструкций» и подставил его в вызов проверки. Поскольку устаревшая функция не сверяла адрес, подделка была принята как настоящий системный аккаунт, и проверка guardian-подписи прошла успешно, хотя реальных подписей никто не создавал. С поддельным VAA на руках атакующий вызвал функцию моста complete_wrapped и отчеканил 120 000 whETH из ничего — без единого реального ETH, заблокированного на стороне Ethereum.

Уязвимость находилась в механизме проверки подписи, а не в экономической логике вроде оракулов цены или flash loan. От типичной кражи ключей валидаторов моста (как в случае Ronin) это отличается тем, что приватные ключи никто не крал — саму проверку, которая должна была требовать подлинные подписи, обманом заставили пройти без них.

Что было дальше

В течение нескольких часов команда Wormhole оставила атакующему on-chain сообщение с предложением white-hat-баунти в $10 млн — за возврат остального и объяснение механики эксплойта. Ответа не последовало. Jump Trading/Jump Crypto — торговая фирма, стоящая за оператором Wormhole Certus One, — в течение примерно суток восполнила недостающее обеспечение, влив в мост около 120 000 ETH (на тот момент около $326 млн), тем самым восстановив привязку whETH 1:1 и предотвратив каскадные ликвидации в протоколах Solana DeFi, использовавших whETH как залог (Chainalysis).

Jump пополнила обеспечение моста, внеся ETH. По более поздним данным средства были переведены в staked ETH и использовались как залог в кредитных протоколах. Сам Wormhole продолжил работу, позже привлёк новое финансирование, залатал контракт и расширил состав guardian-узлов.

Что из этого следует

  • Уязвимость целиком находилась в механизме проверки подписи на стороне моста — компоненте, невидимом для конечного пользователя: никакая гигиена кошелька или чтение контракта депозитором не выявили бы её заранее.
  • Мосты с wrapped-активами несут специфический хвостовой риск: привязка курса wrapped-токена целиком зависит от того, правильно ли контракт моста ограничивает чеканку, — единственный баг в проверке способен мгновенно оторвать цену whETH от ETH.
  • Пополнение обеспечения стало возможным потому, что за Wormhole стоял капитализированный корпоративный спонсор (Jump); у мостов без сопоставимого баланса аналогичной страховочной сетки при таком классе бага нет.
  • Инцидент подтолкнул индустрию к аудиту использования устаревших/legacy API именно в коде кроссчейн-верификации и к более консервативным многоступенчатым проверкам подписи в мостовых контрактах в целом.