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 № 051Fallo de smart contract

Secuestro de Initialize en Punk Protocol

$9 M drenados de Punk Protocol tras el lanzamiento vía delegatecall a Initialize estableciendo al atacante como forge; $5 M rescatados por white-hats.

Fecha
Cadena(s)
Estado
Parcialmente recuperado

El 10 de agosto de 2021, el recién lanzado Punk Protocol fue drenado por aproximadamente $9 millones en cuestión de minutos tras su lanzamiento público. El exploit fue un inicializador re-invocable de libro de texto — el atacante llamó a Initialize() vía delegatecall, se estableció como la dirección forge del proyecto, y luego retiró las reservas del protocolo a través de funciones de retiro legítimas que confiaban en el rol forge. Un bot white-hat de front-running recuperó aproximadamente $5 millones de los fondos robados. Los contratos habían sido lanzados sin auditoría.

Qué ocurrió

Los contratos de Punk Protocol seguían un patrón de proxy actualizable con una función Initialize() que establecía los roles privilegiados del protocolo — incluida la dirección forge, que controlaba retiros y otras operaciones administrativas. Como es práctica estándar para funciones inicializadoras, Initialize() se suponía que era llamable exactamente una vez, por el deployer, en el momento del despliegue.

La falla fatal: Initialize() podía ser re-invocada vía delegatecall de una manera que eludía la restricción de un solo disparo prevista del protocolo. El atacante:

  1. Identificó el inicializador re-invocable mediante análisis estándar de contrato.
  2. Usó delegatecall para invocar Initialize() en un contexto donde la llamada tuvo éxito — re-estableciendo la dirección forge a una que él controlaba.
  3. Con el nuevo rol forge establecido, llamó a withdrawTo() y withdrawToForge() a través de los flujos de retiro legítimos — pero con la dirección del atacante ahora autorizada como el forge.
  4. Drenó las reservas del protocolo en cuestión de minutos del lanzamiento.

El total extraíble era aproximadamente $9 millones, pero los bots MEV se adelantaron a las transacciones del atacante — observando el retiro malicioso en el mempool público y replicando retiros similares para extraer una porción de los fondos antes de que el atacante pudiera completar. Uno de estos front-runners era un white-hat que capturó aproximadamente $5 millones y posteriormente los devolvió a Punk Protocol a cambio de una tarifa de descubridor (~$1 M conservado como recompensa).

Consecuencias

  • Punk Protocol publicó un plan de compensación financiado con los $5 M recuperados y con las reservas del tesoro del proyecto.
  • El equipo reconoció que los contratos habían sido desplegados sin auditoría de seguridad — un hecho que figuró prominentemente en el post-mortem.
  • Los ~$3 M restantes retenidos por el atacante original fueron blanqueados a través de Tornado Cash; sin más recuperación.

Por qué importa

El incidente de Punk Protocol es el caso de estudio canónico lanzamiento-sin-auditoría. La vulnerabilidad — un inicializador re-invocable accesible vía delegatecall — es la misma clase estructural que destruyó Parity Multisig en 2017 y que aparecería más tarde en Audius en 2022 y otros lugares. Es uno de los patrones de bug más documentados en la historia de Solidity. Cualquier auditoría realizada por una firma reputable lo habría detectado.

Las lecciones estructurales:

  1. Los contratos no auditados en el lanzamiento son un objetivo conocido de atacantes. Los operadores sofisticados monitorean los nuevos despliegues de contratos específicamente para patrones de bug conocidos. La ventana entre despliegue y detección a menudo se mide en minutos, no días.

  2. El modificador initializer de OpenZeppelin — y patrones equivalentes en otras bibliotecas de framework — existe específicamente para prevenir la clase de bug de Punk Protocol. Es una anotación de una línea. Omitirla es un error no forzado.

  3. El MEV white-hat es ahora un componente significativo del ecosistema de seguridad DeFi. El hecho de que aproximadamente el 56% del drenaje de Punk Protocol fuera recuperado mediante front-running en lugar de respuesta coordinada del equipo es representativo de cómo ha evolucionado el panorama moderno de respuesta a incidentes — el mejor aliado de los protocolos suele ser un bot externo que está observando.

El patrón se repite: Eminence (sept 2020), Punk Protocol (ago 2021) e incontables incidentes más pequeños son todos variaciones de "el contrato se lanzó, los observadores encontraron una clase de bug conocida en cuestión de minutos, y la mayor parte del valor fue extraído o rescatado dependiendo de quién llegó primero."

Fuentes y evidencia on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-punk-protocol-hack-august-2021
  2. [02]medium.comhttps://medium.com/punkprotocol/punk-compensation-plan-and-the-path-forward-c86b6143c01e

Registros relacionados