Binance Bridge 🌉 Мост
- Техника
- Proof Verifier Bug
- Классификация
- Bridge & Cross-Chain
- Тип цели
- DeFi Protocol
- Затронутые сети
- BSC
- Источник
- Нет публичной ссылки на источник
6–7 октября 2022 года злоумышленник взломал BSC Token Hub — нативный кросс-чейн мост, связывающий BNB Beacon Chain (BEP2) и BNB Smart Chain (BEP20), — и двумя транзакциями вывел на один адрес около 2 млн BNB, на тот момент это примерно $570 млн. Валидаторы Binance Chain остановили сеть примерно через 90 минут, до того как основная часть средств успела уйти дальше. Причиной стал не украденный ключ и не опустошённый пул ликвидности, а изъян в библиотеке проверки криптографических доказательств моста.
Как устроена атака
Token Hub подтверждает кросс-чейн переводы криптографическими доказательствами, построенными на IAVL — структуре Merkle-дерева, которая используется в экосистеме Cosmos SDK. Валидное доказательство — это путь от листа к корню дерева, и на каждом шаге этого пути узел должен нести данные только с одной стороны — левой или правой, но не с обеих сразу. По данным анализа Halborn, код валидации моста это ограничение не проверял. Это позволило злоумышленнику подложить поддельные данные в неиспользуемую сторону узла, не меняя ни расчёт пути, ни итоговый корневой хеш, который сверял мост, — подделанное доказательство по-прежнему проходило проверку как подлинное.
Используя этот изъян, атакующий собрал доказательство со ссылкой на блок 110 217 401 — подтверждённый примерно двумя годами ранее — и с его помощью сфабриковал сообщение о депозите, которого мост на самом деле никогда не обрабатывал. Отправленное напрямую, поддельное доказательство сообщило BSC, что на стороне Beacon Chain заблокированы BNB, и Token Hub эмитировал эквивалентную сумму на BSC без какого-либо реального обеспечения. Приём сработал дважды — каждый раз эмитировалось около 1 млн BNB.
В нашей базе техника классифицирована как «Proof Verifier Bug» в категории Protocol Logic — это соответствует сути произошедшего, хотя более точное техническое описание исследователей — изъян верификации Merkle-доказательств в IAVL. Команда Cosmos SDK впоследствии присвоила этому классу багов имя Dragonberry, обнаружив, что он затрагивает не только форк BNB Chain, но и любую cosmos-цепь с IBC.
Что было дальше
Сооснователь Binance Чанпэн Чжао попросил валидаторов приостановить сеть, и в течение примерно 90 минут 26 из 44 валидаторов согласились — это заморозило порядка $430 млн, ещё остававшихся на адресе в BSC, не дав им уйти дальше. Tether и Circle внесли в чёрный список стейблкоины, в которые атакующий уже успел конвертировать часть средств, заморозив, по разным оценкам, от $7 млн до $33,5 млн. Около $127 млн к моменту остановки сети уже успели уйти в Ethereum, Fantom, Avalanche и Polygon — часть этой суммы атакующий заложил как обеспечение в кредитные протоколы Venus и BankerJoe, чтобы занять ещё стейблкоинов.
Сеть возобновила работу после хотфикса, а голосование по управлению BNB Chain утвердило заморозку оставшегося баланса атакующего на стороне BSC, частичное покрытие убытка из резерва BNB Auto-Burn и запуск whitehat-программы с вознаграждением $1 млн за существенную уязвимость плюс bounty до 10% от возвращённой суммы за информацию, помогающую установить личность атакующего, — так это описывает сам блог BNB Chain. Переговоров о добровольном возврате не последовало. Замороженные средства так и остаются замороженными — на приостановленном адресе в BSC и в заблокированных стейблкоин-балансах, — а не возвращены протоколу или пользователям; об арестах публично не сообщалось.
Что из этого следует
- Эксплойт не затронул ни приватный ключ, ни оракул, ни пул ликвидности — он сломал математическое допущение, на которое опиралась библиотека верификации доказательств. Это класс отказа, который наследует любой мост, построенный на том же коде.
- Один баг валидации в общей библиотеке (IAVL) превратился в уязвимость всей экосистемы, как только команда Cosmos SDK проверила на тот же изъян другие цепи, — риск моста не ограничивается той сетью, где случился конкретный взлом.
- Восстановление контроля целиком зависело от того, успеют ли валидаторы скоординироваться и остановить работающую сеть за считаные минуты; мост с менее многочисленными, медленными или хуже скоординированными валидаторами выпустил бы наружу заметно больше средств до всякой заморозки.
- «Заморожено» — не значит «возвращено»: большая часть суммы, приписываемой инциденту, зависла, а не восстановлена, а пользователи протоколов, куда попали похищенные BNB (как Venus, где атакующий занимал под депонированные BNB), приняли на себя вторичный риск, не связанный с самим мостом напрямую.
On-chain DeFi несёт риск смарт-контрактов. Держите основные средства на регулируемой бирже.