
22 июня 2026 года злоумышленник вывел около $1,7 млн из мостов Taiko — и для этого ему не потребовалось ничего взламывать в традиционном понимании. Приватный ключ, открывавший доступ к механизму доверия системы, просто лежал в открытом файле.
Введение
Taiko — это L2-сеть поверх Ethereum: отдельный блокчейн, который работает быстрее и дешевле, но опирается на безопасность Ethereum. Чтобы пользователи могли перемещать активы между Taiko и Ethereum, существуют мосты — специальные контракты, которые «замораживают» токены в одной сети и «выпускают» их в другой.
Ключевой вопрос для любого моста: как контракт на Ethereum узнаёт, что событие в сети Taiko действительно произошло? Для этого у Taiko использовалась технология SGX (Software Guard Extensions) — специальные защищённые «анклавы», изолированные программные среды, которые могут подписывать данные криптографически. Если Ethereum-контракт получает подпись от доверенного SGX-анклава, он считает информацию о событии в Taiko подтверждённой и выдаёт активы.
Ход инцидента
1️⃣ Приватный ключ в открытом файле. По предварительному анализу, приватный ключ SGX-анклава содержался в публично доступном файле enclave-key.pem. Это всё равно что оставить мастер-ключ от банковского хранилища на проходной: технически замок не взломан, просто ключ был доступен каждому, кто знал, где искать.
2️⃣ Регистрация поддельных доверенных узлов. Получив этот ключ, злоумышленник смог получить значение trustedUserMrSigner — идентификатор доверенного подписанта — и зарегистрировать собственные SGX-инстансы как официально одобренные системой. Теперь его контролируемые узлы воспринимались как легитимные и имели право подписывать данные о состоянии сети.
3️⃣ Подписание поддельных данных. Зарегистрированные злоумышленником узлы начали подписывать недействительные данные о состоянии сети Taiko — то есть сообщать Ethereum-контракту о событиях, которых в реальности никогда не было.
4️⃣ Принятие фиктивных сообщений мостом. Ethereum-контракты приняли эти подписи как подлинные. Они не нашли в исходной сети соответствующих событий MessageSent (сообщений, которые должны возникать, когда пользователь реально отправляет что-то через мост), — но система посчитала доказательства действительными и разрешила вывод активов.
5️⃣ Вывод средств. В результате злоумышленник получил активы из мостов Taiko без каких-либо реальных транзакций с его стороны в исходной сети.
Почему это стало возможным
Вся модель безопасности мостов Taiko строилась на доверии к SGX-анклавам: если анклав говорит, что событие произошло — контракт верит. Эта система работает только при условии, что приватные ключи анклавов надёжно защищены.
Когда приватный ключ оказался в публично доступном файле, злоумышленник получил возможность «говорить от имени» доверенных анклавов — и вся цепочка проверок перестала иметь смысл. Контракт добросовестно выполнял свою работу: проверял подписи и выдавал активы. Просто подписи были от узлов, которые находились под контролем атакующего.
Детали расследования: движение средств
Злоумышленник вывел активы на адрес 0x7506dea0c38ca0b55364b22424374c5a1ae1b76a. Средства поступали несколькими потоками:
Токены TAIKO (~$147 тыс.) сразу ушли на адрес 0x5FBc60A12Bc6635E7d587d8DaC52e4b1388b4990 и были выведены на биржу MEXC.
Остальные активы — около $650 тыс. в USDC, $155 тыс. в crvUSD, $138 тыс. в USDT, $36 тыс. в WETH, $26 тыс. в CRV и $27 тыс. в WBTC — были переведены на адрес 0x9108828e30f2de407aADb0aF677b4a9228e4AcD4, там обменяны на WETH через Uniswap (децентрализованная биржа), затем конвертированы в ETH и возвращены на адрес 0x7506DeA0c38ca0B55364B22424374c5A1ae1B76a.
Оттуда средства переведены на адрес 0xA98035081fB739EbE9C8f80904668fb11438a846, где остаются на момент расследования.
Основная транзакция: 0x1b6d504f2e35eabeda731bbbbda5f2a8acad2aea8e7eca1ebc701fd37f7dd26c
Заключение
Атака на мосты Taiko — редкий по природе инцидент: злоумышленник не нашёл ошибку в коде смарт-контракта и не использовал флэш-кредиты. Он просто взял ключ, который никто не удосужился спрятать.
Когда фундамент доверия системы — секретный ключ — оказывается в публичном доступе, все остальные уровни защиты перестают работать. Контракты вели себя именно так, как были запрограммированы: доверяли подписям из «одобренных» источников. Проблема была не в коде, а в том, кто контролировал эти источники.
Большая часть средств на момент расследования остаётся на известном адресе. Команда «КоинКит» продолжает отслеживать движение активов.


