Back to Blog

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

Code Auditing
August 15, 2021
4 min read

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

Sign up for the latest updates
~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis
Security Insights

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis

This BlockSec deep-dive analyzes the KelpDAO $290M rsETH cross-chain bridge exploit (April 18, 2026), attributed to the Lazarus Group, tracing a causal chain across three layers: how a single-point DVN dependency enabled the attack, how DeFi composability cascaded the damage through Aave V3 lending markets to freeze WETH liquidity exceeding $6.7B across Ethereum, Arbitrum, Base, Mantle, and Linea, and how the crisis forced decentralized governance to exercise centralized emergency powers. The article examines three parameters that shaped the cascade's severity (LTV, pool depth, and cross-chain deployment count) and provides an exclusive technical breakdown of Arbitrum Security Council's forced state transition, an atomic contract upgrade that moved 30,766 ETH without the holder's signature.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.

Best Security Auditor for Web3

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

BlockSec Audit