Back to Blog

Die Retrospektive des Poly Network Hacks aus der Sicht eines Sicherheitsforschers

Code Auditing
August 15, 2021

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 keinen Hinweis darauf, wie der Hack stattgefunden hat und was die eigentliche Ursache des Hacks war. Als Sicherheitsteam haben wir unsere Untersuchung begonnen.

Schritt 1: Finde die Angriffstransaktion

Wir haben die Angriffstransaktion 0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a in unserem Transaktionsvirtualisierungssystem (https://tx.blocksecteam.com) nachgespielt.

Die Spur ist ziemlich einfach, was sich von anderen Angriffen unterscheidet, die den Preis manipulieren. Sie haben normalerweise sehr komplizierte Funktionsaufrufe (siehe den Popsicle-Hack.).

Schritt 2: Analysiere den Vertragscode

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

Nach der Überprüfung des Quellcodes haben wir keine offensichtlichen Code-Schwachstellen gefunden. Wir verglichen auch die Angriffstransaktion mit einer legitimen Transaktionstransaktion und stellten fest, dass sie ähnlich sind.

Schritt 3: Stelle die kritischen Zustände wieder her

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

Dabei stellten wir fest, dass es nur einen Keeper gibt (siehe obige Abbildung). Da der Wert aus der Angriffstransaktion stammt und die Angriffstransaktion alle Signaturprüfungen bestanden hat, dachten wir, der potenzielle Grund könnte die Offenlegung des privaten Schlüssels oder ein Fehler im Signierungsprozess des Servers sein [1].

Hier haben wir jedoch einen Fehler gemacht. Die Analyse eines Angriffs ist wie das Schälen einer Zwiebel. Man schält sie Schicht für Schicht, bis man die eigentliche "Wurzel-Wurzel-Wurzel"-Ursache gefunden hat. Zu diesem Zeitpunkt haben wir die Zwiebel nicht weiter geschält, um zu sehen, ob der Keeper geändert wurde!

Schritt 4: Neuer Hinweis

Ein paar Stunden später gaben Kelvin und Slow Mist neue Hinweise auf Twitter und zeigten an, dass der Keeper geändert wurde. Der Änderungsprozess missbrauchte eine Hash-Kollision, um eine mächtige Funktion aufzurufen – einen „smarten“ Hack.

Nun erkannten wir, dass unsere erste Analyse unvollständig war. Basierend auf den neuesten Informationen haben wir die Transaktion nachgespielt, die den Keeper geändert hat. Immer noch ist die Spur sehr einfach.

Aber denken Sie daran, dass während dieser Transaktion vier Keeper (anstelle von einem) vorhanden sind. Alle diese Schlüssel sind dieselben wie bei anderen legitimen Transaktionen – was bedeutet, dass die Schlüssel legitim sind. Hier stellt sich die Frage: Warum konnte die Transaktion, die den Keeper ändert, überhaupt auf der Kette platziert und ausgeführt werden?

Schritt 5: Ursprungstransaktion lokalisieren

Wir haben dann versucht, die Ursprungstransaktion zu lokalisieren, da das Poly Network eine Cross-Chain-Brücke ist. Es sollte irgendwo eine Ursprungstransaktion existieren. Dies haben wir getan, indem wir die kritische Variable dekodiert haben (wie im folgenden Bild gezeigt). Sie zeigt die Transaktions-Hash der Quellkette und der Poly-Kette.

Es gibt einen Trick, der nirgendwo anders 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-Kettenbrowser 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.

Schritt 6: Ursache lokalisieren

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

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

Dann lasen wir den Quellcode der Ontology-Kette und der Relayer. Nach ein paar Stunden stellten wir fest, dass der Ontology-Relayer nicht über genügend Validierung für die Cross-Chain-Transaktion verfügte. Dies konnte dazu führen, dass die bösartige Transaktion auf der Poly-Kette gepackt wurde. Danach war das System kompromittiert.

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

Lektionen

  • Security by Design. Sicherheit sollte im gesamten Prozess eines DeFi-Projekts eine Rolle spielen. Nutzer vertrauen ihr Geld dem Projekt an. Im Gegenzug sollte das Projekt das Vertrauen verdienen. Leider sahen wir die Ignoranz des Poly Networks bezüglich Sicherheit. Beispielsweise ist der Mangel an Validierung eine alte Sicherheitslücke, die ich in meinem Grundstudium gelehrt habe.

  • Es gibt keinen verifizierten Quellcode für ein DeFi-Projekt mit mehr als 600 Millionen TVL. Die Basis der dezentralen Infrastruktur ist Vertrauen und die Grundlage des Vertrauens ist Transparenz. Leider sind die Nutzer bereit, ihr Geld in ein Blackbox-Projekt zu stecken, was mich überrascht und beunruhigt. Wie die Sicherheitswahrnehmung der Nutzer 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
Tracing $1.6B in TRON USDT: Inside the VerilyHK Ponzi Infrastructure
Case Studies

Tracing $1.6B in TRON USDT: Inside the VerilyHK Ponzi Infrastructure

An on-chain investigation into VerilyHK, a fraudulent platform that moved $1.6B in TRON USDT through a multi-layered fund-routing infrastructure of rotating wallets, paired payout channels, and exchange exit funnels, with traced connections to the FinCEN-sanctioned Huione Group.

Weekly Web3 Security Incident Roundup | Mar 30 – Apr 5, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 30 – Apr 5, 2026

This BlockSec weekly security report covers nine DeFi attack incidents detected between March 30 and April 5, 2026, across Solana, BNB Chain, Arbitrum, and Polygon, with total estimated losses of approximately $287M. The week was dominated by the $285.3M Drift Protocol exploit on Solana, where attackers combined multisig signer social engineering with Solana's durable nonce mechanism to bypass a zero-timelock 2-of-5 Security Council, alongside notable incidents including a $950K flash loan TWAP manipulation against the LML staking protocol, a $359K Silo Finance vault inflation via an external `wstUSR` market donation exploiting a depegged-asset oracle and `totalAssets()` accounting flaw, and an EIP-7702 delegated-code access control failure. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident, covering flawed business logic, access control, price manipulation, phishing, and misconfiguration attack types.

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.

Best Security Auditor for Web3

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

BlockSec Audit