Back to Blog

ポリネットワークハッキングのセキュリティ研究者視点からの回顧

Code Auditing
2021年8月15日
4 min read

このブログでは、Poly Networkのハッキングの全プロセスをレビューし、そこから得られた教訓について議論します。

このブログでは、Poly Networkが2021年8月10日(このブログでは+8タイムゾーンを使用)にハッキングされていたことを認識していました。しかし、ハッキングがどのように行われたのか、またハッキングの根本原因については全くの手がかりがありませんでした。セキュリティリサーチチームとして、私たちは調査を開始しました。

ステップ1:攻撃トランザクションの特定

私たちは、トランザクション仮想化システム(https://tx.blocksecteam.com)で、攻撃トランザクション 0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a をリプレイしました。

トレースは非常にシンプルで、価格操作を行う他の攻撃とは異なりました。それらは通常、非常に複雑な関数呼び出しを伴います(Popsicleハックを参照)。

ステップ2:コントラクトコードの分析

攻撃トレースを取得した後、コントラクトのソースコードを確認する必要があります。驚くべきことに、Poly NetworkはEtherscanで検証済みのソースコードを公開していませんでした。しかし、私たちはGitHubで公開されているソースコードを見つけることができました。

ソースコードをレビューしましたが、明確なコードの脆弱性は見つかりませんでした。また、攻撃トレースと正当なトランザクションのトレースを比較しましたが、それらは類似していました。

ステップ3:重要な状態の復元

次に、攻撃中の重要な状態を復元しました。攻撃はVerifyHeaderAndExecuteTxEventの呼び出しから開始されたため、いくつかの重要な変数の値を復元しました。これは私たちの最初の分析で共有しました[1]。

このプロセス中に、キーパーが1つしか存在しないことを発見しました(上記の図を参照)。値は攻撃トレースから取得され、攻撃トランザクションはすべての署名検証を通過していたため、秘密鍵の漏洩またはサーバーの署名プロセスにおけるバグが潜在的な理由であると考えました[1]。

しかし、ここで間違いを犯しました。攻撃の分析は玉ねぎを剥くようなものです。1枚ずつ剥がしていき、真の「根本的な根本的な」原因を特定します。その時、キーパーが変更されたかどうかをさらに確認しませんでした!

ステップ4:新しい手がかり

数時間後、Kelvinとslow mistがTwitterで新しい手がかりを提供し、キーパーが変更されたことを示しました。変更プロセスは、ハッシュの衝突を悪用して強力な関数、つまり「スマート」ハックを呼び出しました。

ここで、最初の分析が完全ではなかったことに気づきました。最新の情報に基づき、キーパーを変更したトランザクションをリプレイしました。それでもトレースは非常にシンプルでした。

しかし、このトランザクション中には、4つのキーパー(1つではなく)が存在することを覚えておいてください。これらのキーはすべて、他の正当なトランザクションと同じです。つまり、キーは正当です。ここで疑問が生じます。キーパーを変更するトランザクションがチェーンに記録され、実行されたのはなぜでしょうか?

ステップ5:ソーストランザクションの特定

Poly Networkはクロスチェーンブリッジであるため、ソーストランザクションを特定しようとしました。どこかにソーストランザクションが存在するはずです。これは、重要な変数をデコードすることによって行いました(以下の図に示す)。ソースチェーンとPolyチェーンのトランザクションハッシュが表示されます。

どこにも言及されていないトリックがあります。変数内のtxハッシュ値は、Polyチェーンの公式値とは異なる表現になっています。例えば、図中のPolyチェーンのtxハッシュは0x80cc978479eb082e1e656993c63dee7a5d08a00dc2b2aab88bc0e465cfa0721aです。しかし、Polyチェーンブラウザでは、ハッシュ値は1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80です(違いがわかりますか?)。私たちは、8月11日16:55にEthereumSecurity tgグループで発見を共有しました。

ステップ6:根本原因の特定

しかし、それでも「キーパーを変更するトランザクション」がチェーンにパッケージ化された理由を説明することはできませんでした。この質問に答えるために、Ontologyチェーンから開始し、トランザクションフローを見つけました。

Ontologyトランザクション -> Ontologyリレイヤー -> Polyチェーン -> Ethereumリレイヤー -> Ethereum

その後、Ontologyチェーンとリレイヤーのソースコードを読みました。数時間後、Ontologyリレイヤーはクロスチェーントランザクションに対して十分な検証を行っていないことがわかりました。これにより、悪意のあるトランザクションがPolyチェーンにパッケージ化される可能性があります。その後、システムは乗っ取られました。

内部で議論し、異議を唱えた後、8月12日02:41にTwitterとmedium[3]で発見を発表しました。

教訓

  • 設計によるセキュリティ。 セキュリティはDeFiプロジェクトの全プロセスにおいて考慮されるべきです。ユーザーはプロジェクトにお金を託します。したがって、プロジェクトはその信頼に値するべきです。残念ながら、Poly Networkのセキュリティに対する無関心が見られました。例えば、検証の欠如は旧式のセキュリティ脆弱性であり、私は学部生向けのクラスで教えました。

  • 6億ドル以上のTVLを持つDeFiプロジェクトなどに検証済みのソースコードがない。 分散型インフラストラクチャの基盤は信頼であり、信頼の基盤は透明性です。残念ながら、ユーザーはブラックボックスプロジェクトにお金を投じることを厭いません。これは私を驚かせ、懸念させています。ユーザーのセキュリティ意識をどのように向上させるかは、新しいソリューションが必要かもしれません。

参考文献

[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

クレジット:Yufeng Hu, Siwei Wu, Lei Wu, Yajin Zhou @ BlockSecTeam

BlockSec (@BlockSecTeam) / Twitter

Sign up for the latest updates
約3.2億ドル消失:Liquid NetworkとSymbiosisのエクスプロイト | BlockSec
Security Insights

約3.2億ドル消失:Liquid NetworkとSymbiosisのエクスプロイト | BlockSec

本レポート(2026/09/07-09/13)は、約3.2億ドルの損失を招いた2件のセキュリティ事件を検証。前回未報告の9/6 Liquid Networkの脆弱性では、証明キャッシュのキー生成に境界区切りがなく、他出力の検証結果が流用され4,000枚の無担保L-BTCが作成・ペグアウトされた。SymbiosisのBitcoinルートでは、入金者指定のIDを使用し手数料の負値チェックを怠り、330satの入金で466億syBTCが発行され、流動性提供者らに約9.97BTC(約77万ドル)の損失が発生。

約940万ドルの損失:Injective、Aquiferのエクスプロイト | BlockSec Weekly
Security Insights

約940万ドルの損失:Injective、Aquiferのエクスプロイト | BlockSec Weekly

先週(2026/08/31~09/06)、Injective、Solana、Ethereum、Flow EVMで4件の攻撃が発生し損失は約940万ドル。Injectiveは保険基金IDとオプション市場IDの衝突で約480万ドル、SolanaのAquiferは未検証Token Programで約247万ドル、EthereumのNotional Finance V1は`uint128`キャスト不備で約173万ドル、Flow EVMのAnkr FLOWは一時停止回避と古い比率発行で約41万ドルを失った。

スマートコントラクトを超えて:Web3におけるドメインとDNSの運用セキュリティ
Security Insights

スマートコントラクトを超えて:Web3におけるドメインとDNSの運用セキュリティ

コントラクト監査は契約書止まり。DefiLlama TVL上位100件のドメインにSEAL基準のDNS・レジストラ検査を8項目、計800回実施した結果、全通過は1件のみ。多くのプロジェクトに欠けている4つの管理策と、ユーザーの入口での重要性を解説。

Best Security Auditor for Web3

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

BlockSec Audit
ポリネットワークハッキングのセキュリティ研究者視点からの回顧