Popsicle Finance - REKT



Se fundió.

~$20 millones desaparecidos.

Un hack complejo de un bug sencillo deja a Popsicle Finance en una situación pegajosa.

El bug de RewardDistribution ya ha sido explotado en otros protocolos.

Los auditores y los desarrolladores de smart contracts deben mantenerse actualizados. Este código nunca debió haber alcanzado la producción.

Si sólo hubiera un sitio en donde puedan leer sobre los hacks y exploits previos...

Crédito: @Peckshield & @Mudit__Gupta

Dirección del agresor: 0xf9E3D08196F76f5078882d98941b71C0884BEa52

Hash de la transacción: 0xcd7dae143…

El contrato “Sorbetto Fragola” gestiona la liquidez en Uniswap V3 de forma automática. Fragola ajusta la posición para que se quede dentro del rango adecuado.

El hack sucedió debido a una falla en el cálculo de gastos al transferir los tokens LP.

Específicamente, el agresor crea tres contratos: A, B y C y repite lo siguiente en series de:

A. deposit(),

A. transfer(B),

B. collectFees(),

B. transfer(C),

C. collectFees() para ocho pools.

Paso 1: Tomar un flash loan de 30M USDT, 13K WETH, 1.4K BTC, 30M USDC, 3M DAI y 200K UNI de AAVE para atacar ocho pools PLP.

A continuación utilizamos la pool USDT-WETH como ejemplo.

Paso 2: Alice llama deposit() para añadir 30M USDT y 5.467K WETH en liquidez a la pool PLP de USDT-WETH y recibe 10.52 tokens PLP.

Paso 3: A transfiere los 10.52 tokens PLP a B

Paso 4: B llama la función collectFees() para actualizar su valor tokenRewards.

Paso 5: B transfiere los 10.52 tokens PLP a C

Paso 6: C llama la función collectFees() para actualizar su valor tokenRewards.

Paso 7: C transfiere los 10.52 tokens PLP de vuelta a A, para que A sea capaz de retirar la liquidez más tarde.

Paso 8: A llama withdraw() para retirar la liquidez y recibe 30M USDT y 5.46 WETH.

Paso 9: B llama collectFees() para recibir 2.15M USDT y 392 WETH como recompensas.

Paso 10: C llama collectFees() para recibir 2.15M USDT y 402 WETH como recompensas.

Paso 11: El agresor repite los pasos del 2 al 10 para varias pools PLP y devuelve el flash loan del paso 1.

Una porción de las ganancias del agresor (4,100 ETH, alrededor de $10M) es enviada inmediatamente a Tornado Cash.

Al momento de redacción, los 2,560 WETH, 96 WBTC y 159,928 DAI restantes permanecen en la cuenta del agresor: 0xf9E3D08196F76f5078882d98941b71C0884BEa52.

Todos cometemos errores, pero no muchos somos responsables de un TVL de $20M...

Es extraño que Peckshield eligiera publicar un post-mortem de código que habían auditado ellos mismos, en lugar de esperar y lanzarlo desde la cuenta oficial de Popsicle.

Los fondos de otro cliente perdidos, mientras Peckshield busca el clout en Twitter.

No hay excusas para que los auditores no detectaran un bug ya conocido.

Pero es verdad que escribieron un buen post-mortem, al menos Popsicle Finance sí recibió algo por su dinero.


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.