El 23 de marzo de 2022, un atacante drenó aproximadamente 173.600 ETH y 25,5 M USDC del puente Ronin en dos transacciones. Ronin es la sidechain que impulsa Axie Infinity; en ese momento dependía de un conjunto de validadores 5-de-9 para autorizar retiros del puente.
Qué ocurrió
El atacante obtuvo cinco de las nueve claves de validador que controlaban el puente Ronin. Cuatro vinieron de un compromiso en Sky Mavis en sí; la quinta era una clave del Axie DAO sobre la que Sky Mavis había recibido derechos de firma temporales para manejar un atraso de transacciones a finales de 2021 — y esa concesión nunca fue revocada.
Con cinco firmas el atacante podía mintear pruebas de retiro falsificadas y sacar fondos directamente del contrato del puente. Las transacciones se ejecutaron el 23 de marzo pero no se descubrieron hasta el 29 de marzo, cuando un usuario se quejó de que no podía retirar 5.000 ETH.
Consecuencias
- El Departamento del Tesoro de EE. UU. atribuyó el hackeo al Lazarus Group, una unidad de la Oficina General de Reconocimiento patrocinada por el estado de Corea del Norte.
- Sky Mavis levantó una ronda de $150 M liderada por Binance para restituir a los usuarios afectados. El puente se reconstruyó con un conjunto de validadores más grande y un disyuntor de límite de retiros.
- Una porción de los fondos robados fue congelada por exchanges y recuperada. La mayoría fue blanqueada a través de Tornado Cash y puentes cross-chain.
Por qué importa
Ronin demostró que los puentes asegurados por un pequeño multi-sig están efectivamente asegurados por su higiene de gestión de claves, no por la criptografía. Varios diseños posteriores de puentes (LayerZero, CCIP, Across) se movieron hacia diseños de comité con slashing explícito o se alejaron por completo de la atestación basada en firmas.
Fuentes y evidencia on-chain
- [01]roninblockchain.substack.comhttps://roninblockchain.substack.com/p/community-alert-ronin-validators
- [02]home.treasury.govhttps://home.treasury.gov/news/press-releases/jy0731
- 0xc28fad5e8d5e0ce6a2eaf67b6687be5d58113e16be590824d6cfa1a94467d0b7
- 0xed2c72ef1a552ddaec6dd1f5cddf0b59a8f37f82bdda5257d9c7c37db7bb9b08