Zurück zum Blog

Rückblick auf den Poly-Network-Hack aus Sicht eines Sicherheitsforschers

Code Auditing
15. August 2021
4 Min. Lesezeit

In diesem Blog möchten wir den gesamten Prozess des Poly Network Hacks überprüfen und die gewonnenen Erkenntnisse diskutieren.

Wir wussten, dass das Poly Network am 10. August 2021 gehackt wurde (wir verwenden in diesem Blog die Zeitzone +8). Es gab jedoch keine Hinweise darauf, wie der Hack stattgefunden hat und was die Grundursache des Hacks war. Als Sicherheitsexperten-Team haben wir unsere Untersuchung begonnen.

Schritt 1: Angriffs-Transaktion finden

Wir haben die Angriffs-Transaktion 0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a in unserem Transaktionsvirtualisierungssystem (https://tx.blocksecteam.com) erneut abgespielt.

Die Spur ist ziemlich einfach und unterscheidet sich von anderen Angriffen, die den Preis manipulieren. Diese weisen normalerweise sehr komplizierte Funktionsaufrufe auf (siehe den Popsicle-Hack.).

Schritt 2: Smart Contract Code analysieren

Nachdem wir die Angriffstrace erhalten hatten, mussten wir den Quellcode des Vertrags überprüfen. Überraschenderweise hatte das Poly Network keinen verifizierten Quellcode auf Etherscan. Wir konnten den veröffentlichten Quellcode jedoch auf GitHub finden.

Nach der Überprüfung des Quellcodes konnten wir keine offensichtliche Code-Schwachstelle finden. Wir verglichen auch die Angriffstrace mit einer legitimen Transaktions-Trace und stellten fest, dass sie ähnlich waren.

Schritt 3: Kritische Zustände wiederherstellen

Dann stellten wir die kritischen Zustände während des Angriffs wieder her. Da der Angriff durch den Aufruf von VerifyHeaderAndExecuteTxEvent gestartet wurde, stellten wir mehrere kritische Variablenwerte wieder her, die wir in unserer ersten Analyse geteilt haben [1].

Während dieses Prozesses stellten wir fest, dass es nur einen Keeper gab (siehe obige Abbildung). Da der Wert aus der Angriffstrace stammt und die Angriffstransaktion alle Signaturprüfungen bestanden hatte, dachten wir, der mögliche Grund könnte die Offenlegung des privaten Schlüssels oder ein Fehler im Signaturprozess des Servers sein [1].

Hier haben wir jedoch einen Fehler gemacht. Einen Angriff zu analysieren ist wie eine Zwiebel zu schälen. Man schält sie Schicht für Schicht, bis man die wirkliche „Wurzel-Wurzel-Wurzel“-Ursache findet. Damals haben wir die Zwiebel nicht weiter geschält, um zu sehen, ob der Keeper geändert worden war!

Schritt 4: Neuer Hinweis

Ein paar Stunden später gaben Kelvin und Slow Mist neue Hinweise auf Twitter, die zeigten, dass der Keeper gewechselt worden war. Der Änderungsprozess missbrauchte eine Hash-Kollision, um eine leistungsstarke Funktion aufzurufen – einen „smarten“ Hack.

Nun erkannten wir, dass unsere erste Analyse nicht vollständig war. Basierend auf den neuesten Informationen spielten wir die Transaktion, die den Keeper geändert hat, erneut ab. Immer noch ist die Spur sehr einfach.

Aber denken Sie daran, dass es während dieser Transaktion vier Keeper gab (statt einem). Alle diese Schlüssel sind die gleichen wie bei anderen legitimen Transaktionen – das bedeutet, dass die Schlüssel legitim sind. Hier kommt die Frage: Warum konnte die Transaktion, die den Keeper ändert, überhaupt auf die Kette gesetzt und ausgeführt werden?

Schritt 5: Quell-Transaktion lokalisieren

Wir versuchten dann, die Quell-Transaktion zu lokalisieren, da das Poly Network eine Cross-Chain-Bridge ist. Es sollte irgendwo eine Quell-Transaktion existieren. Dies taten wir, indem wir die kritische Variable dekodierten (wie im folgenden Bild gezeigt). Sie zeigt den Transaktions-Hash der Quell-Kette und der Poly-Kette.

Es gibt einen Trick, der bisher nirgendwo erwähnt wurde. Der tx-Hash-Wert in der Variablen hat eine andere Darstellung als der offizielle Wert in der Poly-Kette. Zum Beispiel ist der tx-Hash der Poly-Kette in der Abbildung 0x80cc978479eb082e1e656993c63dee7a5d08a00dc2b2aab88bc0e465cfa0721a. Aber im Poly-Chain-Browser ist der Hash-Wert 1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80 (sehen Sie den Unterschied?). Wir teilten unsere Erkenntnisse am 11. August um 16:55 Uhr in der EthereumSecurity TG-Gruppe mit.

Schritt 6: Grundursache lokalisieren

Aber immer noch können wir die Frage nicht beantworten: „Warum wurde die Transaktion zur Änderung des Keepers auf der Kette verpackt?“ Um diese Frage zu beantworten, begannen wir auf der Ontology-Kette und fanden den Transaktionsfluss:

Ontology-Transaktion -> Ontology-Relayer -> Poly-Kette -> Ethereum-Relayer -> Ethereum

Wir lasen dann den Quellcode der Ontology-Kette und der Relayer. Nach ein paar Stunden stellten wir fest, dass der Ontology-Relayer nicht genügend Validierung für die Cross-Chain-Transaktion hatte. Dies ließ die bösartige Transaktion auf der Poly-Kette verpacken. Danach war das System kompromittiert.

Nach interner Diskussion und Herausforderungen veröffentlichten wir unsere Ergebnisse am 12. August um 02:41 Uhr auf Twitter und Medium[3].

Lektionen

  • Security by Design. Sicherheit sollte Teil des gesamten Prozesses eines DeFi-Projekts sein. Benutzer vertrauen ihr Geld dem Projekt an. Im Gegenzug sollte das Projekt dieses Vertrauen verdienen. Leider sahen wir die Ignoranz der Sicherheit durch das Poly Network. Zum Beispiel ist der Mangel an Validierung eine altmodische Sicherheitslücke, die ich im Bachelor-Kurs unterrichtet habe.

  • Es gibt keinen verifizierten Quellcode für DeFi-Projekte mit mehr als 600 Millionen TVL. Die Grundlage der dezentralen Infrastruktur ist Vertrauen und die Grundlage des Vertrauens ist Transparenz. Leider sind Benutzer bereit, ihr Geld in ein Blackbox-Projekt zu investieren, was mich überrascht und beunruhigt. Wie die Sicherheitswahrnehmung der Benutzer verbessert werden kann, erfordert wahrscheinlich eine neue Lösung.

Referenz

[1]https://blocksecteam.medium.com/the-initial-analysis-of-the-polynetwork-hack-270ac6072e2a

[2]https://twitter.com/kelvinfichter/status/1425290462076747777

[3]https://blocksecteam.medium.com/the-further-analysis-of-the-poly-network-attack-6c459199c057

Credits: Yufeng Hu, Siwei Wu, Lei Wu, Yajin Zhou @ BlockSecTeam

BlockSec (@BlockSecTeam) / Twitter

Für die neuesten Informationen anmelden
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.

~418 Mio. $ verloren: Bitget- und NEAR-Intents-Exploits | BlockSec Weekly
Security Insights

~418 Mio. $ verloren: Bitget- und NEAR-Intents-Exploits | BlockSec Weekly

Dieser 14-tägige Sicherheitsbericht (21.9.–4.10.26) erfasst 8 Vorfälle mit ca. 418,4 Mio. USD Verlust auf Ethereum, BNB Chain, Solana u.a. Bitget: 387,5 Mio. USD Lücke in Drittprodukt. NEAR Intents: 3,87 Mio. USD Rückerstattungsfehler, fehlender Rollback

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
Rückblick auf den Poly-Network-Hack aus Sicht eines Sicherheitsforschers