Back to Blog

Wiederbesuch der Wurmloch-Angriffe

Code Auditing
March 22, 2022

1. Hintergrund

Wormhole, auch bekannt als Einstein-Rosen-Brücke, ist eine spekulative Struktur, die unterschiedliche Punkte im Raum-Zeit-Gefüge miteinander verbindet. In der Welt der Blockchain wird Wormhole als Brücke zwischen verschiedenen Chains (z. B. Solana und Ethereum verwendet. Nutzer können Token-Assets über Blockchains hinweg mit Wormhole übertragen.

Am 2. Februar 2022 wurde Wormhole gehackt, und der Angreifer konnte 120.000 Ether im Wert von 320 Millionen US-Dollar prägen, was nach Poly Network den zweitgrößten Verlust in der DeFi-Geschichte darstellt.

2. Funktionsweise von Wormhole

Wormhole funktioniert, indem es die auf jeder Chain ausgestrahlten Nachrichten überwacht. Die überwachte Nachricht wird an die Ziel-Chain weitergeleitet, damit ein Cross-Chain-Kommunikationsprotokoll aufgebaut werden kann.

Die intuitive Frage ist, wie garantiert werden kann, dass die überwachte Nachricht vertrauenswürdig ist. Um dieses Problem zu lösen, führt Wormhole 19 zusätzliche Knoten ein, die als Guardians bezeichnet werden. Der aktuelle Guardian-Satz kann im Wormhole Explorer eingesehen werden. Jeder Guardian kann die überwachte Nachricht unabhängig verifizieren und die Nachricht signieren.

In Wormhole ist die Nachricht im VAA-Format organisiert. Das VAA besteht aus zwei Teilen. Einer ist der Header, der die Signaturen der Guardians sammelt. Der andere ist der Body, der Informationen für die Ziel-Chain, die Nachrichtennutzlast usw. enthält.

Sobald die Signaturen der Guardians einen Konsensschwellenwert erreichen, kann das VAA auf der Chain veröffentlicht werden.

Zusammenfassend sind die Guardians für die Integrität der übertragenen Nachricht verantwortlich.

3. Token-Brücke

Nachdem die Übertragung von Nachrichten zwischen verschiedenen Chains erläutert wurde, ist es nicht schwierig zu verstehen, wie die Token-Brücke, die Hauptanwendung von Wormhole, funktioniert.

Um Token von Chain A zu Chain B zu übertragen. Wormhole sperrt die Token auf A und prägt sie auf B. Das ist die übergeordnete Idee. In der Praxis lässt sich dies in drei Schritte unterteilen. Erstens werden die Token auf Chain A gesperrt. Zweitens wird die Nachricht, dass die Token auf Chain A nach Chain B übertragen werden sollen, gesendet. Drittens empfängt Chain B die Nachricht und die entsprechenden Token werden geprägt. Alles ist erledigt.

4. Solana-Anweisungen

In Solana besteht eine Transaktion aus mehreren Anweisungen. Jede Anweisung enthält eine Programm-ID, Konten und die Daten. Die Programm-ID repräsentiert das Programm (einen Smart Contract), das die Anweisung verarbeitet. Das Programm interpretiert die Daten und operiert auf den bereitgestellten Konten.

5. Der Wormhole-Angriff

Kurz gesagt, der Angreifer prägte 120.000 ETH auf Solana, ohne Vermögenswerte auf Ethereum zu sperren. Die Transaktion ist hier.

Die Frage ist also, wie der Angreifer in der Lage war, die 120.000 ETH auf Solana zu prägen. Lassen Sie uns die Schritte im Detail betrachten. Um den Token zu prägen, wird die Anweisung complete_wrapped aufgerufen. Diese Anweisung empfängt mehrere Adressen, und die dritte ist die Adresse, die die signierte Nachricht speichert. Bevor die 120.000 ETH geprägt werden, sollte Chain B (d. h. Solana) die signierte Nachricht (d. h. VAA) erhalten, die anzeigt, dass 120.000 ETH auf Chain A (d. h. Ethereum) gesperrt wurden.

Um die Nachricht zu veröffentlichen, wird post_vaa, definiert in post_vaa.rs, aufgerufen. Folglich wird ein Konto zur Speicherung der Nachricht erstellt. Allerdings prüft post_vaa die Signaturen der Guardians nicht. Stattdessen prüft verify_signatures, definiert in veryify_signatures.rs, die Signaturen.

Das vierte Konto, das an verify_signatures übergeben wird, ist das System-Anweisungskonto. Lassen Sie uns nun untersuchen, wie verify_signatures funktioniert.

In Zeile 103 wird die Funktion load_instruction_at aufgerufen, um die vorherige ausgeführte Anweisung secp_ix zu laden. secp_ix ruft die Secp256k1-Signaturverifizierungsfunktion auf. Somit prüft verify_signatures die Signaturen, indem es die vorherige ausgeführte Anweisung secp_ix prüft. Haben Sie jetzt alles verstanden? Die Funktion load_instruction_at prüft nicht, wo die Anweisungen geladen werden!!! Es wird erwartet, dass Sie die Anweisung von Sysvar:Instructions laden.

Das vierte Konto der Angriffstransaktion ist jedoch 2tHS1cXX2h1KBEaadprqELJ6sV9wLoaSdX68FqsrrZRd und nicht Sysvar:Instructions. In diesem Fall hat der Angreifer den Signaturprüfungsprozess erfolgreich umgangen. Wormhole glaubte, die Prüfung sei bestanden und die Nachricht wurde auf die Chain gepostet, was zur Prägung von 120.000 ETH führte, ohne etwas zu sperren!

Betrachten wir eine legitime Prüfungsanweisung. Diese Transaktion besteht aus zwei Anweisungen. Die erste ruft die Secp256k1-Prüffunktion auf, während die zweite die Anweisung verify_signatures aufruft. Beachten Sie, dass das vierte Konto hier Sysvar:Instructions ist.

Nachdem die 120.000 ETH geprägt wurden, konnte der Angreifer sie nach Ethereum zurückziehen und in andere Token umwandeln, um den Gewinn zu erzielen.

6. Patch

Wie im Repo erwähnt, ist load_instruction_at ab Version 1.8.0 nicht mehr sicher und die Sysvar-Kontoadresse wird nicht geprüft. Stattdessen wird load_instruction_at_checked empfohlen.

7. Unser Gedanke

  • Entwickler sollten sehr vertraut mit den externen Funktionen sein, die sie verwenden.
  • Konzentrieren Sie sich weiterhin auf wichtige Änderungen der verwendeten Bibliotheken. Wenn sich die Bibliothek ändert, müssen möglicherweise der Code, der die Bibliothek verwendet, geändert werden.
  • Der Bibliotheksbetreuer sollte sich der potenziellen Risiken bestimmter Änderungen bewusst sein und die gesamte Community rechtzeitig informieren. Einfaches Hinzufügen von Anmerkungen funktioniert möglicherweise nicht und ist nicht ausreichend.
  • Ihr Vertrags code muss geprüft werden, wenn sich die Versionen der Bibliothek und des Codes ändern.

Über BlockSec

BlockSec ist ein Pionier-Unternehmen für Blockchain-Sicherheit, das 2021 von einer Gruppe weltweit renommierter Sicherheitsexperten gegründet wurde. Das Unternehmen hat sich zum Ziel gesetzt, Sicherheit und Benutzerfreundlichkeit für die aufstrebende Web3-Welt zu verbessern, um deren Massenadoption zu fördern. Zu diesem Zweck bietet BlockSec Sicherheitsaudits von Smart Contracts und EVM-Chains, die Phalcon-Plattform für die Sicherheitsentwicklung und proaktive Bedrohungsabwehr, die MetaSleuth-Plattform für die Nachverfolgung und Untersuchung von Geldern sowie die MetaSuites-Erweiterung für Web3-Entwickler zur effizienten Navigation in der Krypto-Welt an.

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 wie Matrix Partners, Vitalbridge Capital und Fenbushi Capital zehn Millionen US-Dollar erhalten.

Offizielle Website: https://blocksec.com/

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

Sign up for the latest updates
Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield
Security Insights

Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield

Looking ahead, targeted freezing events like this $6.76M USDT action will only become more common. On-chain data analysis is improving. Stablecoin issuers are also working closely with regulators. As a result, hidden illicit financial networks will be exposed.

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026

During the week of March 2 to March 8, 2026, seven blockchain security incidents were reported with total losses of ~$3.25M. The incidents occurred across Base, BNB Chain, and Ethereum, exposing critical vulnerabilities in smart contract business logic, token deflationary mechanics, and asset price manipulation. The primary causes included a double-minting logic flaw during full token deposits that allowed an attacker to exponentially inflate their balances through repeated burn-and-mint cycles, a price manipulation vulnerability in an AMM-based lending market where artificially inflated vault shares created divergent price anchors to incorrectly force healthy positions into liquidation, and a flawed access control implementation relying on trivially spoofed contract interfaces that enabled attackers to bypass authorization to batch-mint and dump arbitrary tokens.

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026

During the week of February 23 to March 1, 2026, seven blockchain security incidents were reported with total losses of ~$13M. The incidents affected multiple protocols, exposing critical weaknesses in oracle design/configuration, cryptographic verification, and core business logic. The primary drivers included oracle manipulation/misconfiguration that led to the largest loss at YieldBloxDAO (~$10M), a crypto-proof verification flaw that enabled the FOOMCASH (~$2.26M) exploit, and additional token design and logic errors impacting Ploutos, LAXO, STO, HedgePay, and an unknown contract, underscoring the need for rigorous audits and continuous monitoring across all protocol layers.