Nicht alle Token sind gut: Eine schnelle Analyse des Paraluni-Angriffs

Der Artikel liefert eine detaillierte Analyse eines Angriffs auf das Paraluni-Projekt, beleuchtet Schwachstellen im Zusammenhang mit der Token-Verifizierung und Reentrancy und betont die Bedeutung von Sicherheitsmaßnahmen in der aufstrebenden Web3-Welt.

Nicht alle Token sind gut: Eine schnelle Analyse des Paraluni-Angriffs

Das Paraluni-Projekt wurde am Morgen des 13. März (UTC +8) angegriffen. Der Angreifer nutzte zwei Schwachstellen aus, um das Protokoll anzugreifen. Die erste Schwachstelle ist das Fehlen der Verifizierung von übergebenen Tokens und die zweite ist die traditionelle Reentrancy. Der Angreifer führte mehrere Angriffstransaktionen durch. Im Folgenden verwenden wir eine davon 0xf2bba649019ce40a67f0fb74e5e800257d359d9094b6ba6faea14ffa4d3446b1, um den gesamten Angriffsprozess zu veranschaulichen.

Schritt I: Hinzufügen von liquidity zu paraRouter

Der Angreifer rief addLiquidity für den BTCB-WBNB-Pool (Index = 9) auf, und der Pool mintet 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 entliehen wurden.

Schritt II: Aufrufen von depositByAddLiquidity von MasterChef Der Angreifer rief depositByAddLiquidity auf, indem er _pid als 9 und die Tokens UGT und UBT als Parameter angab. Die Funktion prüft jedoch nicht, ob die Reserve-Tokens des Pools mit den übergebenen Tokens (UGT und UBT) übereinstimmen.

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

Leider ist das newBalance nach addLiquidity aufgrund der Saldoänderung in der deposit-Funktion viel größer als das 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 Anzahl der Liquidität größer ist, als der Angreifer hätte haben sollen, erzielte der Angreifer Gewinne.

Lektionen

Neben dem Reentrancy-Problem ist die fehlende Verifizierung der übergebenen Tokens 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 Pionierunternehmen für Blockchain-Sicherheit, das 2021 von einer Gruppe weltweit herausragender Sicherheitsexperten gegründet wurde. Das Unternehmen engagiert sich für die Verbesserung der Sicherheit und Benutzerfreundlichkeit der aufstrebenden Web3-Welt, um deren Massenadoption zu erleichtern. Zu diesem Zweck bietet BlockSec Sicherheitsaudits für Smart Contracts und EVM-Chains, die Phalcon-Plattform für die Sicherheitsentwicklung und die proaktive Abwehr von Bedrohungen, die MetaSleuth-Plattform für die Geldverfolgung und -ermittlung sowie die MetaSuites-Erweiterung für Web3-Entwickler, um effizient in der Krypto-Welt zu surfen.

Bis heute 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, Dutzende Millionen US-Dollar erhalten.

Offizielle Website: https://blocksec.com/

Offizieller Twitter-Account: https://twitter.com/BlockSecTeam

Sign up for the latest updates