Zebra 4.3.1: Correcciones de Seguridad Críticas, Minería Dockerizada y Endurecimiento de CI

Zebra 4.3.1: Correcciones de Seguridad Críticas, Minería Dockerizada y Endurecimiento de CI

Zebra 4.3.1: correcciones de seguridad críticas, minería en Docker y refuerzo de la integración continua. Actualiza para disfrutar de mayor seguridad y rendimiento.

April 23, 2026· 6 min read
0 score

Estamos lanzando Zebra 4.3.1 hoy. Esta versión contiene correcciones para varias vulnerabilidades, y todos los operadores de nodos están fuertemente alentados a actualizar inmediatamente.

Además de la corrección de seguridad, esta versión introduce una configuración de minería Dockerizada, gestión automatizada de puntos de control (checkpoints) y una serie de mejoras de endurecimiento en CI (Integración Continua).

Avisos de Seguridad

CVE-2026-40880: Vulnerabilidad de Consenso en el Caché de Verificación de Transacciones

Un error lógico en el caché de verificación de transacciones de Zebra podría haber permitido que un minero malicioso indujera una bifurcación de consenso entre los nodos Zebra y el resto de la red Zcash. La causa raíz fue una optimización de rendimiento que omitía la re-verificación de transacciones previamente aceptadas en el mempool, sin considerar el hecho de que la validez de una transacción puede depender de la altura de bloque.

Eliminamos la optimización por completo, ya que se consideró demasiado arriesgada para corregir en el lugar. Ahora la verificación siempre se realiza completamente contra la altura de bloque actual, independientemente de la aceptación previa en el mempool.

Gracias a @sangsoo-osec por una presentación de aviso exhaustiva que identificó el problema de bloqueo de tiempo (lock time), y a @shieldedonly por un aviso enviado independientemente —recibido mientras ya estábamos trabajando en el primero— que identificó dimensiones adicionales de la misma vulnerabilidad.

CVE-2026-40881: Agotamiento de Recursos en Deserialización de addr/addrv2

Al deserializar mensajes addr o addrv2, Zebra asignaba memoria para hasta 233.000 entradas antes de verificar el límite especificado por el protocolo de 1.000. Un atacante podría explotar esto enviando múltiples mensajes de tamaño excesivo a través de diferentes conexiones, potencialmente llevando a un nodo Zebra a un estado de falta de memoria (out-of-memory).

La corrección cambia el método max_allocation() para los tipos relevantes para retornar 1000, limitando la asignación antes de que comience la deserialización en lugar de después.

Gracias a @Zk-nd3r por encontrar y reportar el problema, y por sugerir la corrección.

Divergencia de Consenso en el Manejo de Tipos de Hash Sighash Transparentes

Después de una refactorización de la verificación de transacciones transparentes de Zebra, se omitió inadvertidamente una regla de consenso que restringe los tipos de hash sighash válidos para transacciones V5. La regla había sido aplicada previamente dentro del código de verificación C++; cuando la verificación fue reestructurada para que solo la verificación central permaneciera en C++ y el resto se moviera a Rust mediante callback, la validación del tipo de hash no fue trasladada. Como resultado, los nodos Zebra podrían aceptar transacciones que los nodos zcashd rechazarían correctamente, creando una bifurcación de consenso.

También se identificó una divergencia relacionada en transacciones pre-V5 (V4). zcashd serializa el byte raw de hash_type directamente en la pre-imagen sighash V4 y solo lo enmascara con 0x1f para la lógica de selección, preservando bits no canónicos (ej. 0x41) en el digest. Zebra, en cambio, canonicalizaba el byte antes de calcular el sighash, produciendo un digest diferente. Esto significaba que una transacción V4 firmada con un hash_type no canónico —válida y aceptada por zcashd— sería rechazada por Zebra debido a una discrepancia de sighash, creando una segunda bifurcación de consenso en dirección opuesta.

La corrección agrega la validación faltante del tipo de hash para transacciones V5 en el callback de Rust, e introduce una ruta de sighash de bytes raw para transacciones V4 que preserva la semántica de pre-imagen de zcashd. Ambas correcciones están incluidas en zcash_script 0.4.4 y zcash_transparent 0.6.4.

Nuestros agradecimientos por el descubrimiento inicial de esta vulnerabilidad van a Alex "Scalar" Sol y también a @sangsoo-osec por un aviso enviado independientemente posterior que confirmó la misma vulnerabilidad.

Pánico por Punto de Identidad rk en Verificación de Transacciones

Las transacciones Orchard incluyen un campo rk — una clave validadora aleatorizada y un punto de curva elíptica. Mientras que la especificación de Zcash permite que rk sea el valor de identidad, el crate orchard entraría en pánico al encontrarlo, bloqueando el nodo. Un atacante podría explotar esto enviando una transacción elaborada con un rk de identidad.

La corrección, acordada con los desarrolladores de zcashd que comparten la misma exposición, prohíbe el rk de identidad en el punto de análisis de la transacción. Esto se consideró el enfoque más seguro, ya que corregirlo dentro del crate orchard habría hecho pública la vulnerabilidad antes de que los nodos pudieran ser parcheados. La especificación de Zcash ha sido actualizada en consecuencia.

Nuestros agradecimientos por el descubrimiento de esta vulnerabilidad van a Alex "Scalar" Sol.

Denegación de Servicio mediante Solicitudes JSON-RPC Interrumpidas desde Clientes Autenticados

El middleware HTTP JSON-RPC de Zebra trataba un fallo al leer el cuerpo de la solicitud HTTP entrante como un error irrecuperable, abortando el proceso en lugar de retornar una respuesta de error. Un cliente que se desconectaba después de enviar solo parte de un cuerpo de solicitud, por ejemplo, reiniciando la conexión TCP a mitad de la transferencia, era suficiente para desencadenar el bloqueo. La vulnerabilidad solo podía ser explotada por clientes RPC autenticados. Los nodos ejecutando los valores predeterminados enviados, con RPC vinculado a localhost y autenticación por cookie activada, no eran vulnerables. La corrección propaga los fallos al leer el cuerpo de la solicitud HTTP como respuestas de error ordinarias, por lo que Zebra ahora rechaza solicitudes truncadas o interrumpidas en lugar de bloquearse.

Mejoras de Seguridad

Auditoría de Cadena de Suministro y Licencias en CI

CI ahora ejecuta verificaciones de avisos, escaneo de cumplimiento de licencias y auditoría cargo-vet en cada pull request. Esto asegura que nuevas dependencias sean evaluadas antes de llegar a la base de código, reduciendo la exposición a vulnerabilidades de la cadena de suministro. (#10455)

Política de Seguridad Actualizada

SECURITY.md ha sido actualizado para incluir una clave de cifrado pública, dando a los investigadores de seguridad un canal claro y seguro para divulgación responsable. (#10460)

Documentación de Avisos de Seguridad

Avisos de seguridad pasados han sido documentados en los changelogs, mejorando el registro histórico y la transparencia en torno a la postura de seguridad de Zebra. (#10433)

Nuevas Características

Configuración de Minería Dockerizada

Se ha agregado una configuración de minería Dockerizada a Zebra, haciendo más fácil para operadores de nodos y desarrolladores ejecutar un entorno de minería junto a su nodo sin gestionar dependencias locales manualmente. (#10301)

Actualizaciones Automatizadas de Checkpoints y Alturas de Fin de Soporte

Las actualizaciones de checkpoints y el seguimiento de alturas de fin de soporte ahora están automatizadas en CI. Esto era previamente un paso manual, y automatizarlo reduce el riesgo de error humano y mantiene los checkpoints de Zebra actualizados con menos sobrecarga. (#10459)

Correcciones de Errores

Rango de Longitud de Datos de Entrada en Proptest

Se ha corregido un problema con el rango arbitrario de longitud de datos de entrada en pruebas basadas en propiedades para la lógica de cadena, mejorando la confiabilidad y corrección del conjunto de pruebas. (#10431)

Otros Cambios

  • Los títulos de PR ahora deben seguir el formato Conventional Commits, aplicado en CI, manteniendo nuestro changelog y automatización de lanzamientos consistentes. (#10456)
  • El README ha sido actualizado para referenciar la etiqueta de instalación correcta de v4.3.0. (#10432)

Actualización

Recomendamos fuertemente que todos los operadores de nodos Zebra actualicen a 4.3.1 tan pronto como sea posible, particularmente debido a la vulnerabilidad de consenso descrita anteriormente. No hay soluciones alternativas conocidas — actualizar es la única forma de asegurar que su nodo permanezca en la cadena correcta y esté protegido contra bifurcaciones maliciosas. Pueden encontrar el lanzamiento en GitHub.

Gracias a Nuestros Contribuyentes

Este lanzamiento fue posible gracias al trabajo de @conradoplg, @gustavovalverde, @mpguerra, @oxarbitrage, @arya2 y @upbqdn. Gracias por sus continuas contribuciones a Zebra. También extendemos nuestro agradecimiento a ZODL y Shielded Labs por sus esfuerzos de coordinación a lo largo de este lanzamiento.

Zebra es la implementación independiente de Zcash basada en Rust de la Zcash Foundation. Aprende más en github.com/ZcashFoundation/zebra.

Traducción del original en inglés de Zcash Foundation


Zcash en Español

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.

Zcashers Hispanos

Related Articles