Зано заявляет, что незаконные токены на сумму свыше 200 млн долларов привели к 30-дневному «откату» блокчейна


Одна пропущенная проверка — 18,4 миллиона $ZANO
30-дневная «перемотка» блокчейна Zano и без того казалась радикальной мерой. Теперь команда объяснила, что скрывалось за этим, и механизм, по всей видимости, еще более странный. Уязвимость, появившаяся в результате хард-форка 6, позволила злоумышленнику с 29 августа создавать монеты, которые сеть принимала за подлинные.
По данным команды разработчиков, в ходе первой реальной атаки в рамках одной транзакции было создано 2^64 базовых единиц, что составляет примерно 18,4 миллиона $ZANO. Почти месяц никто этого не заметил. К тому времени, когда 25 сентября внутренние инструменты Zano подняли тревогу, поддельные монеты уже оказались запутаны в системе конфиденциальности, специально созданной для того, чтобы затруднить отслеживание транзакций.
Проблема началась с «адресов шлюза» (Gateway Addresses) — нового типа адресов, введенного в рамках хард-форка 6 для упрощения интеграции Zano с централизованными биржами (CEX), мостами и другими сервисами. Выходы шлюза раскрывают сумму и идентификатор актива, в отличие от стандартных конфиденциальных выходов Zano, где и то, и другое скрыто.

Будьте в курсе
движения ваших монет
Алерты, котировки в реальном времени и новости рынка — в одном приложении

4,8 на основе 40 К оценок в App Store и Google Play


Однако в реализации отсутствовала критически важная проверка. Команда Zano сообщила, что злоумышленник мог сгенерировать специально рассчитанный идентификатор актива, который по-прежнему соответствовал бы требованиям сети к подтверждению транзакций, при этом втиснув произвольную сумму в скрытый выход.
«Короче говоря, каждая транзакция Zano должна подтверждать, что монеты были созданы в соответствии с правилами консенсуса», — пояснила команда. «Из-за отсутствующей проверки злоумышленник мог удовлетворить требованиям этого доказательства, при этом «скрывая» дополнительные монеты внутри транзакции».
Эти монеты не были просто бухгалтерскими записями. Команда заявила:
«Эти монеты функционировали как подлинные $ZANO и могли тратиться обычным образом».
Первый чекан оставался незамеченным почти месяц
28 августа злоумышленник зарегистрировал адрес шлюза, уплатив требуемую комиссию в размере 100 $ZANO, и, по-видимому, проверил, примет ли Zano сфабрикованный несуществующий актив. На следующий день началось настоящее сражение.
В результате одной транзакции было отчеканено примерно 18,4 млн $ZANO, стоимость которых в настоящее время составляет около 102 млн долларов. Спустя почти месяц, 24 сентября, злоумышленник совершил два легитимных депозита по 0,05 $ZANO каждый, по-видимому, проверяя обычный маршрут пополнения счета. 25 сентября было создано ещё 18,4 млн $ZANO, после чего последовал тот же маневр с 2^64 базовыми единицами с использованием стейблкоина fUSD. В общей сложности это более 200 млн долларов в виде незаконных криптотокенов.
А вот и самое интересное. До Hard Fork 6 Zano проводила тестирование с помощью искусственного интеллекта (ИИ), внутренние аудиты и программы по поиску уязвимостей. Никто не обнаружил эту уязвимость.
«Первоначальная атака оставалась незамеченной почти месяц, поскольку увеличенный выход выглядел как любой другой частный выход», — заявила команда.
Конфиденциальность сработала, и в этом заключалась проблема
Как только поддельные монеты попали в систему конфиденциальных транзакций Zano, точно определить, куда именно они пошли, стало совсем другой задачей. Кольцевые подписи смешивают расходы с другими выходами, что приводит к распространению неопределённости при каждом перемещении монет.
Zano просканировала каждый выход, потенциально связанный с тремя транзакциями чеканки. К блоку 3 878 388 след охватывал 117 941 выход, созданный в результате 65 301 транзакции. Впоследствии на основе первой транзакции по чеканке было создано примерно 165 700 выходов, что составило около 71 % сетевой активности за этот период.
«Это и есть конфиденциальность, работающая так, как и задумано», — сказал Zano. «Никто, включая команду Zano, не может точно определить, какие выходы затронуты».
Это поставило проект в тупик. Именно те свойства конфиденциальности, которых пользователи ожидали от Zano, не позволили разработчикам точно отделить легитимные монеты от несанкционированных. «Единственный способ проверить целостность предложения — это продолжить цепочку с момента, предшествующего первой уязвимости», — пояснила команда.
Месяц был исключён, и началось восстановление
Этой точкой стал блок № 3 833 000, предшествующий хард-форку № 6. Хард-форк № 7 перезапустил цепочку с этой точки и отключил адреса шлюзов, что означает, что транзакции, вознаграждения за стейкинг и добытые блоки за затронутый период больше не существуют в обновлённом реестре.
Зано также сообщил, что затронутые остатки будут восстановлены в полном объеме без изменения предложения $ZANO или графика эмиссии. Финансирование поступит из фонда развития, личных средств членов команды и внешних спонсоров. Биржам теперь необходимо тщательно проверить данные за месяц, транзакцию за транзакцией, прежде чем возобновить доступ.
«На данный момент никаких действий не требуется», — сообщила команда пользователям в своих социальных сетях.
