Vulnerabilidad de Zcash Remediada Exitosamente

Vulnerabilidad de Zcash Remediada Exitosamente

Un equipo de expertos ha solucionado rápidamente una vulnerabilidad de Zcash, garantizando así la seguridad de los fondos y la privacidad de los usuarios, sin que ello haya afectado al suministro de ZEC.

April 9, 2026· 7 min read
0 score

Por: Zooko Wilcox [], Daira-Emma Hopwood [†], Jack "str4d" Grigg [†], Judah Caruso [], Jason McGee [*] y Josh Swihart [†]

[*] Shielded Labs, [†] Zcash Open Development Lab

Puntos Clave

  • Una vulnerabilidad en zcashd causaba que los nodos omitieran la verificación de pruebas Sprout al procesar nuevos bloques.
  • El error no fue explotado. Los fondos de todos los usuarios, incluidos los del pool Sprout, están seguros.
  • El error solo podría haber afectado al pool Sprout en desuso, que contiene alrededor de 25k ZEC. El mecanismo de torniquete de Zcash habría prevenido cualquier inflación del suministro de ZEC, que actualmente es de alrededor de 16.630k ZEC.
  • La privacidad de los usuarios no estuvo en riesgo.
  • La vulnerabilidad fue divulgada de manera responsable por el investigador de seguridad Alex "Scalar" Sol el 23 de marzo de 2026. Un parche fue desarrollado por ingenieros de Zcash Open Development Lab (ZODL) y desplegado por todos los principales pools de minería dentro de tres días.
  • Zebra, la implementación de nodo completo desarrollada por la Zcash Foundation, no fue afectada y habría desencadenado una bifurcación de cadena si se hubiera intentado la explotación.
Versiones afectadas Versión corregida
zcashd v3.1.0 a v6.11.x zcashd v6.12.0

Resumen

El investigador de seguridad Alex "Scalar" Sol identificó una vulnerabilidad en zcashd que podría haber permitido que transacciones inválidas introducidas por un minero fueran aceptadas bajo ciertas condiciones, potencialmente drenando fondos de usuarios del antiguo pool Sprout en desuso. La vulnerabilidad no tuvo impacto en la privacidad de los usuarios.

Ingenieros de protocolo de Zcash Open Development Lab (ZODL) desarrollaron una corrección para el error, que ha sido desplegada por pools de minería que comprenden una supermayoría del poder de hash.

El error no fue explotado, y todos los fondos de los usuarios, incluidos los mantenidos en el pool Sprout, están seguros. Puedes verificar esto ejecutando Zebra o la última versión de zcashd (v6.12.0). Cada una de estas implementaciones verifica que solo transacciones válidas han sido añadidas a la blockchain de Zcash, probando que el error no fue explotado antes de que el parche fuera desplegado por los pools de minería.

La vulnerabilidad fue reportada de manera privada y manejada mediante divulgación coordinada por ingenieros de Shielded Labs y ZODL, en coordinación con los pools de minería.

Es importante destacar que este error, y errores similares, no podrían haber sido utilizados para inflar el suministro total de ZEC. Zcash implementa "torniquetes" entre pools de valor (el pool transparente; el antiguo pool Sprout en desuso; el pool Sapling; y el pool Orchard actual), que sirven como "puertas blindadas", limitando el radio de explosión de una posible explotación. El torniquete Sprout limita la cantidad de ZEC que puede ser retirada del pool Sprout, previniendo la inflación del suministro total de ZEC y protegiendo a los usuarios que almacenan sus ZEC en otros pools de valor de ser afectados por este error o errores similares.

Este error no podría haber sido utilizado para violar la privacidad de los usuarios de Zcash. La privacidad del usuario de Zcash está protegida por cifrado de extremo a extremo entre las wallets de los usuarios, y el comportamiento de los mineros y nodos completos de Zcash —incluso si hay un error en su código— no puede violar la privacidad del usuario.

La implementación de nodo completo Zebra, escrita y mantenida por la Zcash Foundation, ha estado activa en la Mainnet de Zcash desde julio de 2023. Zebra nunca tuvo esta vulnerabilidad, y si hubiera habido un intento de explotarla, Zebra habría creado una bifurcación de cadena de la blockchain de Zcash que contendría solo transacciones válidas.

Antecedentes

Sprout fue el pool blindado original. Entró en funcionamiento con el lanzamiento de Zcash en octubre de 2016. El pool mejorado Sapling fue añadido en octubre de 2018, y Sprout fue declarado en desuso por ZIP 211 en noviembre de 2020.

Una vulnerabilidad anterior que podría haber afectado a usuarios de Sprout, que surgió de un error en un documento de criptografía pre-Zcash, fue descubierta y corregida en 2018.

No es posible depositar fondos en el pool Sprout. Ninguna wallet actualmente soporta crear nuevas transacciones Sprout, excepto para retirar fondos existentes de Sprout a otros pools usando la wallet interna de zcashd.

Al momento de escribir esto, el pool Sprout contiene aproximadamente 25.424 ZEC.

Divulgación por Terceros

Alex "Scalar" Sol reportó el problema a Shielded Labs el 23 de marzo de 2026.

Tras recibir el reporte, Shielded Labs coordinó con ingenieros principales de ZODL para validar el problema y desarrollar un parche. El parche fue escrito por Jack Grigg (str4d) y revisado por Daira-Emma Hopwood y Kris Nuttycombe.

Shielded Labs lideró el contacto con pools de minería y proveedores de infraestructura para desplegar el parche.

Los pools de minería, incluyendo ViaBTC, Luxor, F2Pool y AntPool, fueron contactados directamente para coordinar actualizaciones.

Cronología

Fecha Evento
28 de octubre de 2016 Zcash fue lanzado con el pool blindado Sprout.
28 de octubre de 2018 Se lanzó el pool blindado Sapling. Se corrigió CVE-2019-7167.
28 de julio de 2020 Esta vulnerabilidad está presente por primera vez en zcashd v3.1.0.
18 de noviembre de 2020 El pool Sprout cerró a nuevos depósitos (ZIP 211).
14 de junio de 2023 Se lanzó Zebra 1.0.0, validando todas las transacciones, incluidas las transacciones Sprout.
23 de marzo de 2026 Scalar reportó la vulnerabilidad a Shielded Labs.
24 de marzo de 2026 Shielded Labs se reunió con ingenieros de ZODL Daira-Emma Hopwood, Kris Nuttycombe y Jack Grigg (str4d) para revisar y validar la vulnerabilidad y desarrollar una corrección. Str4d escribió el parche, y Daira-Emma Hopwood y Kris Nuttycombe lo revisaron. Shielded Labs divulgó el problema a la Zcash Foundation. Shielded Labs contactó a los pools de minería de Zcash ViaBTC, Luxor y F2Pool.
25 de marzo de 2026 Luxor confirmó el despliegue del parche. Shielded Labs contactó a AntPool.
26 de marzo de 2026 F2Pool confirmó el despliegue del parche. ViaBTC confirmó el despliegue del parche. AntPool confirmó el despliegue del parche.
31 de marzo de 2026 Se lanzó zcashd v6.12.0.

Detalles de la Vulnerabilidad

La vulnerabilidad se debía a que los nodos zcashd no verificaban las pruebas Sprout cuando un nuevo bloque era conectado a la punta de la cadena.

El error fue introducido por una optimización de código incluida en el lanzamiento de zcashd v3.1.0[1] el 28 de julio de 2020, en la lógica de validación de bloques de zcashd, específicamente en cómo se maneja la verificación de pruebas Sprout durante el procesamiento de bloques.

En el flujo normal de validación, CheckBlock se invoca dos veces: una durante la aceptación del bloque y otra durante la conexión del bloque. Para evitar realizar la costosa verificación de pruebas dos veces, se pretende que la verificación de pruebas Sprout se diferida a la segunda pasada[2]. Sin embargo, esto interactuó mal con una optimización heredada de Bitcoin Core: la bandera CBlock::fChecked actúa como un caché del estado de verificación. Cuando está activada, causa que CheckBlock retorne temprano y omita la validación adicional. En las versiones afectadas, la primera pasada podía activar erróneamente la bandera fChecked, marcando todo el bloque como validado[3]. Como resultado, en la segunda pasada, CheckBlock retornaría temprano, y las pruebas Sprout no se verificarían en absoluto[4].

Las pruebas Sprout se estaban verificando correctamente cuando las transacciones eran aceptadas en el mempool, o cuando el nodo estaba reindexando. El error, por lo tanto, creó un escenario en el que transacciones inválidas podrían ser aceptadas si un minero malicioso las insertaba en un bloque. Si se explotaba, podría haber resultado en pérdida de fondos de usuarios en el pool Sprout a menos que la transacción de explotación fuera revertida por mineros retrocediendo toda la blockchain de Zcash a antes del bloque de explotación.

El parche[5] asegura que fChecked se active solo después de que todos los pasos de validación, incluida la verificación estricta de pruebas Sprout, hayan sido completados. Esto restaura el invariante de que las pruebas Sprout siempre se verifican antes de que un bloque sea aceptado.

[1] https://github.com/zcash/zcash/releases/tag/v3.1.0
[2] https://github.com/zcash/zcash/blob/db969c63f48f0f9fc518112ed0b7ace1af78b9d0/src/main.cpp#L3103
[3] https://github.com/zcash/zcash/blob/db969c63f48f0f9fc518112ed0b7ace1af78b9d0/src/main.cpp#L4939
[4] https://github.com/zcash/zcash/blob/db969c63f48f0f9fc518112ed0b7ace1af78b9d0/src/main.cpp#L4878
[5] https://github.com/zcash/zcash/commit/db969c63f48f0f9fc518112ed0b7ace1af78b9d0

Agradecimientos

Gracias a Alex "Scalar" Sol por descubrir el error con la ayuda de IA y divulgarlo de manera responsable para proteger a los usuarios de Zcash, y a David Burkett (Desarrollador de MWEB de Litecoin) por asistir en la divulgación responsable. Scalar no solicitó una recompensa ni mencionó dinero, pero Shielded Labs, ZODL, Zcash Foundation y Bootstrap han acordado otorgarle 50 ZEC cada uno (para un total de 200 ZEC) en agradecimiento por proteger a los usuarios de Zcash y fortalecer Zcash.

Agradecimientos especiales a los desarrolladores de ZODL (Daira-Emma Hopwood, Kris Nuttycombe y Jack Grigg) por su pronta revisión y corrección.

También agradecemos a la Zcash Foundation por su trabajo en Zebra. La presencia de nodos Zebra, que verificaban correctamente las pruebas Sprout, proporcionó una capa importante de protección. Una vez que Zebra estuvo activo en la Mainnet de Zcash, un intento de explotación habría resultado en una bifurcación de cadena, ayudándonos a detectar y remediar el problema más rápidamente.

También extendemos nuestro agradecimiento a Luxor, F2Pool, Antpool y ViaBTC por aplicar el parche a sus pools de minería.

Traducción del original en inglés de Shielded Labs


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