Shielded Labs recomienda que los exchanges, custodios, proveedores de infraestructura y cualquiera que ejecute un nodo zcashd accesible públicamente reduzcan su superficie de ataque colocando Zebra frente a él. Se trata de un cambio simple y de bajo riesgo que puede reducir materialmente la exposición a ataques basados en la red sin alterar la forma en que se utiliza zcashd.
Los descubrimientos recientes de vulnerabilidades destacan por qué esto es urgente.
La AIpocalipsis de la ciberseguridad
En marzo, un investigador de sombrero blanco utilizó inteligencia artificial para descubrir una vulnerabilidad crítica en zcashd que había pasado desapercibida durante casi seis años. La vulnerabilidad fue parcheada rápidamente, pero desde entonces, el mismo investigador —junto con tres investigadores independientes adicionales— han identificado vulnerabilidades adicionales en zcashd y vulnerabilidades en Zebra que Zcash Open Development Labs (ZODL), Zcash Foundation y Shielded Labs triajaron.
Sospechamos que habrá más errores descubiertos —e incluso potencialmente explotados— con asistencia de IA en un futuro cercano.
Si actualmente ejecutas zcashd en producción, aquí tienes una mitigación simple que protege contra muchas de estas vulnerabilidades potenciales.
La mitigación: Zebra como escudo de red
Recomendamos fortalecer tus nodos zcashd de la red principal (mainnet) desplegando adicionalmente un nodo Zebra que actúe como puerta de enlace a la red. Configura tus nodos zcashd para que se conecten exclusivamente con Zebra, asegurando que zcashd no se comunique directamente con pares en internet. Esta configuración conserva la funcionalidad de zcashd al tiempo que añade una capa de validación y seguridad de memoria, protegiendo tu nodo zcashd.

Zebra gestiona todas las conexiones P2P entrantes y salientes: analiza mensajes, valida encabezados de bloques y administra pares, todo ello en Rust con seguridad de memoria.
zcashd se conecta únicamente a tu propio nodo Zebra. Nunca recibe tráfico de red que no haya sido previamente analizado, validado y reenviado por Zebra. Esto protege contra errores de corrupción de memoria, y también contra algunos posibles errores de lógica que podrían corromper el estado interno de zcashd.
Tú sigues interactuando con zcashd, asegurando que no aceptarás transacciones o bloques como válidos que no aceptarías ya sin este endurecimiento. Además, prácticamente, esto significa que no hay cambios en tu infraestructura detrás de zcashd donde reside tu lógica de negocio.
¿Qué hay de los errores en Zebra?
¿Qué ocurre si hay errores en Zebra que un atacante explota? Esta mitigación sigue siendo buena en ese escenario, porque si un exploit bloquea tu nodo Zebra, o en la mayoría de los casos de posible corrupción de ese nodo, tu nodo zcashd sigue sirviendo como otra capa de defensa. Si tu nodo Zebra se bloquea o deja de retransmitir bloques y transacciones, entonces estás en un escenario de "parada segura" (fail-stop), donde tu nodo zcashd sigue operativo para atender solicitudes locales, pero está desconectado del resto de internet. Esa es una posición relativamente buena en la que estar mientras investigas qué ha deshabilitado tu nodo Zebra.
¿Qué hay de las bifurcaciones de cadena?
Las bifurcaciones de cadena accidentales o maliciosas son siempre una posibilidad. Las bifurcaciones de cadena pueden ocurrir incluso cuando todos los nodos de la blockchain utilizan el mismo software, pero son más probables cuando diferentes nodos ejecutan distintas bases de código. Sin embargo, esta mitigación colocará tu infraestructura en un escenario de "parada segura" (fail-stop) o "ralentización segura" (fail-slow) en ese caso:
Si la bifurcación de cadena con mayor potencia de hash es incompatible con zcashd: tu nodo Zebra seguirá la bifurcación con mayor potencia de hash, y tu zcashd rechazará todos esos bloques, lo que significa que está efectivamente desconectado de la blockchain: fail-stop.
Si la bifurcación de cadena con mayor potencia de hash es incompatible con Zebra: tu nodo Zebra seguirá la otra bifurcación de cadena —la que tiene menos potencia de hash—. Esto podría ser malo, porque significa que tu zcashd seguirá la bifurcación de cadena minoritaria, que podría quedar huérfana. Gracias a la invención de Satoshi del algoritmo de ajuste de dificultad, las actualizaciones de blockchain en tu nodo zcashd probablemente se pausarán o ralentizarán durante varias horas o días (dependiendo de la potencia de hash) a medida que el factor de dificultad se ajusta en esa bifurcación de cadena: fail-slow.
¿Qué hay de los errores en código compartido por zcashd y Zebra?
Algunos códigos —notablemente las bibliotecas criptográficas de bajo nivel— son compartidos entre ambas bases de código. Si el impacto de dicho error compartido se limita a deshabilitar un nodo, entonces tu infraestructura está en el escenario de parada segura: tu nodo Zebra será deshabilitado y tu zcashd estará disponible para operación local pero desconectado de la blockchain.
En cualquier caso, esta mitigación probablemente no aumenta tu exposición a errores, excepto por el problema de la bifurcación de cadena minoritaria descrito anteriormente.
Configuración
Requisitos previos: Una instalación existente de zcashd y un nodo Zebra en ejecución y sincronizado (guía de instalación).
Zebra no requiere configuración especial. Escucha en el puerto 8233 (mainnet) por defecto y aceptará la conexión localhost de zcashd como cualquier otro par.
Configura zcashd añadiendo una línea a zcash.conf:
# Conectar ÚNICAMENTE a Zebra en localhost.# Deshabilita el descubrimiento de semillas DNS, descubrimiento de pares y escucha entrante. connect=127.0.0.1:8233
Después de reiniciar ambos nodos, verifica:
# Debería mostrar exactamente un par (127.0.0.1)zcash-cli getpeerinfo | jq '.[].addr'
Dado que zcashd con connect configurado no enlaza un puerto de escucha, no hay conflicto de puertos con Zebra en la misma máquina.
Monitoreo
El comportamiento de tu zcashd debería ser el mismo que antes. Quizás quieras añadir monitoreo para el estado de tu nuevo nodo Zebra.
Para más ayuda
¿Preguntas? Contacta a Shielded Labs. Ofrecemos soporte a socios y servicios de asesoría para ayudar a exchanges, custodios y proveedores de infraestructura a integrar y operar Zcash de manera más efectiva.
Por: @zooko, @shieldedmark, @shieldedjudah
Agradecimientos a nuestros socios de Zcash Foundation y ZODL por las discusiones sobre este tema y por construir zcashd y Zebra.
Traducción del original en inglés de Shielded Labs.

Si quieres aprender más sobre privacidad en la economía digital descentralizada, te puedes unir a la comunidad de Zcash en Español en Telegram. Para conectar con el ecosistema digital de Zcash Español, visita nuestro Privacidad.me.


