Ошибка в блокчейне Zano
Zano раскрыл детали ошибки, которая привела к редкому 30-дневному откату блокчейна. Злоумышленник использовал недостаток проверки в Gateway Addresses, чтобы создать около 18,4 миллиона ZANO за одну транзакцию, а затем повторил этот трюк с fUSD. Первая атака оставалась незамеченной почти месяц, поскольку механизмы конфиденциальности Zano затрудняли отличить поддельные монеты от легитимных.
Механика атаки
30-дневный откат блокчейна Zano звучал радикально, но команда объяснила, что скрывалось за этим решением, и механика оказалась еще более странной. Ошибка, возникшая с Hard Fork 6, позволила злоумышленнику создать монеты, которые сеть приняла за подлинные, начиная с 29 августа. По словам разработчиков, первая настоящая атака создала 2^64 базовых единиц, что составляет примерно 18,4 миллиона ZANO, за одну транзакцию. Никто не заметил этого почти месяц.
«Короче говоря, каждая транзакция Zano должна доказывать, что монеты были созданы в соответствии с правилами консенсуса», — объяснила команда.
Когда внутренние инструменты Zano подали сигнал тревоги 25 сентября, поддельное предложение запуталось в системе конфиденциальности, созданной для усложнения отслеживания транзакций. Проблемы начались с Gateway Addresses, нового типа адресов, введенного в Hard Fork 6 для упрощения интеграции Zano с централизованными обменными платформами (CEX), мостами и другими сервисами.
Недостаток проверки
Выходы Gateway раскрывают сумму и идентификатор актива, в отличие от стандартных конфиденциальных выходов Zano, где оба параметра скрыты. Однако реализация была лишена критической проверки. Zano сообщил, что злоумышленник смог создать специально рассчитанный идентификатор актива, который удовлетворял требованиям сети, в то время как произвольная сумма проскальзывала в скрытый выход.
«Эти монеты функционировали как подлинные ZANO и могли быть потрачены нормально», — отметила команда.
Злоумышленник зарегистрировал Gateway Address 28 августа, заплатив требуемую комиссию в 100 ZANO, и, по всей видимости, проверил, примет ли Zano сконструированный несуществующий актив. На следующий день началась настоящая атака. Одна транзакция создала примерно 18,4 миллиона ZANO, которые в настоящее время оцениваются примерно в 102 миллиона долларов.
Последствия атаки
Почти месяц спустя, 24 сентября, злоумышленник сделал два легитимных депозита по 0,05 ZANO каждый, проверяя обычный маршрут депозита. 25 сентября было создано еще 18,4 миллиона ZANO, за которым последовал тот же маневр с 2^64 базовыми единицами, используя стабильную монету fUSD. В общей сложности это более 200 миллионов долларов в незаконных криптотокенах.
Zano проводил тестирование с использованием искусственного интеллекта (AI), командные аудиты и программы по поиску ошибок до Hard Fork 6, но никто не обнаружил уязвимость. «Первая атака оставалась незамеченной почти месяц, потому что увеличенный выход выглядел как любой другой частный выход», — сказала команда.
Решение проблемы
Как только поддельные монеты попали в систему конфиденциальных транзакций Zano, определить, куда именно они ушли, стало другой задачей. Кольцевые подписи смешивают расходы с другими выходами, вызывая неопределенность, которая накапливается каждый раз, когда монеты перемещаются. Zano просканировал каждый выход, потенциально связанный с тремя транзакциями создания.
«Это конфиденциальность, работающая так, как задумано», — отметил Zano.
«Единственный способ проверить целостность предложения — продолжить цепочку с точки, предшествующей первой атаке», — подробно объяснила команда. Эта точка была блоком 3,833,000, до Hard Fork 6. Hard Fork 7 перезапустил цепочку оттуда и отключил Gateway Addresses, что означает, что транзакции, вознаграждения за стекинг и добытые блоки за затронутый период больше не существуют в обновленном реестре.
Восстановление и будущее
Zano также сообщил, что затронутые балансы будут полностью восстановлены без изменения предложения или графика эмиссии ZANO. Финансирование будет поступать из фонда разработки, личных средств членов команды и внешних вкладчиков. Биржи теперь должны просмотреть месяц активности, транзакция за транзакцией, прежде чем снова открыть доступ.
«Сейчас никаких действий не требуется», — сообщила команда пользователям в своих социальных сетях.
Команда Zano объявила во вторник, что была применена горячая фиксация, и «сеть стабильна на…»