Spartan Protocol - REKT



Esparta ha caído.

Un defecto en el código permitió a un agresor tomar fondos de la pool de liquidez SPARTA/WBNB, ganando $30 millones y la sexta posición en el leaderboard de rekt como resultado.

El agresor se aprovechó de una lógica defectuosa usada para calcular proporciones de liquidez cuando los usuarios quemaban sus tokens LP para sacar sus fondos.

Se usó un flash loan para inflar el balance de la pool antes de quemar la misma cantidad de pool tokens, permitiéndole reclamar una cantidad mucho mayor de los activos subyacentes.

Los siguientes detalles fueron tomados del análisis de causa de raíz de Peckshield.

  1. Un flash loan fue pedido de PancakeSwap con 10k WBNB, para ser devuelto en el último paso con un costo de 260 WBNB por el préstamo;
  2. Cambia WBNB por SPARTA cinco veces a través de la pool explotada de Spartan, cada vez intercambiando 1,913.172376149853767216 WBNB por

621,865.037751148871481851 SPARTA,

555,430.671213257613862228 SPARTA,

499,085.759047974016386321 SPARTA,

450,888.746328171070956525 SPARTA,

y 409,342.991760515634291439 SPARTA respectivamente.

  1. El total resultante 2,536,613.206101067206978364 SPARTA, mas 11,853.332738790033677468 WBNB, luego es añadido a la pool, creando 933,350.959891510782264802 pool tokens (SPT1-WBNB);
  2. Cambia WBNB por SPARTA diez veces a través de la misma pool, cada vez intercambiando 1,674.025829131122046314 WBNB por 336,553.226646584413691711 SPARTA,

316,580.407937459884368081 SPARTA,

298,333.47575083824346321 SPARTA,

281,619.23694472865873995 SPARTA,

266,270.782888292437349121 SPARTA,

252,143.313661963544185874 SPARTA,

239,110.715943602161587616 SPARTA,

227,062.743086833745362627 SPARTA,

215,902.679301559370989883 SPARTA,

y 205,545.395265586231012643 SPARTA respectivamente,

lo que resulta en un total de 2,639,121.977427448690750716 SPARTA.

  1. Infla el balance de activos en la pool transfiriendo a la pool 21,632.147355962694186481 WBNB y todos los SPARTA del paso 3, i.e., 2,639,121.977427448690750716 SPARTA.
  2. Quema los 933,350.959891510782264802 pool tokens obtenidos del paso 2 para retirar la liquidez. Dado que el balance de activos de la pool está inflado, la operación de quemar resulta en 2,538,199.153113548855179986 SPARTA y 20,694.059368262615067224 WBNB.

Nótese que el paso 2 sólo deposita 11,853.332738790033677468 WBNB, llevando a una ganancia de alrededor de 9K WBNB.

  1. Añade liquidez a la pool con los activos extras del paso 4 con 1,414,010.159908048805295494 pool tokens, que son quemados inmediatamente para obtener 2,643,882.074112804607308497 SPARTA y 21,555.69728926154636986 WBNB.
  2. Repite los pasos anteriores para continuar sacando fondos de la pool.
  3. Devuelve el flash loan con 100,260 WBNB.

La vulnerabilidad surge del hecho de que el cálculo de la proporción de liquidez calcLiquidityShare() está consultando el balance actual que puede ser inflado para manipulación. Un cálculo correcto tendría que hacer uso del balance en el caché en baseAmountPooled/tokenAmountPooled.

La mayoría de los fondos del agresor de la explotación mencionada se encuentran actualmente en su wallet: 0x3b6e.

Una historia relativamente sencilla de otro protocolo más copiado, que ha sido demasiado ambicioso con su imitación.

La era de los flash loans BSC ha llegado a nosotros, y no será la primera vez que veamos ataques de esta naturaleza.

$30 millones de ganancia por solo $66 de comisiones es un ROI excelente, con tantos desarrolladores apresurados por copiar los blue chips de Ethereum a BSC, seguramente habrá más oportunidades para los hackers perspicaces.

Sin ninguna palabra aún de CZ o Binance, uno se pregunta, ¿cuánto más van a tolerar?

¿Qué tan rekt se tiene que estar para que CZ acuda a salvarte?


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.