Beanstalk - REKT



Se robaron $181M de Beanstalk, pero el atacante sólo se quedó con $76M.

rekt.news registra el daño, no la ganancia, por lo que este ocupa el puesto número 5 en el leaderboard.

Una proposal de gobernanza maliciosa fue impulsada por un flash loan y el atacante votó para transferirse todos los assets a él mismo.

Otros ~24800 ETH fueron a Tornado Cash, y 250K del dinero robado al Fondo de Guerra de Ucrania.

¿Cuánto más puede durar esta ola de crímenes?

Créditos: Igor Igamberdiev , Peckshield , Kelvin Fichter

Este fue un ataque a la gobernanza que fue posible gracias al uso de flash loan combinados con la ausencia de un delay en la ejecución de la proposal.

El atacante adquirió temporalmente suficiente voting power para ejecutar de inmediato una proposal maliciosa de emergencia en la gobernanza, drenando el protocolo.

Aunque el ataque fue instantáneo, se necesitó algo de preparación:

…hay un retraso de ~1 día para todas las acciones de gobernanza en el contrato $BEAN. El atacante en realidad montó todo esto ayer cuando hizo dos proposal en la gobernanza.

La primera proposal (proposal #18) drena todos los fondos del contrato. La siguiente proposal (proposal #19) envía $250k en $BEAN a la dirección de donación de Ucrania. Esta proposal Ucrania se llama Bip18 (en lugar de Bip19)...

Una vez pasado el delay, se podría ejecutar el ataque:

El exploiter fue financiado desde el bridge Synapse Protocol [aunque inicialmente por Tornado].

Usó un flash loan para obtener:

350M DAI, 500M USDC y 150M USDT de Aave;

32M BEAN de Uniswap v2;

11,6 millones de LUSD de SushiSwap.

Estos tokens se usaron para agregar liquidez a los pools de Curve con BEAN para votar en la gobernanza.

Además, implementó y votó por un BIP-18 falso que movió todos los fondos del contrato del protocolo al exploiter.

El siguiente paso fue eliminar la liquidez, repagar los flash loans y convertir todos los fondos recibidos en 24,800 WETH ($76M), que se enviaron a Tornado Cash.

Hacker: 0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4

Hacker Contract: 0x79224bc0bf70ec34f0ef56ed8251619499a59def

BIP18: 0xe5ecf73603d98a0128f05ed30506ac7a663dbb69

Proposal BIP18 tx: 0x68cdec0ac76454c3b0f7af0b8a3895db00adf6daaf3b50a99716858c4fa54c6f

Peckshield proporcionó un paso a paso

El hacker propone una proposal BIP maliciosa con initAddress

Inicia el hack tx: 0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7

  1. Flash loan 350 000 000 DAI, 500 000 000 USDC, 150 000 000 USDC, 32 425 202 BEAN y 11 643 065 LUSD

  2. Vyper_contract_bebc.add_liquidity 350 000 000 DAI, 500 000 000 USDC, 150 000 000 USDT para obtener 979 691 328 3Crv

  3. LUSD3CRV-f.exchange para convertir 15 000 000 3Crv a 15 251 318 LUSD

  4. BEAN3CRV-f.add_liquidity para convertir 964 691 328 3Crv a 795 425 740 BEAN3CRV-f

  5. BEANLUSD-f.add_liquidity para convertir 32 100 950 BEAN y 26 894 383 LUSD y obtener 58 924 887 BEANLUSD-f

  6. Depósito 795 425 740 BEAN3CRV-f y 58 924 887 BEANLUSD-f en Diamond

  7. Diamond.vote (bip=18)

  8. Diamond.emergencyCommit(bip=18) y el contrato _init propuesto por el hacker se ejecuta para obtener 36 084 584 BEAN y 0,54 UNI-V2_WETH_BEAN, 874 663 982 BEAN3CRV-f, 60 562 844 BEANLUSD-f para el contrato del hacker

  9. BEAN3CRV-f.remove_liquidity_one_coin 874,663,982 BEAN3CRV-f para obtener 1,007,734,729 3Crv

  10. BEANLUSD-f.remove_liquidity_one_coin 60 562 844 BEANLUSD-f para obtener 28 149 504 LUSD

  11. Repaga el flash loan LUSD 11.795.706 y BEAN 32.197.543

  12. LUSD3CRV-f.exchange para intercambiar 16 471 404 LUSD a 16 184 690 3Crv

  13. Burn 16 184 690 3Cry para obtener 522 487 380 USDC, 365 758 059 DAI y 156 732 232 USDT

  14. Repaga el flash loan 150,135,000 USDT, 500,450,000 USDC, 350,315,000 DAI

  15. Burn UNI-V2_WETH_BEAN 0.54 para obtener 10 883 WETH y 32 511 085 BEAN

  16. Donación 250,000 USDC a Ucrania Crypto Donation

  17. Swap 15,443,059 DAI a 15,441,256 USDC

  18. _Swap_r 37, 228,637 USDC a 11,822 WETH

  19. Swap 6.597.232 USDT a 2.124 WETH

  20. Profit 24,830 WETH se envía al hacker

Y luego a Tornado.

Presumiblemente para evitar sospechas de un trabajo interno, Publius, el anon detrás del protocolo, tomó la decisión de revelar su identidad como un grupo de tres en un comunicado publicado en Discord.

Omniscia señala que este ataque quedó fuera del alcance de su auditoría, sin embargo, su informe incluye comentarios sobre el contrato de gobernanza.

De cualquier manera, es sorprendente que tal vulnerabilidad no se haya notado en algún momento, dado que los flash loan no son una amenaza nueva para las gobernanzas de DeFi. Un delay en la ejecución de las proposals de gobernanza on-chain es una forma de evitar esto.

Este incidente podría alentar a los bagholders a monitorear las proposals de gobernanza con más cuidado.

Sin embargo, el usuario promedio espera que proyectos tan heavily-shilled como Beanstalk estén bajo la vigilancia de ojos más experimentados.

DYOR.


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.