Das Paraluni-Projekt wurde am Morgen des 13. März (UTC+8-Zeit) angegriffen. Der Angreifer nutzte zwei Schwachstellen aus, um das Protokoll anzugreifen. Die erste Schwachstelle ist das Fehlen der Verifizierung der übergebenen Tokens und die zweite ist die traditionelle Reentrancy. Der Angreifer startete ein paar Angriffstransaktionen. Im Folgenden werden wir eine davon 0xf2bba649019ce40a67f0fb74e5e800257d359d9094b6ba6faea14ffa4d3446b1 verwenden, um den gesamten Angriffsprozess zu veranschaulichen.
Schritt I: liquidity zu paraRouter hinzufügen

Der Angreifer rief addLiquidity für den BTCB-WBNB-Pool (Index = 9) auf, und der Pool prägt das lp-Token an UBT (ein vom Angreifer erstelltes Token). Nach dieser Operation hält das UBT-Token das lp-Token des Pools. Beachten Sie, dass BTCB und WBNB aus einem Flash-Loan geliehen wurden.
Schritt II: depositByAddLiquidity von MasterChef aufrufen
Der Angreifer rief depositByAddLiquidity auf, indem er _pid als 9 angab und die Token UGT und UBT als Parameter verwendete. Die Funktion prüft jedoch nicht, ob die Reservetoken des Pools mit den übergebenen Token (UGT und UBT) übereinstimmen.

Anschließend ruft die Funktion depositByAddLiquidityInternal auf, die dann addLiquidity von paraRouter aufruft. Diese Funktion ruft die transferFrom-Funktion der Token UGT und UBT auf. Diese beiden Token werden jedoch vom Angreifer kontrolliert. In der transferFrom-Funktion von UBT rief der Angreifer die deposit-Funktion des MasterChef-Vertrags auf, um das im ersten Schritt erhaltene LP-Token in den MasterChef-Vertrag einzuzahlen.

Leider ist aufgrund der Bilanzänderung in der deposit-Funktion die newBalance nach addLiquidity viel höher als die oldBalance. Auf diese Weise erhielt der Angreifer eine doppelte Gutschrift im MasterChef-Vertrag.

Schritt III: Gewinn erzielen
Der Angreifer rief schließlich UBT.withdrawAsset und MasterChef.withdraw auf, um das lptoken einzulösen und BTCB und WBNB zu erhalten. Da die Liquiditätsmenge größer ist, als der Angreifer haben sollte, wird der Angreifer Gewinne erzielen.

Lektionen
Neben dem Reentrancy-Problem ist das Fehlen der Verifizierung der übergebenen Token eine der Hauptursachen. Wir haben andere Fälle mit ähnlichen Problemen gesehen, wie im Visor-Fall und im Coin98-Fall.
Über BlockSec
BlockSec ist ein führendes Unternehmen für Blockchain-Sicherheit, das 2021 von einer Gruppe weltweit renommierter Sicherheitsexperten gegründet wurde. Das Unternehmen widmet sich der Verbesserung der Sicherheit und Benutzerfreundlichkeit für die aufstrebende Web3-Welt, um deren Massenadoption zu fördern. Zu diesem Zweck bietet BlockSec Dienstleistungen für die Sicherheitsprüfung von Smart Contracts und EVM-Ketten, die Phalcon-Plattform für die Sicherheit von Entwicklungen und die proaktive Abwehr von Bedrohungen, die MetaSleuth-Plattform für die Verfolgung und Untersuchung von Geldern sowie die MetaSuites-Erweiterung für Web3-Entwickler, um effizient in der Krypto-Welt zu navigieren.
Bislang hat das Unternehmen über 300 angesehene Kunden wie MetaMask, Uniswap Foundation, Compound, Forta und PancakeSwap betreut und in zwei Finanzierungsrunden von namhaften Investoren, darunter Matrix Partners, Vitalbridge Capital und Fenbushi Capital, zweistellige Millionenbeträge erhalten.
Offizielle Website: https://blocksec.com/
Offizielles Twitter-Konto: https://twitter.com/BlockSecTeam



