CertiK: PolyNetwork 攻撃イベントの分析
CertiK
2021-08-13 03:45
本文约2334字,阅读全文需要约9分钟
「ハッカーは所有者の証明書を使って物件を見つけて鍵を入手した。その証明は偽物だったが、本物の鍵をその物件から入手した。」

「ハッカーは所有者の証明書を使って物件を見つけて鍵を入手した。その証明は偽物だったが、本物の鍵をその物件から入手した。」

「ハッカーは所有者の証明書を使って物件を見つけて鍵を入手した。その証明は偽物だったが、本物の鍵をその物件から入手した。」

副題

2021 年 8 月 10 日、PolyNetwork がクロスチェーン攻撃を受け、6 億米ドルの暗号化資産が転送されました (その後、攻撃者は盗まれた資産を次々と返還し始めました)。攻撃者は複数のパブリック チェーン上で攻撃トランザクションを実行し、クロスチェーン管理契約とリピーター コンポーネントを通じて攻撃を完了しました。

上記のプロパティの例を使用して説明すると、ハッカーは偽の住宅所有者証明書 (ソース チェーン上の無効なトランザクション) を使用して、プロパティ (リピーター) から本物のキー (アライアンス チェーン上の署名済みマークル証明書) を取得しました。

副題

攻撃分析

1. ハッカーは、ソースチェーン上では無効であるはずの攻撃トランザクションを初期化しました。

2. 攻撃トランザクションは完全にチェックされずにソース チェーンに書き込まれ、リピーターによってアライアンス チェーンのマークル ツリーに組み込まれて署名され、その後アライアンス チェーン ブロックにリリースされました。

4. キーパーの許可を取得した後、ハッカーは複数のパブリック チェーン上の資産のロックを任意に解除できます。

ここで注目に値するのは、一部のチェーン上の Poly Network のリピーターは攻撃トランザクションを通過していないため、スマート コントラクトが類似しているにもかかわらず、ターゲット チェーン上の一部の資産は影響を受けないということです。

副題

https://explorer.ont.io/tx/F771BA610625D5A37B67D30BF2F8829703540C86AD76542802567CAAFFFF280C#

詳細な分析

1. ハッカーは北京時間2021年8月10日17時32分32秒にソースチェーン上で攻撃トランザクションを開始した。"66313231333138303933"トランザクションをデコードし、次のパラメータ マップを取得しました。

https://explorer.poly.network/tx/1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80

2. この攻撃トランザクションはメソッドを呼び出します

、対応する署名は 0x41973cd9 に等しくなります (後で呼び出される putCurEpochConPubKeyBytes 関数の署名と同じです)。このトランザクションは無効なトランザクションであるはずですが、リピーターによってソース チェーンに書き込まれ、アライアンス チェーンのマークル ツリーに組み込まれ、署名され、その後アライアンス チェーン ブロックに公開されました。マークル ツリーは、トランザクションが実際に存在するかどうかを証明するために使用されます。結果として生じるクロスチェーントランザクションは次のとおりです。

https://etherscan.io/tx/0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581

4. この機能はマークル証明を分析し、証明が有効であること、および攻撃トランザクションが署名されたマークル ツリーに存在することを確認します。次に、EthCrossChainManager._executeCrossChainTx() 関数を呼び出してトランザクションを実行します。つまり、toContract を呼び出してコントラクト (0xcf2afe102057ba5c16f899271045a0a37fcb10f2) 内のメソッド (0x6631313231333138303933) をポイントし、パラメーター args ( 010000000000000014a87fb85a93ca072cd4e5f0d4f178bc831df8a00b)。そして、このメソッドは putCurEpochConPubKeyBytes(bytes) を指します。その関数シグネチャは手順 2 で説明したメソッド シグネチャと同じであるため (両方とも 0x41973cd9、ここではハッシュの衝突があります)、このメソッドは正常に実行され、キーパーの公開キーも取得されます。ハッカーの公開鍵に変更されます。イーサリアムでの取引は以下の通りです。

5. ハッカーが公開キーを変更すると、自由に資産のロックを解除できるようになります。

副題

イベント概要

この攻撃は一連のトランザクションで構成されており、攻撃の根本原因は次のように分析されます。"makeFromOntProof"1. 攻撃トランザクションは、十分なチェックなしでソース チェーンに書き込まれます。

2. リピーターはあらゆるものを受信します。

イベントトランザクション。

3. リピーターはステップ 1 のトランザクションをアライアンス チェーンに公開します。

“The management contract fetches the block headers from chain A, verifies whether or not the cross chain parameters and the proof are valid, and then transmits the necessary information to chain B in the form of an event;”

"4. ステップ 2 では、攻撃トランザクションがアライアンス チェーンのマークル ツリーに組み込まれ、有効なマークル証明が生成されます。"

5. 元のチェーン上の ECCM コントラクトは、ステップ 2 で生成されたマークル証明書に合格しており、これにより、トランザクションがソース チェーン上に「実際に存在」し、元のデータが破壊または変更されていないことが検証されます。ただし、ターゲットチェーンに送信されるマークル証明を構築する前に、トランザクションを完全に検証する必要があることを強調することが重要です。設計書に示されているとおりです。

管理コントラクトは、A チェーンからブロック ヘッダーを取得し、クロスチェーン パラメーターと証明が有効であるかどうかを検証し、必要な情報をイベントの形式で B チェーンに送信します。

CertiK
作者文库