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

Рекомендация: защитите zcashd узлом Zebra и сократите поверхность атаки

Первоисточник: материал Shielded Labs | Авторы: Зуко Уилкокс, Марк Хендерсон и Джуда Карузо | Перевод и адаптация: ruzcash

Рекомендация: защитите zcashd узлом Zebra и сократите поверхность атаки. Материал Shielded Labs о Zcash.

Shielded Labs рекомендует биржам, хранителям средств, поставщикам инфраструктуры и всем операторам общедоступных узлов zcashd сократить поверхность атаки, поставив перед ними Zebra. Это простое изменение с небольшим риском. Оно заметно снижает опасность сетевых атак и не меняет порядок работы с zcashd.

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

ИИ-апокалипсис в кибербезопасности

В марте специалист по законному поиску уязвимостей с помощью ИИ обнаружил критическую ошибку в zcashd, которая почти шесть лет оставалась незамеченной. Исправление подготовили быстро. После этого тот же исследователь нашёл другие уязвимости меньшей серьёзности в zcashd и Zebra. Zcash Open Development Lab (ZODL), Zcash Foundation и Shielded Labs недавно провели их первичную оценку.

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

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

Защита: Zebra как сетевой щит

Для защиты узлов zcashd в основной сети дополнительно разверните Zebra в качестве шлюза. Настройте zcashd так, чтобы он соединялся только с Zebra и не общался напрямую с узлами в интернете. zcashd продолжит выполнять свои функции, а Zebra добавит проверку данных и защиту памяти.

  • Zebra обслуживает все входящие и исходящие одноранговые соединения (P2P): разбирает сообщения, проверяет заголовки блоков и управляет соединениями. Она написана на Rust, который обеспечивает безопасность памяти.
  • zcashd соединяется только с вашим узлом Zebra. Он не получает сетевые данные, которые Zebra ещё не разобрала, не проверила и не передала дальше. Это защищает от ошибок повреждения памяти и некоторых логических ошибок, способных повредить внутреннее состояние zcashd.
  • Вы продолжаете работать с zcashd и не принимаете транзакции или блоки, которые этот узел не счёл бы действительными без дополнительной защиты. На практике внутренняя инфраструктура и прикладная логика за zcashd не меняются.

Что будет при ошибке в Zebra?

Предположим, злоумышленник использует уязвимость Zebra. Эта схема всё равно полезна. Если атака приведёт к остановке Zebra или в большинстве случаев повредит её состояние, zcashd останется вторым уровнем защиты. Когда Zebra перестаёт работать или передавать блоки и транзакции, возникает сценарий безопасной остановки: zcashd продолжает обслуживать локальные запросы, но отключается от интернета. Это сравнительно безопасное состояние на время выяснения причин отказа Zebra.

Что будет при разделении цепочки?

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

  • Если цепочка с наибольшей вычислительной мощностью несовместима с zcashd: Zebra последует за этой цепочкой, а zcashd отклонит её блоки и фактически отключится от блокчейна. Произойдёт безопасная остановка.
  • Если цепочка с наибольшей вычислительной мощностью несовместима с Zebra: Zebra последует за другой цепочкой с меньшей мощностью. Это опасно, поскольку zcashd окажется в цепочке меньшинства, блоки которой впоследствии могут быть отброшены. Благодаря изобретённому Сатоши алгоритму регулировки сложности обновление блокчейна на узле zcashd, вероятно, остановится или замедлится на несколько часов либо дней. Точный срок зависит от вычислительной мощности и времени, необходимого для пересчёта сложности в этой цепочке. Возникнет сценарий замедленного отказа.

Что будет при ошибке в общем коде zcashd и Zebra?

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

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

Настройка

Что потребуется: установленный zcashd и работающий, полностью синхронизированный узел Zebra. См. руководство по установке.

Специальная настройка Zebra не нужна. По умолчанию она принимает соединения основной сети на порту 8233 и подключение zcashd с локального компьютера как обычное одноранговое соединение.

Добавьте одну строку в файл zcash.conf:

# Подключаться ТОЛЬКО к Zebra на этом компьютере.
# Отключает поиск начальных узлов через DNS, поиск других узлов и входящие соединения.
connect=127.0.0.1:8233

Перезапустите оба узла и выполните проверку:

# Должен отображаться ровно один узел: 127.0.0.1
zcash-cli getpeerinfo | jq '.[].addr'

После задания параметра connect zcashd не открывает порт для входящих соединений, поэтому при работе Zebra и zcashd на одном компьютере конфликт портов не возникает.

Наблюдение

Поведение zcashd должно остаться прежним. Дополнительно можно настроить наблюдение за состоянием нового узла Zebra.

Дополнительная помощь

Остались вопросы? Свяжитесь с Shielded Labs. Организация консультирует биржи, хранителей средств и поставщиков инфраструктуры по интеграции и эксплуатации Zcash.

Благодарим партнёров из Zcash Foundation и ZODL за обсуждение этой схемы и разработку zcashd и Zebra.


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

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


Поделиться статьёй

Если статья была полезна, поделитесь ею. Скопируйте ссылку ниже или выберите социальную сеть: обложка статьи добавится автоматически.

Ссылка для публикации

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

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

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

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

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

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