Zebra 4.5.3 y 5.0.0: Activación de emergencia de horquilla blanda y NU6.2
Hemos lanzado recientemente Zebra 4.5.3 y Zebra 5.0.0. Estos dos lanzamientos trabajan en conjunto para abordar un error crítico en el circuito Orchard Action: la versión 4.5.3 implementó una bifurcación suave de emergencia que deshabilitó temporalmente las acciones Orchard mientras se preparaba la solución, y la 5.0.0 activó NU6.2, que rehabilita Orchard usando el circuito corregido. Recomendamos encarecidamente a todos los operadores de nodos que actualicen a Zebra 5.0.0 lo antes posible, o a 4.5.3 si no pueden actualizar a 5.0.0 antes de la altura de activación de NU6.2. Qué ocurrió El viernes 29 de mayo, Taylor Hornby —un investigador de seguridad independiente que realiza una auditoría de protocolo continua en nombre de Shielded Labs— descubrió una vulnerabilidad crítica de solidez en el circuito de prueba de conocimiento cero de Orchard. Taylor divulgó el problema de manera responsable a los ingenieros principales de ZODL esa noche. En cuestión de horas, los ingenieros de ZODL Daira-Emma Hopwood, Kris Nuttycombe y Jack Grigg confirmaron el problema y comenzaron a evaluar opciones de remediación. Durante los días siguientes, ingenieros, operadores de infraestructura, mineros y otros participantes del ecosistema trabajaron juntos para preparar una actualización coordinada, manteniendo los detalles de la falla en privado para minimizar el riesgo de explotación antes de que pudiera desplegarse una solución. La coordinación privada con mineros y exchanges comenzó la noche del domingo 31 de mayo. Un primer intento de activación de bifurcación suave encontró desafíos durante el despliegue del parche; los ingenieros de ZODL produjeron rápidamente un segundo parche dirigido a la altura de bloque 3.363.426, que se activó con éxito aproximadamente a las 02:00 UTC del 2 de junio. Esta bifurcación suave rechazó temporalmente todas las transacciones y bloques que contenían acciones Orchard. El miércoles 3 de junio, a las 00:05 EDT, la actualización de red mediante bifurcación dura NU6.2 se activó con éxito, rehabilitando Orchard con el circuito corregido. Esta fue la segunda actualización de protocolo impulsada por la seguridad en la historia de Zcash desde su lanzamiento en 2016. La vulnerabilidad fue detectada antes de que ocurriera cualquier explotación conocida. No hay evidencia de creación no autorizada de valor. El mecanismo de torniquete de Zcash (que rastrea el saldo total de ZEC en todos los pools de valor) confirmó que el suministro total permaneció intacto en todo momento. La privacidad del usuario no se vio afectada. Las transacciones Sapling y transparentes continuaron operando normalmente durante todo el incidente. La vulnerabilidad El problema era un error de solidez en la implementación del circuito de prueba de conocimiento cero de Orchard en el crate halo2_gadgets. En un protocolo como Zcash, la solidez significa que el sistema solo debería aceptar transacciones y transiciones de estado válidas. Una vulnerabilidad de solidez es aquella que podría permitir que el sistema acepte algo que debería rechazar. En este caso, una explotación exitosa podría haber permitido que el pool Orchard aceptara transiciones de estado inválidas, lo que potencialmente permitiría el doble gasto de fondos dentro de Orchard, aunque sin capacidad de inflar el suministro total de ZEC, que está protegido por el mecanismo de torniquete de Zcash. Versiones afectadas Esta vulnerabilidad afecta a:
- Todas las versiones de halo2_gadgets anteriores a la v0.5.0
- Todas las versiones de orchard anteriores a la v0.14.0
- Todas las versiones de zcash_primitives anteriores a la v0.28.0
- zcashd v5.0.0–v6.12.3
- Versiones de zebrad inferiores a la v4.5.1 (todos los lanzamientos anteriores)
Zebra 4.5.3: bifurcación suave de emergencia Zebra 4.5.3 implementa la bifurcación suave que deshabilita temporalmente las acciones Orchard. Después de la altura de activación, los nodos rechazan cualquier transacción o bloque que contenga acciones Orchard. Para preservar la conectividad de la red durante la ventana de actualización, la versión 4.5.3 no aumenta la puntuación de DoS de los pares que continúan retransmitiendo bloques o transacciones que contienen Orchard. Un parche directo habría revelado demasiado sobre la naturaleza de la falla a cualquiera con acceso al código actualizado. Deshabilitar Orchard como primer paso limitó la divulgación de los detalles de la vulnerabilidad mientras se finalizaba la solución del circuito. Seguridad
- GHSA-jfw5-j458-pfv6 (Crítica): Deshabilita temporalmente las acciones Orchard mediante bifurcación suave en la altura 3.363.426 en Mainnet para mitigar un error crítico de solidez en el circuito Orchard Action. Orchard se rehabilita en la actualización NU6.2 subsiguiente en Zebra 5.0.0.
Cambios
- Se establece la altura de activación de la bifurcación suave para deshabilitar Orchard en la altura de bloque 3.363.426 en Mainnet.
- Los nodos que ejecutan 4.5.3 no penalizan a los pares por retransmitir datos que contienen Orchard durante la ventana intermedia.
Actualización Los operadores de nodos que no pueden pasar inmediatamente a Zebra 5.0.0 deberían actualizar a 4.5.3 para mantenerse en la cadena correcta. Puedes encontrar el lanzamiento en GitHub. Zebra 5.0.0: actualización de red NU6.2 Zebra 5.0.0 activa la actualización de red NU6.2, que rehabilita las acciones Orchard usando el circuito corregido y cierra permanentemente la vulnerabilidad abordada por la bifurcación suave 4.5.3. Se requirió una bifurcación dura porque remediar un error en el circuito de prueba de conocimiento cero requiere actualizar la clave de verificación fijada (pinned verifying key), un cambio que no puede realizarse únicamente mediante un parche de software de nodos. NU6.2 se activa en:
- Mainnet: altura de bloque 3.364.600
- Testnet: altura de bloque 4.052.000
Recomendamos que todos los operadores de nodos actualicen antes de la altura de activación de mainnet. Si la altura de activación ya ha pasado y tu nodo siguió una bifurcación, necesitarás sincronizar desde cero o desde un estado respaldado tomado antes de la altura de activación. Añadido
- Se activa la actualización de red NU6.2 (ID de rama de consenso 0x5437f330) en la altura 3.364.600 en Mainnet y 4.052.000 en Testnet. NU6.2 rehabilita las acciones Orchard con el circuito Orchard Action corregido y dirige las pruebas Orchard a una clave de verificación por circuito (InsecurePreNu6_2 / FixedPostNu6_2).
- Se anuncia la versión de protocolo de red 170150 para NU6.2 en Mainnet, Testnet y Regtest.
Cambios
- Se establece la altura predeterminada de la bifurcación suave temporal para deshabilitar Orchard en Testnet en 4.048.500; la ventana de deshabilitación se extiende hasta que NU6.2 rehabilita las acciones Orchard en la altura 4.052.000.
Seguridad
- GHSA-jfw5-j458-pfv6: Se añade una regla de consenso que rechaza los paquetes Orchard cuya prueba tenga un tamaño no canónico, efectiva desde la altura de activación de NU6.2. Esto cierra permanentemente la vulnerabilidad que la bifurcación suave 4.5.3 mitigaba.
Actualización Recomendamos encarecidamente que todos los operadores de nodos de Zebra actualicen a 5.0.0 antes de la altura de bloque 3.364.600 en Mainnet. Actualizar es la única forma de asegurar que tu nodo siga la cadena correcta después de que NU6.2 se active. Puedes encontrar el lanzamiento en GitHub. Por qué importa el pool Orchard El pool blindado Orchard es la pieza central de la arquitectura de privacidad de Zcash, introducido con NU5 en 2022. Construido sobre el sistema de pruebas Halo 2, es el primer pool de Zcash que no requiere configuración de confianza, un objetivo de larga data para el ecosistema. Durante el último año ha crecido significativamente, y hoy en día mantiene una fracción sustancial del ZEC en circulación. El mecanismo de torniquete de Zcash, que rastrea el saldo total de ZEC en todos los pools de valor (Sprout, Sapling, Orchard, transparente y lockbox) y hace cumplir invariantes sobre cuánto valor puede fluir entre ellos, fue una parte importante de lo que hizo manejable este incidente. Proporcionó una verdad de referencia que los participantes del ecosistema pudieron usar para confirmar que el límite de suministro permanecía intacto, incluso mientras se desarrollaba la solución del circuito Orchard. Respuesta coordinada Esta actualización tuvo éxito porque las piezas necesarias ya estaban en su lugar: revisión de seguridad continua por investigadores independientes, procedimientos establecidos de divulgación responsable, ingenieros de protocolo experimentados y una red de participantes independientes que actuaron rápidamente cuando se requirió. ZODL desarrolló la remediación y lideró la coordinación, pero la actualización requirió cooperación voluntaria de mineros, operadores de nodos, operadores de infraestructura, exchanges, proveedores de billeteras y otros participantes de la red, todos actuando de manera independiente en torno a un objetivo compartido de proteger a los usuarios y preservar la integridad de la red. A diferencia de las bifurcaciones conflictivas que a veces se ven en la industria, esta fue una respuesta de seguridad. El problema fue descubierto, divulgado de manera responsable, confirmado, remediado y resuelto en unos pocos días. Estamos orgullosos de cómo el ecosistema se unió. Agradecimientos La Fundación Zcash extiende su sincero agradecimiento a Taylor Hornby por descubrir y divulgar de manera responsable esta vulnerabilidad, y a Shielded Labs por apoyar la investigación de seguridad independiente que lo hizo posible. Estamos agradecidos con los ingenieros de ZODL cuya profunda experiencia en protocolos hizo posible una remediación rápida, en particular Jack Grigg, Daira-Emma Hopwood y Kris Nuttycombe. Un reconocimiento especial para Arya Solhi de la Fundación Zcash, quien desempeñó un papel instrumental en el desarrollo de los parches de Zebra que permitieron la actualización de red. También agradecemos a los mineros, operadores de nodos, exchanges, proveedores de billeteras y equipos de infraestructura que revisaron y adoptaron la actualización rápidamente, y a todos los socios del ecosistema que fueron notificados y coordinaron junto a nosotros. Gracias a nuestros contribuyentes Zebra 4.5.3 y 5.0.0 fueron posibles gracias al trabajo de @arya2 y @conradoplg, así como de los ingenieros de ZODL. Gracias por su dedicación continua a Zebra. Zebra es la implementación independiente de la Fundación Zcash del protocolo Zcash, basada en Rust. Más información en github.com/ZcashFoundation/zebra. Traducción del original en inglés de la Zcash Foundation.
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.
Discussion in the ATmosphere