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
Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation
Security Insights

Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation

On April 1, 2026 (UTC), Drift Protocol on Solana suffered a $285.3M loss after an attacker exploited Solana's durable nonce mechanism to delay the execution of phished multisig approvals, ultimately transferring administrative control of the protocol's 2-of-5 Squads governance with zero timelock. With full admin privileges, the attacker created a malicious collateral market (CVT), inflated its oracle price, relaxed withdrawal protections, and drained USDC, JLP, SOL, cbBTC, and other assets through 31 rapid withdrawals in approximately 12 minutes. This incident highlights how durable nonce-based delayed execution can decouple signer intent from on-chain execution, bypassing the temporal assumptions that multisig security implicitly relies on.

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

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026

This BlockSec weekly security report covers eight DeFi attack incidents detected between March 23 and March 29, 2026, across Ethereum and BNB Chain, with total estimated losses of approximately $1.53M. Incidents include a $679K flawed burn mechanism exploit on the BCE token, a $512K spot-price manipulation attack on Cyrus Finance's PancakeSwap V3 liquidity withdrawal, a $133.5K flash-loan-driven referral reward manipulation on a TUR staking contract, and multiple integer overflow, reentrancy, and accounting error vulnerabilities in DeFi protocols. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Newsletter -  March 2026
Security Insights

Newsletter - March 2026

In March 2026, the DeFi ecosystem experienced three major security incidents. Resolv Protocol lost ~$80M due to compromised privileged infrastructure keys, BitcoinReserveOffering suffered ~$2.7M from a double-minting logic flaw, and Venus Protocol incurred ~$2.15M following a donation attack combined with market manipulation.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit