El 17 de febrero de 2023, la app de trading Dexible perdió aproximadamente 2 millones de dólares cuando un atacante explotó la función selfSwap, que hacía una llamada externa arbitraria usando una dirección de router y calldata suministrados por el usuario sin validación. El atacante la apuntó a contratos de tokens y llamó a transferFrom contra cada wallet que tuviera aprobaciones de Dexible.
Qué ocurrió
selfSwap estaba diseñada para enrutar trades a través de un router DEX arbitrario suministrado por el llamador. No restringía el destino ni la calldata. El atacante la invocó con el destino = un contrato de token y la calldata = transferFrom(víctima, atacante, balance), drenando ~2 M$ de las wallets que habían aprobado, en Ethereum y Arbitrum.
Consecuencias
- Dexible pausó el contrato e instó a los usuarios a revocar aprobaciones.
- El equipo publicó un análisis post-mortem; siguió una mitigación parcial.
Por qué importa
Dexible es una de las instancias más puras del antipatrón "llamada externa arbitraria con destino controlado por el llamador", estructuralmente idéntico a Furucombo, Transit Swap y LI.FI. Cualquier contrato que retenga aprobaciones y que permita al llamador especificar qué contrato llamar y con qué datos es un drenador universal de wallets para sus usuarios. La regla es absoluta y constantemente violada: nunca hagas una llamada externa no validada desde un contrato que retiene aprobaciones de usuarios. La UX de los agregadores quiere enrutamiento flexible; la seguridad requiere una allowlist. El catálogo muestra esta misma compensación perdiéndose, del mismo modo, año tras año.
Fuentes y evidencia on-chain
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-dexible-hack-february-2023
- [02]blockapex.iohttps://blockapex.io/dexible-hack-analysis/
- [03]rekt.newshttps://rekt.news/dexible-rekt