El proyecto Paraluni fue atacado en la mañana del 13 de marzo (hora UTC +8). El atacante aprovechó dos vulnerabilidades para atacar el protocolo. La primera vulnerabilidad es la falta de verificación de los tokens pasados, y la segunda es el tradicional reingreso. El atacante lanzó un par de transacciones de ataque. A continuación, usaremos una de ellas 0xf2bba649019ce40a67f0fb74e5e800257d359d9094b6ba6faea14ffa4d3446b1 para ilustrar todo el proceso del ataque.
Paso I: agregar liquidity a paraRouter

El atacante invocó addLiquidity al pool BTCB-WBNB (índice = 9) y el pool acuñará el token lp para UBT (un token creado por el atacante). Después de esta operación, el token UBT contiene el token lp del pool. Nótese que, el BTCB y el WBNB son prestados del préstamo flash.
Paso II: invocar depositByAddLiquidity de MasterChef
El atacante invocó depositByAddLiquidity proporcionando el _pid como 9 y usando los tokens UGT y UBT como parámetros. Sin embargo, la función no verifica si los tokens de reserva del pool son iguales a los tokens pasados (UGT y UBT).

Luego, la función invoca depositByAddLiquidityInternal, que a su vez invoca addLiquidity de paraRouter. Esta función invocará la función transferFrom de los tokens UGT y UBT. Sin embargo, estos dos tokens están controlados por el atacante. En la función transferFrom de UBT, el atacante invocó la función deposit del contrato MasterChef para depositar el token LP obtenido en el primer paso en el contrato MasterChef.

Desafortunadamente, debido al cambio de saldo en la función deposit, el newBalance después de addLiquidity es mucho mayor que el oldBalance. De esta manera, el atacante obtuvo créditos dobles en el contrato MasterChef.

Paso III: obtener ganancias
El atacante finalmente invocó UBT.withdrawAsset y MasterChef.withdraw para canjear el lptoken y obtener BTCB y WBNB. Dado que la cantidad de liquidez es mayor de la que debería tener el atacante, este obtendrá ganancias.

Lecciones
Además del problema de reingreso, la falta de verificación de los tokens pasados es una de las causas raíz. Hemos visto otros casos con problemas similares, como en el caso Visor y el caso Coin98.
Acerca de BlockSec
BlockSec es una empresa pionera en seguridad blockchain establecida en 2021 por un grupo de expertos en seguridad de renombre mundial. La empresa está comprometida con mejorar la seguridad y la usabilidad del emergente mundo Web3 con el fin de facilitar su adopción masiva. Con este fin, BlockSec ofrece servicios de auditoría de seguridad de contratos inteligentes y cadenas EVM, la plataforma Phalcon para el desarrollo de seguridad y el bloqueo proactivo de amenazas, la plataforma MetaSleuth para el rastreo e investigación de fondos, y la extensión MetaSuites para que los desarrolladores de web3 naveguen eficientemente en el mundo cripto.
Hasta la fecha, la empresa ha atendido a más de 300 distinguidos clientes como MetaMask, Uniswap Foundation, Compound, Forta y PancakeSwap, y ha recibido decenas de millones de dólares en dos rondas de financiación de inversores prominentes, entre ellos Matrix Partners, Vitalbridge Capital y Fenbushi Capital.
Sitio web oficial: https://blocksec.com/
Cuenta oficial de Twitter: https://twitter.com/BlockSecTeam



