Прошло целых семь дней, прежде чем кто-либо заметил, что из моста Axelar в Secret Network исчезло $4.67 миллиона. Утечка произошла 10 июня, и никто с обеих сторон не заметил этого до 17 июня, когда неудачный рутинный кросс-чейн перевод заставил кого-то проверить баланс эскроу на стороне Axelar. Счет был пуст. Поскольку Secret Network построена с учетом конфиденциальности по умолчанию, где состояние контрактов и детали транзакций скрыты от публичного просмотра, следы на блокчейне, которые обычно подсказывают исследователям безопасности в течение нескольких минут, просто были невидимы. Это дало злоумышленнику целую неделю, чтобы спокойно переместить средства. Чрезвычайный комитет Axelar с тех пор отключил соединения Secret и Secret-SNIP, но деньги уже пропали.

Бесконечно-мятный баг, упакованный в пользовательский контракт

Уязвимость находилась в модифицированном контракте CW20-ICS20 на стороне Secret моста — это часть кода, которая обрабатывает входящие активы, приходящие по Cosmos IBC, и чеканит обёрнутые версии этих активов для Secret. Именно эти обёрнутые версии — saTokens — пользователи DeFi в Secret держат и торгуют. Атакующему вменяют действие, на удивление простое: он развернул собственную одновалидаторную цепочку Cosmos, открыл совершенно новый IBC-канал напрямую в контракт мостового соединения Secret, а затем осуществил саморелей форжированных пакетов, в которых содержались деноминации токенов, совпадавшие со списком разрешённых в контракте. Контракт проверял, какой номинал поступал. Но он не проверял, из какого именно канала должен был приходить этот номинал.

Этого одного пропущенного чек-поинта достаточно, чтобы рассказать всю историю. Поскольку контракт saToken из saToken доверял любому корректно сформированному IBC-пакету с известным номиналом, атакующий смог свободно выпускать saUSDT, saUSDC, saDAI, saWETH, saWBTC, saWBNB и saWstETH, выглядящие как полностью обеспеченные, прямо из воздуха. Затем только что отчеканенные saTokens были погашены обратно через легитимный канал Axelar IBC, который добросовестно выпустил реальные находящиеся в эскроу активы на стороне Axelar. В Secret ничего необычного не заметили, потому что чеканка была технически корректной. В Axelar ничего необычного не заметили, потому что погашения были технически корректными. Несогласие было только в математике на аккаунте эскроу — и никто на это не смотрел.

Переосмысление под себя, которое так и не было независимо проверено аудитом

Следователи со стороны Secret утверждают, что мостовой контракт был переделан из стандартной модели эскроу в модель чеканки, когда готовили интеграцию Axelar. И во время этой доработки из кода убрали две функции валидации, которые как раз и должны были поймать именно такой фальшивый атакующий по каналу сценарий. По сообщениям, Axelar никогда не запрашивала внешний аудит перед тем, как включить соединение в рабочем режиме. Пользовательский код моста с отключёнными проверками безопасности, развёрнутый без свежего аудита в цепочке, где внешние стороны не могут легко отслеживать состояние контракта снаружи. Это, по сути, худшее сочетание факторов, которое может придумать исследователь безопасности. Сам эксплойт почти будничен, если понять, как контракт был сконфигурирован. А то, что никто не обнаружил его в течение недели, — вот что должно тревожить любую команду, которая запускает форк CW20-ICS20.

AXL вырос на 5%, держатели Secret — менее довольны

Чрезвычайный комитет Axelar подтвердил, что остальная часть сети Axelar работает нормально и что атака была изолирована до соединения с Secret. Сообщается, что биржи и правоохранительные органы уведомлены, а расследование всё ещё продолжается по состоянию на эту неделю. Довольно странно, но AXL на самом деле торговался с ростом примерно на 5% после того, как появились новости — возможно, потому что рынок воспринял быструю остановку как подтверждение того, что экстренные процедуры работают так, как их рекламировали. В то же время SCRT в Secret Network проводит менее праздничную неделю. Держатели, которые использовали мост, теперь ждут, решит ли сообщество Secret социально распределить потери между казной или средствами стейкеров, и будет ли на стороне Axelar какая-либо помощь в восстановлении.

Мосты продолжают ломаться одним и тем же способом

Если вы хоть какое-то время следите за крипто-безопасностью, вы уже видели этот фильм: пользовательский форк стандартного контракта с парой тихо удалённых проверок безопасности, без внешнего аудита, и находчивый атакующий, который читает код контракта быстрее, чем когда-либо делали деплойеры. По-настоящему новым здесь является роль приватности в хронологии событий. Та же on-chain непрозрачность, которая делает Secret Network привлекательной для пользователей, которым нужны скрытые балансы, одновременно затмила более широкому сообществу по безопасности тот факт, что слив шёл уже целую неделю. Есть реальный разговор о том, как приватные цепочки выстраивают мониторинг вне канала, чтобы следующая инцидент ловился за часы, а не за дни. Пока же мостовые пользователи в минусе примерно на четыре с половиной миллиона долларов, а ещё одну интеграцию прямо сейчас разворачивают обратно.

---------------

Автор: Dorian Fenwick Silicon Valley NewsroomBreaking Crypto News

Подписывайтесь на GCP в ридере