@Dusk_Foundation $DUSK

Asumí que una prueba de conocimiento cero o lo comprueba todo o no verifica nada. Sin confianza parcial. Resultó que el propio código de comprobación de Dusk dejó cuatro números completamente sin verificar, y eso fue suficiente para crear dinero a partir de una prueba inválida.

cuando lo miré por primera vez, literalmente pensé que una prueba falsificada requeriría romper la criptografía real. la brecha era mucho más simple que eso.

aquí está por qué. cada transacción de Dusk protegida lleva una prueba, y esa prueba tiene que convencer a la red de cosas como la propiedad, los saldos correctos y las entradas válidas. casi cada número dentro de esa prueba queda fijado, vinculado a un compromiso confiable para que el probador no pueda mentir al respecto. pero cuatro números específicos, ligados a cómo se comprueba la lógica de la transacción, nunca fueron restringidos de esa manera. existían en la prueba, se usaron en las matemáticas finales, pero nadie los verificó contra los valores que supuestamente representaban.

así que un probador malicioso podía resolver los valores faltantes directamente. una división. eso es todo. investigadores de seguridad demostraron el problema contra un nodo de Dusk, creando 2000 DUSK de la nada y enviando 1337 de ellos a una billetera normal mediante una transacción ordinaria. el nodo aceptó ambas como válidas.

lo que hizo que esto me resultara aún más duro es que el código de Dusk ya había pasado por tres auditorías separadas antes de que se encontrara esto.

el mismo diseño que hace potentes las pruebas de conocimiento cero, confiar en un único veredicto final en lugar de volver a comprobar cada afirmación por tu cuenta, es exactamente lo que permitió que cuatro números sin restricciones permanecieran ocultos a plena vista durante tanto tiempo.

dusk solucionó el problema dentro de un día de ser notificado, pero una falla casi idéntica fue descubierta de forma independiente en el sistema de pruebas de otro equipo alrededor del mismo periodo. si dos implementaciones no relacionadas publicaron el mismo punto ciego, no sé cuántas otras aún siguen ahí sin encontrarse.

#dusk $TUT $ZRO
#zkProofs