Voltage Finance - REKT



Voltage Finance ha sido explotado por ~$4M a través de su partner de “Lending-as-a-Service” Ola Finance en Fuse Network.

En lugar de un fork de Compound, Ola se describe a sí mismo como un "proveedor de tecnología que permite a otros crear instancias similares a Compound."

A principios de este mes, un incidente similar en la red de Gnosis / xDAI les dio a los equipos que usaban el código de Compound una gran advertencia.

Pero por algún motivo, ni Voltage ni Ola recibieron la noticia.

Si tan solo hubiera un lugar donde los desarrolladores pudieran mantenerse al día con los exploits en DeFi...

De manera similar a los casos de Agave DAO y Hundred Finance, este exploit se debió a una reentrancy vulnerability en el estándar ERC 677 que usa Fuse Network para los token provenientes del bridge.

Estos tipos de tokens incluyen una función callAfterTransfer() de la que se puede abusar para realizar transferencias adicionales antes de que se actualicen los balances (siempre que el código subyacente no siga la rutina de ejecución de checks-effects-interactions recomendada).

El código de Compound original no sigue este patrón; sin embargo, todos los tokens colaterales propuestos se examinan para detectar esta vulnerabilidad antes de agregarse al protocolo.

Créditos: BlockSecTeam

Dirección del atacante en Fuse: 0x371D7C9e4464576D45f11b27Cf88578983D63d75

Ejemplo tx (BUSD):

0x1b3e06b6b310886dfd90a5df8ddbaf515750eda7126cf5f69874e92761b1dc90

Contrato A del atacante: 0x632942c9BeF1a1127353E1b99e817651e2390CFF

Contrato B del atacante: 0x9E5b7da68e2aE8aB1835428E6E0c83a7153f6112

1: Contrato A transfiere 550 WETH al contrato B

2: Contrato B deposita 550 WETH, acuñando 27.284 oWETH

3: Contrato B pide prestado 507,216 BUSD

4: Contrato BUSD vuelve a llamar al contrato B a través de callAfterTransfer()

5: Contrato B transfiere 507,216 BUSD y 27 284 oWETH al contrato A.

6: Contrato A devuelve 27,284 WETH para redimir el depósito inicial de 550 WETH y se queda con los 507,216 BUSD de profit.

BlockSecTeam explica:

"En la lógica del código de la función borrow(), los estados internos relacionados se actualizan después de una llamada externa. En concreto, la función doTransferOut() invocará la función transfer() del token basado en ERC677, que acabará provocando una llamada externa."

El proceso anterior se usó repetidamente para pedir $USDC, $FUSD, $WBTC, $WETH y $FUSE.

Los fondos robados se enviaron primero a Ethereum (originalmente financiado por Tornado Cash ) y luego se enviaron a esta dirección, donde permanecen en forma de ETH, WBTC, USDC (¿Circle congelará estos fondos?) y FUSE, con un valor aproximado de $3,1M.

Cuando Agave y Hundred fueron víctimas del mismo vector de ataque, dijimos;

Cuando un fork cae, todos los demás tienen que revisar sus cimientos

Voltage Finance no hizo eso, y es por eso que están ocupando el lugar (# 64) en el leaderboard.


compartir artículo

REKT sirve como plataforma pública para autores anónimos, nos deslindamos de la responsabilidad por las opiniones y contenidos alojados en REKT.

dona (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

aviso legal:

REKT no es responsable ni culpable de ninguna manera por cualquier Contenido publicado en nuestro Sitio Web o en conexión con nuestros Servicios, sin importar si fueron publicados o causados por Autores ANÓN de nuestro Sitio Web, o por REKT. Aunque determinamos reglas para la conducta y publicaciones de los Autores ANÓN, no controlamos y no somos responsables por cualquier contenido ofensivo, inapropiado, obsceno, ilegal o de cualquier forma objetable, que se pudiera encontrar en nuestro Sitio Web o Servicios. REKT no es responsable por la conducta, en línea o fuera de línea, de cualquier usuario de nuestro Sitio Web o Servicios.