Русскоязычный журнал про Zcash Русскоязычный журнал

Уязвимость в Orchard: как Zcash провёл скоординированное обновление сети

На основе информации в блоге разработчиков Zodl | Перевёл: ruzcash

Что произошло

Вечером в понедельник, 1 июня, экосистема Zcash запустила скоординированное сетевое обновление в ответ на проблему, затронувшую Orchard, новейший экранированный пул Zcash. В рамках этих усилий разработчики, операторы инфраструктуры, майнеры, биржи и другие ключевые независимые участники сети согласовали временную приостановку майнинга транзакций, связанных с Orchard, пока разворачивалось обновление на уровне протокола.

Устранение проблемы проходило в два этапа. Каждый из них активировался через консенсус на уровне всей сети:

  • Первым шагом стала активация софтфорка, который временно отключил Orchard. Он запретил как создание новых Orchard-выходов, так и расходование уже существующих средств в Orchard. Прямой патч раскрыл бы слишком много информации о характере проблемы всем, кто получил бы доступ к обновлённому коду. Поэтому первоначальный шаг был направлен на то, чтобы ограничить раскрытие деталей уязвимости.
  • Вторым шагом стало сетевое обновление в формате хардфорка, необходимое для устранения уязвимости и полного восстановления функциональности Orchard. Хардфорк потребовался потому, что для полноценного исправления нужно было обновить схему доказательства с нулевым разглашением, используемую в Orchard.

Обновление уже завершено, а транзакции Orchard снова включены.

Нет никаких признаков того, что уязвимость была использована. Средства пользователей оставались в безопасности на протяжении всего процесса развёртывания. Проблема не затронула конфиденциальность средств ни в одном из пулов Zcash. Также не было выявлено никакого влияния на общий объём предложения ZEC.

Это было второе обновление протокола Zcash, вызванное соображениями безопасности, с момента запуска сети в 2016 году. Проблема была обнаружена, подтверждена, устранена и закрыта в течение нескольких дней. Это показывает как глубину протокольной экспертизы разработчиков Zcash, так и устойчивость уже выстроенных процессов ответственного раскрытия информации.

Ключевые моменты

  • Уязвимость корректности в экранированном пуле Zcash Orchard была обнаружена и успешно устранена.
  • Нет никаких признаков того, что уязвимость была использована. Несанкционированного создания стоимости не обнаружено. Общий объём предложения ZEC остаётся в безопасности.
  • Проблема не затронула конфиденциальность средств ни в одном из пулов Zcash.
  • Исследователь Zcash Тейлор Хорнби обнаружил уязвимость в рамках продолжающихся аудитов безопасности Zcash.
  • Транзакции Orchard были временно приостановлены примерно на 24 часа, пока обновление разворачивалось и активировалось.
  • ZODL разработала исправление и возглавила координацию с независимыми участниками экосистемы Zcash.
  • Средства пользователей оставались в безопасности на протяжении всего реагирования на инцидент и процесса обновления сети.
  • Проблема затрагивала только Orchard, новейший экранированный пул Zcash. Транзакции Sapling и прозрачные транзакции Zcash не были затронуты и продолжали работать во время обновления.
  • ZEC, находящиеся на биржах, не были затронуты и оставались доступными для торговли на протяжении всего развёртывания.
  • Zcash Foundation, майнеры, операторы нод, поставщики кошельков, операторы инфраструктуры, биржи и другие участники экосистемы скоординировали развёртывание обновления.
  • Поскольку проблема требовала изменения правил консенсуса, её нельзя было устранить только обычным патчем программного обеспечения ноды.
  • Информация была также раскрыта сопровождающим других протоколов, в которых используется технология Orchard.

Хронология обнаружения и ответственного раскрытия

Уязвимость корректности была обнаружена в пятницу, 29 мая, Тейлором Хорнби, независимым исследователем безопасности, который проводил текущий аудит протокола от имени Shielded Labs.

После выявления проблемы Тейлор ответственно раскрыл её ключевым инженерам ZODL, которые сразу начали проверять отчёт.

В течение нескольких часов после получения сообщения, уже после полуночи в субботу, 30 мая, инженеры ZODL Дайра-Эмма Хопвуд, Крис Наттикомб и Джек Григг подтвердили наличие проблемы и начали оценивать возможные варианты исправления. Позже в тот же день они определили дальнейший путь и сообщили о проблеме генеральному директору ZODL Джошу Свихарту, который затем начал координировать реакцию экосистемы. В последующие дни инженеры, операторы инфраструктуры, майнеры и другие участники совместно готовились к активации сетевого обновления.

Это были тщательно скоординированные усилия всей экосистемы, направленные на развёртывание обновления в ускоренные сроки при минимальных сбоях, сохранении целостности сети и поддержании доверия к системе. Реакция была быстрой, потому что участники процесса понимали как срочность проблемы, так и сложность самой системы. Они опирались на уже существующие процедуры раскрытия информации и каналы координации.

Закрытая координация с майнерами и биржами началась вечером в воскресенье, 31 мая. Их уведомили о предстоящем обновлении, чтобы у них было достаточно времени на проверку и развёртывание.

Разработка патча продолжалась всю ночь с воскресенья на понедельник. Обновлённое программное обеспечение было предоставлено майнерам и биржам примерно к 00:30 UTC во вторник, 2 июня. Активация софтфорка была запланирована на 02:00 UTC во вторник, 2 июня.

Из-за сложностей с координацией при развёртывании патча первоначальная попытка активации не прошла по плану. После этого инженерная команда ZODL быстро подготовила второй патч с целевой активацией на высоте блока 3 363 426. Софтфорк успешно активировался на этой высоте примерно на два часа позже первоначального плана. После этого сеть пережила короткий период нестабильности, пока майнинговые мощности обновлялись и сходились на новых правилах консенсуса. Стабильность сети была полностью восстановлена примерно к 08:00 UTC во вторник, 2 июня.

В среду, 3 июня, в 04:10 UTC сетевое обновление было успешно завершено.

Уязвимость

Проблема представляла собой ошибку корректности, затрагивающую экранированный пул Zcash Orchard.

В протоколе вроде Zcash корректность означает, что система должна принимать только действительные транзакции и допустимые переходы состояния в соответствии с правилами протокола. Уязвимость корректности представляет собой дефект, из-за которого система может принять то, что должна была бы отклонить.

В этом случае успешная эксплуатация могла бы позволить пулу Orchard принимать недействительные переходы состояния, потенциально затрагивая гарантии учёта внутри пула.

Нет никаких признаков того, что уязвимость была использована. Механизм turnstile в Zcash, который позволяет видеть, какой объём стоимости может законно входить в экранированные пулы и выходить из них, защищает целостность лимита предложения в 21 миллион монет.

Механизм turnstile отслеживает общий баланс ZEC в каждом value pool, включая Sprout, Sapling, Orchard, transparent и lockbox, а также обеспечивает соблюдение инвариантов, определяющих, какой объём стоимости может перемещаться между пулами. Эти проверки выполняются при подключении блока и требуют знания баланса цепи по каждому пулу. Благодаря этому участники экосистемы могут сравнивать ожидаемые и наблюдаемые значения и выявлять расхождения.

Анализ, проведённый во время реагирования, не выявил признаков несанкционированного создания стоимости или какого-либо влияния на общий объём предложения ZEC.

Технические детали

Команда Zcash Open Development Lab получила отчёт о критическом дефекте в реализации схемы доказательства с нулевым разглашением Orchard в crate halo2_gadgets. Эта уязвимость была раскрыта в закрытом порядке ключевым инженерам ZODL 29 мая 2026 года в 23:53 Тейлором Хорнби. Тейлор Хорнби ранее работал инженером по безопасности в Electric Coin Company, а в данном случае выступал как независимый исследователь безопасности, привлечённый Shielded Labs для поиска уязвимостей в протоколе Orchard.

Конкретная проблема заключалась в том, что неполный цикл double-and-add в ecc::chip::mul сохранял базу (x_p, y_p) постоянной между строками цикла через q_mul_2, но при этом никогда не связывал её с реальной базой. Координаты записывались с помощью assign_advice, а цепочка постоянства не доходила ни до строки удвоения, ни до базовых якорей полного сложения. В результате prover мог выполнить неполный цикл относительно свободной константы B' != base, из-за чего gadget выдавал [a] base + [b] B' вместо [scalar] base.

Из-за этого потребовалось немедленно развернуть сетевое обновление, чтобы обновить зафиксированный verifying key для схемы Orchard. Конфиденциальность пользователей и общий лимит предложения Zcash не были затронуты. Однако эксплуатация этой ошибки могла бы позволить двойное расходование средств внутри пула Orchard.

Затронутый код и версии

Эта уязвимость затрагивает все версии crate halo2_gadgets до v0.5.0, все версии crate orchard до v0.14.0, все версии zcash_primitives до v0.28.0, а также все зависящие от них компоненты, включая zcashd версий v5.0.0-v6.12.3 и версии zebrad ниже v4.5.1.

Устранение

Исправленные релизы консенсусных нод zcashd и zebrad, zcashd v6.20.0 и zebrad v5.0.0, уже доступны. Также доступны новые релизы Rust-crate halo2_gadgets, orchard и zcash_primitives. Кроме того, были выпущены новые версии SDK для мобильных кошельков, поддерживаемых ZODL.

CVE

CVE для этой уязвимости пока не назначен.

Скоординированная реакция экосистемы

ZODL возглавила техническое реагирование и координацию, тесно взаимодействуя с Zcash Foundation и другими независимыми участниками экосистемы.

Поскольку уязвимость требовала изменения правил консенсуса, она не могла быть устранена ZODL или любой другой отдельной организацией в одиночку. Обновление требовало добровольного сотрудничества майнеров, операторов нод, операторов инфраструктуры, бирж и других участников сети, которые самостоятельно приняли решение поддержать исправление.

Итог

Обновление сработало потому, что у Zcash ещё до обнаружения уязвимости уже были необходимые элементы: постоянная проверка безопасности, процедуры ответственного раскрытия информации, опытные протокольные инженеры, выстроенные каналы координации и сеть независимых участников, готовых быстро действовать при необходимости.

Проблема была обнаружена в ходе исследования безопасности. Она была ответственно раскрыта. Протокольные инженеры подтвердили её. Исправление было разработано. Независимые участники проверили и приняли обновление.

В отличие от спорных форков, которые иногда происходят в крупных криптовалютных сетях, это обновление было скоординированной реакцией на проблему безопасности, направленной на защиту пользователей и сохранение целостности протокола.

Обновления, вызванные соображениями безопасности, не являются чем-то уникальным для Zcash. Bitcoin, Ethereum, Monero и другие крупные криптовалютные сети также реагировали на серьёзные проблемы протокольного уровня. В данном случае особенно выделяется скорость реакции. Проблема была обнаружена и решена всего за несколько дней.

Благодарности

Сообщество Zcash выиграло от профессионализма и экспертизы многих людей и организаций, участвовавших в этом реагировании.

ZODL разработала исправление и провела реагирование, но обновление стало успешным благодаря тому, что независимые участники экосистемы Zcash скоординировались вокруг общей цели: защитить пользователей и сохранить целостность сети.

Мы особенно благодарны Тейлору Хорнби за обнаружение проблемы и её ответственное раскрытие.

Мы также хотим отметить членов команды ZODL, которые возглавили работу по устранению проблемы и координации. В частности, быстрое решение этой проблемы стало возможным благодаря глубокой протокольной экспертизе Джека Григга, Дайры-Эммы Хопвуд и Криса Наттикомба. Их многолетняя работа над криптографией Zcash, дизайном протокола, правилами консенсуса и экранированными протоколами была критически важна для понимания проблемы, разработки безопасного исправления и сопровождения сети через процесс обновления.

Такую экспертизу невозможно сымпровизировать в кризис. Она формируется годами проектирования, реализации, проверки и сопровождения протокольных систем, сохраняющих конфиденциальность.

Отдельного упоминания заслуживает работа Арьи Солхи из Zcash Foundation, который сыграл важную роль в разработке патчей, позволивших zebrad поддержать сетевое обновление.

Мы также благодарны Shielded Labs за поддержку независимых исследований безопасности, а также Zcash Foundation, майнерам, операторам нод, поставщикам кошельков, операторам инфраструктуры, биржам, исследователям и партнёрам экосистемы, которые проверили, приняли и поддержали обновление.

Безопасность в эпоху ИИ

Этот инцидент также отражает более широкий сдвиг в сфере безопасности программного обеспечения.

Время этого инцидента примечательно. Уязвимость была обнаружена после выхода нового поколения инструментов для программирования и анализа с помощью ИИ в четверг, 28 мая. Во всей индустрии программного обеспечения такие системы резко снижают стоимость поиска уязвимостей.

Теперь исследователи могут проверять большие кодовые базы, анализировать сложные взаимодействия, выявлять пограничные случаи, аудировать смарт-контракты, проводить fuzz-тестирование программного обеспечения, анализировать логи и предлагать возможные пути атаки со скоростью, которая ещё несколько месяцев назад казалась немыслимой.

Разработчики используют эти инструменты, чтобы укреплять программное обеспечение, проверять код, анализировать системы, находить уязвимости и разрабатывать исправления.

В результате ускоряется гонка между обнаружением уязвимостей и их устранением.

Это не повод для паники. Это повод ещё серьёзнее инвестировать в процессы безопасности, протокольную экспертизу, ответственное раскрытие информации и готовность к координации.

В эпоху ИИ самыми сильными системами будут не те, которые делают вид, будто уязвимостей не существует. Сильнейшими будут те, которые способны быстро обнаруживать, проверять, устранять, координировать и объяснять ситуацию, когда уязвимости появляются.

Итоговые выводы

В периоды быстрого роста и инноваций в криптоиндустрии всегда возникает давление, подталкивающее к тому, чтобы срезать углы ради скорости. Этот случай показывает, зачем в Zcash существуют культура безопасности и процессы координации. Он также напоминает, что в сложных протокольных системах скорость, безусловно, имеет значение, но процесс не менее важен.

Уязвимость была обнаружена. Она была ответственно раскрыта. Затем её подтвердили, устранили, скоординировали обновление и закрыли проблему. Всё это произошло в течение нескольких дней.

Инженеры нашли решение. Независимые участники сети по всей экосистеме проверили, приняли и активировали его. Сеть продолжала работать. Транзакции Orchard были восстановлены. Средства пользователей оставались в безопасности. Конфиденциальность не была затронута. Общий объём предложения ZEC остался неизменным.

Безопасность протокола Zcash не сводится к одному аудиту, одной команде или одному обновлению. Это постоянная дисциплина, которая укрепляется через сотрудничество, строгую проверку, ответственное раскрытие информации, глубокую экспертизу и эффективную координацию.

Этот инцидент показал, что эти системы работают.

Обновление от ruzcash

Позднее в ряде новостных публикаций появилась ошибочная информация о том, что сеть Zcash якобы остановилась на несколько часов. По сообщениям участников сообщества, первым это утверждение распространил аккаунт @WuBlockchain, позднее удаливший публикацию, однако несколько СМИ уже успели подхватить неверную интерпретацию. В действительности проблема была связана не с остановкой сети, а с тем, что несколько обозревателей блоков не успели обновить свою инфраструктуру и перестали своевременно отображать новые блоки.

Подпишитесь на рассылку!

Никакого спама!
Только новости и видео PRO.ZCASH


Комментировать статью

Форма комментария

Связаться через Zcash-сообщение

Автор pro.zcash может получить ваше сообщение по указанному Zcash-адресу.

Для этого нужен кошелёк с поддержкой защищённых транзакций. Просто отсканируйте QR-код справа.

Сообщества pro.zcash