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

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

Expediente № 348Fallo de smart contract

Drenaje de un bot keeper antiguo de MakerDAO

Un keeper ETH-A inactivo de MakerDAO perdió 200 WETH (unos $538.000): un atacante explotó una función de retiro sin control de acceso para drenar garantías varadas desde el Black Thursday de 2020.

Fecha
Cadena(s)
Estado
Fondos robados
Atribución
0x01EB957e5C7DcDDD60F3C875956cCc6fB9bDa5FA

El 6 de octubre de 2026, un keeper de liquidación ETH-A de MakerDAO inactivo —un bot de terceros, no el protocolo central de MakerDAO— fue drenado de 200 WETH, por un valor aproximado de 538.000 dólares, después de que un atacante explotara una función de retiro sin protección en el contrato de implementación del keeper. La garantía robada llevaba intacta on-chain desde las liquidaciones del "Black Thursday" de marzo de 2020.

Qué ocurrió

CertiK rastreó la pérdida hasta la implementación del keeper 0x68399ed8aa33C5b43F863EE6782de492006A5546, donde al selector de función 0x8804d1de le faltaba la comprobación ds-auth que protegía las demás funciones privilegiadas del contrato. La función aceptaba cualquier dirección como adaptador, llamaba a Vat.hope para delegarle autoridad e invocaba su join() —sin llamar después a nope, por lo que la delegación persistía—. Durante el Black Thursday de marzo de 2020, este keeper había ganado cuatro subastas ETH-A de 50 ETH cada una (IDs 1457–1460) con pujas de cero y nunca las liquidó, dejando 200 ETH bloqueados en el Flipper ETH-A retirado (0xd8a04F5412223F513DC55F839574430f5EC15531). Como cualquiera puede llamar a deal en una subasta concluida, el atacante liquidó esas subastas de hace seis años, acreditó los 200 ETH a la cuenta Vat del keeper y los retiró a través del GemJoin ETH-A como 200 WETH hacia un contrato controlado por él. Los contratos centrales de MakerDAO (Vat, Flipper, GemJoin) funcionaron exactamente como fueron diseñados; el fallo residía por completo en el keeper olvidado.

Consecuencias

El atacante había financiado una dirección nueva con un retiro de 0,1 ETH desde Tornado Cash a las 05:57 UTC, unos 16 minutos antes de que el exploit se incluyera en el bloque 26.131.471 a las 06:13 UTC. Unos seis minutos después del drenaje, las ganancias se reinyectaron en Tornado Cash en tandas de 10 ETH, sin dejar una vía realista de recuperación. No se anunció ninguna respuesta del equipo de MakerDAO, recompensa ni reembolso, y los fondos siguen robados. Los investigadores on-chain marcaron la dirección del atacante como 0x01EB957e5C7DcDDD60F3C875956cCc6fB9bDa5FA.

Por qué importa

El incidente es un recordatorio de manual de que los contratos abandonados nunca dejan de ser superficie de ataque. La misma lección atraviesa el exploit del vault obsoleto de Thetanuts Finance y el antiguo bug de Fusion v1 del resolver de 1inch: retirar un producto no elimina ni su código ni sus fondos de la cadena. También muestra cómo un único modificador ds-auth ausente, trivial de forma aislada, se vuelve catastrófico en cuanto custodia valor real. Aquí ese valor llevaba más de seis años varado en silencio —un vestigio de uno de los días más caóticos de DeFi— hasta que un oportunista con un depósito en Tornado Cash y una lectura cuidadosa del estado de viejas subastas finalmente lo recogió.

Fuentes y evidencia on-chain

  1. [01]certik.comhttps://www.certik.com/blog/makerdao-legacy-auction-keeper-incident-analysis
  2. [02]cryptotimes.iohttps://www.cryptotimes.io/2026/10/06/dormant-makerdao-keeper-drained-of-538k-core-remains-intact/
  3. [03]kucoin.comhttps://www.kucoin.com/news/flash/certik-reports-keeper-bot-exploit-in-makerdao-liquidation-system
  4. [04]chaincatcher.comhttps://www.chaincatcher.com/en/article/2294394

Registros relacionados