Saltar al contenido
Est. MMXXVIVol. VI · № 273RSS
Blockchain Breaches

Archivo de incidentes de seguridad en criptomonedas — hackeos, exploits, fallos de puentes y rug pulls, documentados con evidencia on-chain.

Expediente № 050Fallo de smart contract

Exploit de Poly Network

Un bug en el contrato cross-chain manager permitió al atacante cambiar la clave pública del keeper y retirar $611 M de tres cadenas — devueltos en su totalidad.

Fecha
Víctima
Poly Network
Estado
Recuperado

El 10 de agosto de 2021, un atacante drenó aproximadamente $611 M en tokens del protocolo cross-chain Poly Network en Ethereum, BNB Chain y Polygon. En dos semanas el atacante devolvió cada centavo y se le ofreció una recompensa de $500K y un trabajo.

Qué ocurrió

Poly Network usaba un par de contratos cross-chain — EthCrossChainManager y EthCrossChainData — para retransmitir mensajes entre cadenas soportadas. El contrato relayer tenía una función pública (verifyHeaderAndExecuteTx) que podía llamar datos arbitrarios en el contrato de datos, incluyendo la función putCurEpochConPubKeyBytes del contrato de datos que establecía la clave pública del keeper.

Al crear una prueba cross-chain que se resolvía a esa función interna, el atacante rotó la clave pública del keeper a una que él controlaba. Desde ese momento, cada retiro cross-chain podía ser firmado por él.

Consecuencias

  • El atacante inicialmente afirmó haberlo hecho "por diversión" y comenzó a devolver fondos en 24 horas, negociando públicamente con Poly Network mediante mensajes on-chain.
  • Los $611 M fueron devueltos. Poly Network ofreció públicamente al atacante una recompensa de $500K y el rol de "Chief Security Advisor".
  • El exploit se convirtió en un ejemplo de libro de texto de por qué los ejecutores de mensajes cross-chain no deberían poder mutar estado crítico para la confianza.

Por qué importa

El bug de Poly Network no estaba en la criptografía o en la firma del keeper — estaba en qué estaba autorizado a llamar el ejecutor. Cualquier puente cross-chain que pueda llamar funciones administrativas en su propia configuración debe tratar al ejecutor como un llamador privilegiado.

Fuentes y evidencia on-chain

  1. [01]medium.comhttps://medium.com/@MrToph/the-initial-analysis-of-the-poly-network-hack-c4f8d3b69cb4
  2. [02]twitter.comhttps://twitter.com/PolyNetwork2/status/1425073987164381196
Transacciones
  • 0xad7a2c70c958fcd3effbf374d0acf3774a9257577625ae4c838e24b0de17602a

Registros relacionados