El error que dio nombre a una clase de vulnerabilidad
La función de división de The DAO transfería ether al llamante antes de actualizar el saldo registrado de ese llamante. Un contrato que recibe ether puede ejecutar código, y ese código podía volver a llamar a la función de división: en ese momento el saldo seguía diciendo que al atacante se le debía su importe completo. Repítelo dentro de una misma transacción y la retirada se multiplica.
La reentrada ya se conocía antes de esto. Lo que hizo The DAO fue demostrar su coste a gran escala y establecer el orden comprobaciones-efectos-interacciones que hoy se enseña a todo desarrollador de Solidity.
Por qué sigue importando
Casi una década después, la reentrada sigue apareciendo en este registro: el incidente de Curve tuvo que ver con cerrojos de reentrada correctamente escritos pero incorrectamente compilados. La clase de vulnerabilidad no desapareció; se multiplicaron las formas de llegar a ella.
El fork
Conisec recoge el desenlace sin respaldarlo: los fondos se recuperaron cambiando la historia de la cadena mediante un hard fork que una minoría sustancial rechazó. Esa discrepancia produjo dos cadenas que hoy existen ambas. Es la ilustración más nítida disponible de que «el código es la ley» describe una preferencia y no cómo se comportó realmente el sistema bajo presión.
Cronología
Solo se añade. Las correcciones se incorporan como su propia entrada fechada; las entradas anteriores nunca se reescriben.
- Se ejecuta el exploit y la Fundación Ethereum publica una actualización crítica que confirma la vulnerabilidad. Ethereum Foundation
- Un hard fork en el bloque 1.920.000 traslada los fondos sustraídos a un contrato de retirada. La cadena sin bifurcar continúa como Ethereum Classic. Ethereum Foundation
Qué comprobar
La Fundación Ethereum publicó en su momento una actualización crítica; esa entrada y la documentación posterior del hard fork son el registro autorizado.
Conisec no aloja ni enlaza herramientas de recuperación, revocación o «comprobación». Tras un incidente público, los atacantes siembran habitualmente ese tipo de enlaces usando los nombres de las publicaciones que cubren la noticia. Usa el canal oficial del propio proyecto afectado, enlazado más arriba, y nada más.
Fuentes
- Ethereum Foundation, CRITICAL UPDATE Re: DAO Vulnerability (17 Jun 2016)
No es asesoramiento. Esto es un resumen de hechos publicados, no asesoramiento jurídico, fiscal ni de seguridad. Verifícalo con las fuentes primarias enlazadas más arriba.
Última verificación por Conisec Staff.