Actualidad

DeFi

zkLink Nova, una prueba forjada vacía su puente en Ethereum

El puente de zkLink Nova perdió entre 779.000 y 786.000 dólares en una transacción. La criptografía aguantó; la contabilidad del estado, no.

zkLink Nova, una prueba forjada vacía su puente en Ethereum
zkLink Nova, una prueba forjada vacía su puente en Ethereum

El puente de zkLink Nova hacia Ethereum se quedó vacío en una sola transacción. La noche del 28 de octubre, a las 22:21 UTC, un contrato creado por el atacante escribió su propia raíz de lote en el registro del puente y retiró 22,43 ETH más once tokens ERC-20 con pruebas que él mismo había fabricado. Las pérdidas varían según el recuento: 786.000 dólares en el más alto y 779.000 en el más bajo, con 783.100 en medio. Nadie robó una clave privada ni falsificó una firma.

Conviene entender qué custodia un puente así. zkLink Nova es un rollup agregado de capa 3 que se apoya en Ethereum y en varias capas 2, y su contrato en la red principal guarda los fondos que los usuarios depositan desde otras redes. Para autorizar una retirada, ese contrato compara la prueba de Merkle del usuario con la raíz de lote que tiene guardada para ese número. Si la raíz es correcta, la prueba demuestra pertenencia; si la raíz la escribe un tercero, la prueba demuestra lo que ese tercero quiera.

Ahí está la lección, y no es criptográfica. El sistema de pruebas funcionó como estaba diseñado: verificó contra la raíz que encontró y aprobó doce retiros seguidos. El fallo estaba antes, en el camino por el que esa raíz llegaba al contrato, y en una comprobación que daba por buena una entrega ocurrida segundos antes dentro de la misma transacción. Nova detuvo la producción de bloques el 29 de octubre y sigue sin fecha de reapertura.

Doce retiros dentro de un mismo bloque

La transacción entró en el bloque 26.294.188 y tocó dos contratos a la vez. Del escrow de ZkLink salieron 22,4313 ETH y del L1ERC20Bridge, el contrato que custodia los tokens, once saldos ERC-20. El reparto fue este.

Activo Cantidad
ETH (escrow de ZkLink) 22,4313
pufETH 245,7379
USDC 18.113,45
ezETH 12,5693
rsETH 6,8665
USDT 3.360,90
WBTC 0,1736

Los doce movimientos apuntaron a la misma dirección, la del contrato que ejecutó el ataque, y cada uno llevaba cuatro nodos de Merkle hechos a medida. Horas después, esa cartera había vaciado casi todo y el saldo en ETH bajaba de 0,001.

Al día siguiente hubo más: Parapet Labs atribuye a un actor distinto una segunda oleada a las 07:16 UTC del 29 de octubre, con 24,76 ETH y tokens de las copias del puente en Optimism, Base y otras dos redes. La cifra importa menos que el patrón: el mismo camino seguía abierto nueve horas después del primer golpe.

¿Qué demuestra una prueba ZK?

Una prueba de validez demuestra, con una comprobación barata, que un lote de transacciones se ejecutó correctamente y que el estado resultante es el que dice ser, sin que quien verifica tenga que repetir el cálculo entero.

En Nova esa verificación ocurre en Linea, la cadena primaria que fija la arquitectura de liquidación del protocolo, y después la raíz del lote viaja al resto de redes para que cada una autorice retiradas contra ella.

El circuito responde a la pregunta de si el lote se calculó bien. No responde a la de quién puede afirmar cuál es la raíz de ese lote, y esa segunda pregunta es la que se llevó el dinero. Un puente puede tener pruebas impecables y, al mismo tiempo, un procedimiento de actualización de la raíz que acepte la palabra de un contrato con permisos especiales.

Una raíz forjada que pasó todos los filtros

El puente no acepta raíces de cualquiera. En Ethereum hay una cadena de relevo: un relayer llama al contrato Arbitrator, el Arbitrator reclama un mensaje de la cadena de origen, el gateway de esa cadena avisa de vuelta y solo entonces el EthereumGateway puede escribir la raíz en ZkLink. Cada salto confía en el anterior por la dirección que llama, no por el contenido del mensaje.

El ataque cabalgó sobre esa confianza en cuatro pasos encadenados dentro de una misma transacción. Ninguno exigió romper un cifrado ni adivinar una clave: bastaba con que cada contrato reconociera al anterior por la dirección que llamaba.

  • El atacante llamó al relayer público SyncL2TxHashRelayer para reclamar un mensaje real y pendiente de Linea, que sincronizaba dos hashes de transacciones. El gateway de Linea verificó la prueba y avisó al Arbitrator, que guardó el resumen del mensaje en un hueco de almacenamiento transitorio.
  • En la misma transacción, el atacante volvió a llamar al relayer con el mismo gateway, el mismo valor y los mismos datos declarados, pero cambió el servicio de mensajes de origen por el EthereumGateway y metió dentro una llamada que envolvía la escritura de la raíz del lote 116409.
  • El gateway aceptó la llamada porque venía del Arbitrator, y ZkLink escribió la raíz elegida porque la llamada venía de su gateway. Nadie comprobó que el lote existiera ni que hubiera una prueba detrás de esa raíz.
  • Con la raíz ya en el registro, doce retiradas pasaron la verificación de pertenencia, porque el verificador comparaba contra el árbol que el atacante acababa de definir.

El detalle que une los pasos es un hash que nunca se borró. El Arbitrator guardaba el resumen de la entrega genuina en almacenamiento transitorio (EIP-1153), que dura lo que dura la transacción y no lo que dura la llamada. Al no ponerlo a cero después de usarlo, la comprobación dejó de preguntar si en esa llamada había llegado algo real y pasó a preguntar si alguna vez, en esa misma transacción, había llegado algo con esos mismos parámetros. El modificador nonReentrant no estorbaba, porque las dos llamadas eran secuenciales y no anidadas.

Parapet Labs reconstruyó esa traza y recomendó a otros equipos borrar las banderas de autenticación guardadas en almacenamiento transitorio y no hacer llamadas externas elegidas por quien llama desde una identidad privilegiada. Las dos piezas del fallo son de manual: una función que ejecuta lo que le pidan y una comprobación que sobrevive a la llamada que la justificaba.

La contabilidad del estado es lo que se pierde

Un puente es un libro de contabilidad con dos columnas. Una dice qué activos entraron y siguen en custodia; la otra dice qué mensajes llegaron de la red de origen. La criptografía protege la aritmética de ese libro, no la decisión de qué asientos se aceptan. Cuando la segunda columna admite una anotación sin respaldo, el saldo de la primera se puede reclamar entero.

Los robos más caros de los últimos meses no rompieron un cifrado. En el robo a Binance, la entrada fue el portátil comprometido de un ingeniero, en un desfalco valorado en unos 6.300 millones de dólares.

En el exploit de Initia, el fallo permitió acuñar activos sin respaldo y la red se apagó el 23 de octubre, hace once días, para frenar más emisiones de un token que nunca entró en custodia.

Nova es la variante más limpia del patrón. Ninguna clave, ninguna firma, ninguna prueba criptográfica rota: un registro que aceptó una raíz ajena y un verificador que hizo bien su trabajo con un dato falso. La superficie de ataque no estaba en el circuito, estaba en el trámite que decidía qué raíz era la buena.

zkLink reconoció el ataque el 29 de octubre y enumeró tres medidas: suspender la producción de bloques, parchear los contratos afectados y cerrar el canal de retiradas. La empresa dijo que Nova solo volvería cuando hubiera confirmado que los riesgos habían desaparecido, y ofreció al atacante un 20% del botín si devolvía los fondos. No dio plazo ni causa.

Tampoco confirmó el relato de las firmas de seguridad, que reconstruyeron el mecanismo por su cuenta. Esa distancia es habitual en las primeras 48 horas de un incidente y recuerda que la versión oficial llega más tarde y con menos detalle que el rastro on-chain.

Un puente sin confianza que confía en su portero

La etiqueta sin confianza describe el destino, no el camino. Un puente puede verificar cada retirada con pruebas y, al mismo tiempo, depender de que un contrato con permisos especiales no se equivoque al actualizar el registro. Ahí no hay matemáticas que auditar, hay un procedimiento que revisar línea por línea, y casi siempre es la parte que nadie mira porque no parece importante.

La cifra ayuda a medir la lección. 779.000 dólares es poco para un sector que ha visto robos de nueve cifras, pero el escrow de Nova tampoco era enorme, y el atacante se llevó todo lo que había detrás de esa ruta. Con más liquidez, el mismo fallo habría vaciado un contrato mucho mayor en el mismo bloque y sin tocar una sola clave.

Covadonga Fernandez

Autor

Covadonga Fernandez

Covadonga Fernández es fundadora y directora del periódico Observatorio Blockchain. Ha trabajado con diferentes empresas desarrolladoras de proyectos cripto/blockchain, como Singular DTV, plataforma con sede en Suiza, pionera en la descentralización de la industria del cine, lo que la llevó a participar en 2019 en el Festival de Cine de San Sebastián. Ese mismo año también participó en el Festival Internacional de Innovación de Cine de Berna (Suiza), con una ponencia sobre la pluralidad lingüística en Blockchain. nEn 2022 participó en la edición de Acción Cultural Española con un artículo sobre Metaverso y Cultura. En 2017 escribió el capítulo sobre Blockchain y Periodismo en el libro: «Blockchain: La revolución industrial de Internet», publicado por Grupo Planeta. Un año antes, en 2016, creó el primer Meetup sobre Blockchain y Periodismo. Ese mismo año también creó el sitio Blockchain Media, para seguir el proceso de descentralización de las industrias culturales y creativas. En 2020 coorganizó un evento sobre cómo blockchain podía ayudar a las industrias culturales y creativas, donde se tokenizó el dinero recibido por los patrocinadores y los ponentes recibieron el pago en formato NFT. Antes de fundar Blockchain Media y Observatorio Blockchain, Covadonga trabajó en el Grupo Z, diario ABC, fue Dircom de la Cámara de Comercio de Madrid, profesora de Periodismo en la Universidad Carlos III de Madrid y presidenta de Telemadrid. Ganadora en la categoría de Divulgación de los Financial Innovation Awards 2024 y premiada por por Alastria en los Blockchain Awards 2025

Lo último
Linux 7.5 arranca con NPU AMDXDNA, Mali G68 y HDMI 2.0

Una lectura semanal imprescindible sobre inteligencia artificial y blockchain.

Te explicamos cómo transforman la economía, qué nuevas puertas te abren y cómo te afectan.