Разработчики Zcash на этой неделе совершили редкое для криптовалюты достижение: они обнаружили критическую ошибку, отключили затронутую систему, устранили её и вернули всё в рабочее состояние менее чем за неделю. Ни эксплуатации уязвимости, ни потери средств, ни нарушения конфиденциальности.
Уязвимость, обнаруженная 29 мая независимым исследователем Тейлором Хорнби в ходе аудита, затронула схему доказательства с нулевым разглашением, обеспечивающую работу защищенного пула Orchard в Zcash. Простыми словами: ошибка могла позволить кому-то подделать действительные транзакции внутри пула, потенциально обеспечив ограниченное двойное расходование. Фонд Zcash подтвердил, что не было никаких доказательств того, что уязвимость когда-либо была использована.
Как разворачивалось устранение
Ответ был реализован в два этапа. Сначала была развернута аварийная мягкая форка на высоте блока 3 363 426, эффективно отключившая транзакции Orchard примерно с 1–2 июня. Затем последовало настоящее исправление — жесткий форк под названием NU6.2, активированный 3 июня в 00:05 EDT, примерно на блоке 3 364 600, который внедрил обновленную схему доказательства, устранившую уязвимость и восстановившую полную функциональность Orchard.
Переход прошел не совсем гладко. Zcash Open Development Lab (ZODL) признал, что сеть на короткое время стала нестабильной, пока майнеры обновляли программное обеспечение. Производство блоков было приостановлено более чем на четыре часа 3 июня, пока инфраструктура майнинга сети не успела догнать.
Тем не менее, общий результат был чистым. Не было обнаружено несанкционированного создания стоимости. Конфиденциальность пользователей осталась нетронутой. И к тому времени, когда осела пыль, защищённое предложение Zcash превысило 4 миллиона ZEC.
Технические детали имеют значение
Доказательства с нулевым разглашением являются криптографической основой функций конфиденциальности Zcash. Они позволяют пользователям доказать корректность транзакции, не раскрывая никаких деталей об отправителе, получателе или сумме. Пул Orchard, представленный в 2022 году, является последней и наиболее продвинутой версией этой системы защищенных транзакций.
Ошибки в области «надёжности» в нулевом знании-контуре — это одна из самых серьёзных проблем. Надёжность — это свойство, гарантирующее, что никто не может создать достоверно выглядящее доказательство для ложного утверждения. Если эта гарантия нарушается, кто-то теоретически может создавать монеты из ничего или тратить одни и те же монеты дважды, при этом сеть считает, что всё проверяется корректно.
Следует отметить, что это лишь второй раз в истории Zcash, когда был реализован обновление протокола, обусловленное вопросами безопасности, что подчеркивает редкость и серьезность проблемы. ZODL координировала реакцию вместе с Фондом Zcash, при этом техническое решение было сосредоточено на Rust-основанном клиенте Zebra.
Реакция рынка и что это означает для инвесторов
Токен вырос на 5–14% в течение нескольких часов после экстренного объявления, даже несмотря на то, что весь криптовалютный рынок сталкивался со своей собственной нестабильностью.
Четырехчасовая остановка создания блоков — это реальные потери, и все, кто запускал временно чувствительные операции в сети, ощутили это затруднение. Но в иерархии негативных последствий для критической уязвимости доказательства с нулевым разглашением несколько часов простоя едва заметны.

