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

Drenaje de aprobaciones en Transit Swap

Usuarios de Transit Swap con aprobaciones infinitas perdieron $21M cuando claimTokens no validaba el token a llamar en transferFrom. 70% devuelto.

Fecha
Víctima
Transit Swap
Estado
Parcialmente recuperado

El 2 de octubre de 2022, el agregador DEX cross-chain Transit Swap fue explotado por aproximadamente $21 millones mediante una validación de parámetros ausente en su función claimTokens. El atacante drenó a usuarios que habían concedido aprobaciones infinitas de tokens al contrato de gestión de permisos de Transit. Tras negociación on-chain, se devolvió el 70% de los fondos, clasificando el evento como una operación white-hat (muy cara).

Qué ocurrió

Para usar Transit Swap, los usuarios concedían aprobaciones de tokens al contrato de gestión de permisos del protocolo, permitiéndole gastar tokens en nombre del usuario durante los swaps. La función claimTokens del contrato era responsable de realizar la llamada transferFrom real contra el saldo aprobado del usuario.

La vulnerabilidad: claimTokens aceptaba la dirección del contrato del token como un parámetro proporcionado por el usuario y no la validaba contra ninguna lista permitida o fuente esperada. La función felizmente llamaría a transferFrom en cualquier dirección de token que el llamante especificara, contra cualquier usuario que hubiera aprobado a Transit para gastar ese token.

El ataque:

  1. El atacante enumeró billeteras con aprobaciones infinitas al contrato de Transit Swap.
  2. Para cada víctima, llamó a claimTokens con la dirección de la víctima como origen y la dirección del atacante como destino.
  3. El contrato, sin la validación, ejecutó la transferencia.
  4. Drenó ~$21M en múltiples tokens (USDT, USDC, BUSD, ETH, BNB, etc.).

Consecuencias

  • Transit Swap pausó el contrato afectado y se comunicó con el atacante vía mensajes on-chain.
  • Tras varios días de negociación, el atacante devolvió aproximadamente el 70% de los fondos robados a una dirección de recuperación.
  • El equipo distribuyó los fondos recuperados de vuelta a los usuarios afectados de forma prorrateada.
  • Transit sufrió un segundo exploit más pequeño meses después bajo condiciones diferentes.

Por qué importa

Transit Swap es parte de un largo linaje de bugs de drenaje de aprobaciones de agregadores DEX — los protocolos que mantienen aprobaciones de usuarios deben validar rigurosamente cada parámetro que determina cómo se gastan esas aprobaciones. El patrón recurre en:

  • Furucombo (2021) — delegatecall a un objetivo controlado por el atacante.
  • Sushi RouteProcessor2 (2023) — chequeo de acceso ausente dentro del swap.
  • LI.FI (2024) — validación de faceta ausente en un nuevo despliegue.
  • Transit Swap (2022) — claimTokens aceptando origen elegido por el atacante.

En cada caso, los propios contratos del protocolo están técnicamente funcionando como se diseñaron; el bug es que los usuarios concedieron aprobaciones esperando que el protocolo restringiera cómo se ejercerían esas aprobaciones, y la lógica de restricción del protocolo tenía una brecha. La respuesta defensiva — aprobaciones acotadas, permits EIP-2612, y gating de firmas por transacción — se está convirtiendo en estándar pero queda por detrás del ritmo al que los agregadores basados en aprobaciones lanzan nuevo código.

Fuentes y evidencia on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-transit-swap-hack-october-2022
  2. [02]theblock.cohttps://www.theblock.co/post/174307/hacker-returns-70-of-21-million-taken-from-transit-swap-dex
  3. [03]blog.solidityscan.comhttps://blog.solidityscan.com/transit-swap-hack-analysis-13c1e04e7de0/

Registros relacionados