Zurück zum Blog

Nr. 7: ParaSpace-Vorfall: Ein Wettlauf gegen die Zeit zur Abwehr des bisher kritischsten Angriffs der Branche

Code Auditing
17. Februar 2024
5 Min. Lesezeit
Wichtigste Erkenntnisse
  • Ursache: Der rebasingIndex von cAPE verwendete das gesamte gepoolte APE (stakedAmount + ausstehende Belohnungen + Puffer), was Angreifer über ApeCoinStaking.depositApeCoin() aufblähen konnten, um den Wert der Sicherheiten zu erhöhen.

  • Angriffsablauf: Rund 47.352 wstETH per Flash Loan beschaffen, cAPE leihen und als Sicherheit hinterlegen, deren Wert durch eine APE-Einzahlung aufblähen und anschließend weitere Vermögenswerte gegen diese Sicherheit leihen.

Hintergrund

Am 17. März 2023 erlitt Paraspace (heute Parallel Finance), eine NFT-Kreditplattform, einen kritischen Angriff aufgrund einer Schwachstelle in ihrem Preis-Orakel. Paraspace ermöglicht es Benutzern, NFTs und ERC-20-Token als Sicherheit zu hinterlegen, um ERC-20-Token zu leihen, wodurch Renditen auf NFTs erzielt werden können, ohne diese verkaufen zu müssen.

Klicken Sie hier, um den Tweet zu lesen
Klicken Sie hier, um den Tweet zu lesen

Ein Hauptmerkmal von ParaSpace ist ApeStaking, das APE-Belohnungen automatisch reinvestiert (auto-compounding). Benutzer, die APE staken, erhalten cAPE-Token, eine cToken-Repräsentation von APE, die als Sicherheit für das Leihen von Vermögenswerten wie USDC und WETH verwendet werden können. Die Hinterlegung von cAPE-Token gewährt pcAPE-Anteile, deren Besicherungswert durch Multiplikation des pcAPE-Betrags mit seinem rebasingIndex berechnet wird.

Der rebasingIndex wird aus dem gesamten gepoolten APE-Guthaben und den gesamten Anteilen abgeleitet, wie in den folgenden Code-Snippets dargestellt:

function _scaledBalanceOf(address user, uint256 rebasingIndex)
    internal
    view
    returns (uint256)
{
    return super.scaledBalanceOf(user).rayMul(rebasingIndex);
}

function lastRebasingIndex() internal view override returns (uint256) {
  return ICApe(_underlyingAsset).getPooledApeByShares(WadRayMath.RAY);
}

function getPooledApeByShares(uint256 sharesAmount)
    public
    view
    returns (uint256)
{
    uint256 totalShares = _getTotalShares();
    if (totalShares == 0) {
        return 0;
    } else {
        return
            sharesAmount.mul(_getTotalPooledApeBalance()).div(totalShares);
    }
}

function _getTotalPooledApeBalance()
    internal
    view
    override
    returns (uint256)
{
    (uint256 stakedAmount, ) = apeStaking.addressPosition(address(this));
    uint256 rewardAmount = apeStaking.pendingRewards(
        APE_COIN_POOL_ID,
        address(this),
        0
    );
    return stakedAmount + rewardAmount + bufferBalance;
}

Die Funktion _getTotalPooledApeBalance() summiert die gestakten APE-Token, ausstehende Belohnungen und ein Pufferguthaben aus dem ApeCoinStaking-Vertrag.

Schwachstellenanalyse

Die Schwachstelle liegt in der Manipulation des rebasingIndex, der den Besicherungswert der cAPE-Token künstlich aufbläht. Speziell erhöht die Funktion depositApeCoin() im ApeCoinStaking-Vertrag den stakedAmount für eine Position. Ein Angreifer kann dies ausnutzen, indem er APE-Token in die cAPE-Position einzahlt, was das Ergebnis von _getTotalPooledApeBalance() und somit den rebasingIndex in die Höhe treibt.

function depositApeCoin(uint256 _amount, address _recipient) public {
    if (_amount < MIN_DEPOSIT) revert DepositMoreThanOneAPE();
    updatePool(APECOIN_POOL_ID);

    Position storage position = addressPosition[_recipient];
    _deposit(APECOIN_POOL_ID, position, _amount);

    apeCoin.transferFrom(msg.sender, address(this), _amount);

    emit Deposit(msg.sender, _amount, _recipient);
}

function _deposit(uint256 _poolId, Position storage _position, uint256 _amount) private {
  Pool storage pool = pools[_poolId];
  _position.stakedAmount += _amount;
  pool.stakedAmount += _amount.toUint96();
  _position.rewardsDebt += (_amount * pool.accumulatedRewardsPerShare).toInt256();
}

Dieser Designfehler ermöglicht es dem Angreifer, den Besicherungswert aufzublähen, indem er APE-Token über depositApeCoin() mit cAPE als Empfänger einzahlt.

Angriffsanalyse

Der Angreifer nutzte diese Schwachstelle mithilfe eines Flash-Loan-Angriffs in fünf entscheidenden Schritten aus:

  1. Erhielt einen Flash Loan von etwa 47.352 wstETH und stellte etwa 46.018 wstETH bereit, um über mehrere Verträge cAPE zu leihen.
  2. Hinterlegte etwa 12.880.000 cAPE-Token als Sicherheit.
  3. Tauschte etwa 1.205 wstETH gegen rund 492.124 APE-Token und zog 1.839.999 cAPE in APE-Token ab.
  4. Einzahlte 2.332.214 APE-Token in die cAPE-Position durch Aufruf von ApeCoinStaking.depositApeCoin(), wodurch der stakedAmount des Protokolls von 851.662 auf 3.183.876 erhöht wurde (ein Anstieg von 373%).
  5. Nutzte die aufgeblähte Sicherheit, um große Mengen an Vermögenswerten wie USDC und WETH für einen Gewinn zu leihen.

Diese Manipulation des pcAPE-Preises mittels Flash Loans nutzte die Verwendung von Spot-Preisen in der Orakel-Berechnung aus.

Starten Sie mit Phalcon Security

Erkennen Sie jede Bedrohung, alarmieren Sie bei Wichtigem und blockieren Sie Angriffe.

Jetzt kostenlos testen

Zusammenfassung

Der ParaSpace-Vorfall unterstreicht die Risiken von Orakel-Manipulationen und Flash-Loan-Angriffen in DeFi-Protokollen. Er verdeutlicht die entscheidende Notwendigkeit für robuste, manipulationsresistente Preis-Orakel und eine kontinuierliche Sicherheitsüberwachung über Audits vor dem Start hinaus.

Das Phalcon Security-System von BlockSec demonstrierte den Wert aktiver Bedrohungserkennung und -prävention, indem es den Angriff automatisch blockierte und Benutzervermögen schützte. Dieser Vorfall dient als Erinnerung für DeFi-Protokolle, umfassende Sicherheitsmaßnahmen zu implementieren, einschließlich Smart-Contract-Audits, Infrastruktur-Audits und Überwachung in Echtzeit.

Für weitere Einblicke in Sicherheitsvorfälle im DeFi-Bereich und bewährte Verfahren erkunden Sie unsere Security Incident Library und ziehen Sie unsere Dienste für Smart Contract Audit und Infrastruktur-Audit in Betracht.

Erkunden Sie die MetaSleuth-Untersuchung

Verfolgen Sie Geldflüsse und bauen Sie Beweise für Untersuchungen auf

Jetzt kostenlos testen

Lesen Sie weitere Artikel in dieser Serie:

Bester Sicherheits-Auditor für Web3

Validieren Sie Design, Code und Geschäftslogik vor dem Start

Für die neuesten Informationen anmelden
Verluste von rund 5,57 Millionen USD: Exploits bei X100 Freezer und NEM | BlockSec-Wochenrückblick
Security Insights

Verluste von rund 5,57 Millionen USD: Exploits bei X100 Freezer und NEM | BlockSec-Wochenrückblick

Dieser Wochenbericht behandelt zwei Sicherheitsvorfälle auf Ethereum und BNB Chain im Zeitraum 19.10.2026–25.10.2026. Er untersucht eine durch einen Flash Loan finanzierte Übernahme der Governance von X100 Freezer sowie einen Fehler bei der Steuerabrechnung, der einen Liquiditätspool eines NEM-Tokens auf BNB Chain betrifft. Die geschätzten Verluste im Rahmen des Berichts belaufen sich insgesamt auf etwa 5,57 Millionen USD: rund 4,75 Millionen USD aus der exemplarischen X100-Transaktion und rund 820 Tausend USD aus dem Vorfall beim NEM-Pool. Gesondert gemeldete spätere Entnahmen aus X100 sind in der Gesamtsumme nicht enthalten.

Verluste von rund 3,87 Millionen USD: Hacks bei Autheo Network und UNCX | BlockSec Weekly
Security Insights

Verluste von rund 3,87 Millionen USD: Hacks bei Autheo Network und UNCX | BlockSec Weekly

Dieser Wochenbericht behandelt 3 Sicherheitsvorfälle im Zeitraum 12.10.2026–18.10.2026 mit einem geschätzten Gesamtschaden von etwa 3,87 Millionen USD. Bei Autheo Network wurde ein privater Schlüssel kompromittiert; der Schaden betrug rund 1,76 Millionen USD. Qubic Wallet verlor aufgrund einer schwachen Seed-Generierung rund 1,30 Millionen USD. Bei den Smart Token Vesting V2-Verträgen von UNCX Network führte ein Buchführungsfehler auf Ethereum, BNB Chain, Base und Robinhood Chain zu einem Schaden von rund 807 Tausend USD. Die hervorgehobene Analyse zu UNCX erklärt, wie eine fehlerhafte Berechnung der Gesamtanteile Vesting-Tranchen zusammenführte, die mit unterschiedlichen Token-zu-Anteil-Verhältnissen erstellt worden waren, und dadurch überhöhte Entnahmen aus gemeinsamen Pools ermöglichte.

Rund 542.000 $ verloren: MakerDaoBot-Exploit | BlockSec Wochenrückblick
Security Insights

Rund 542.000 $ verloren: MakerDaoBot-Exploit | BlockSec Wochenrückblick

Ethereum, 5.–11.10.2026: 1 Vorfall, ca. 542.000 $ Verlust. Über eine ungeschützte MakerDaoBot-Funktion erhielt ein bösartiger Adapter Zugriff auf Bot-Guthaben, wickelte 4 ETH-A-Auktionen ab und tauschte 200 ETH-A in WETH; 200 ETH gingen an den Angreifer.

Der beste Sicherheitsauditor für Web3

Lassen Sie Design, Code und Geschäftslogik vor dem Launch prüfen. Nach den höchsten Sicherheitsstandards der Branche.

BlockSec-Audit