こんにちは、ブロックチェーン愛好家の皆さん!特にEVM互換チェーンでスマートコントラクト開発に取り組んでいるなら、セキュリティの脅威には常に注意しておく必要があります。最近、プロキシのinitialization poisoning攻撃が復活しており、従来のMEVがないチェーン、たとえばBase上でも起きているという話題が出ています。Trading Protocolの共同創設者であるMikko Ohtamaa(@moo9000)の詳細なスレッドを参考にしつつ、リスクとその緩和方法を段階的に分かりやすく説明します。
まず、何が問題になっているのか?数週間前、VennBuildやDedaubなどのセキュリティチームが、大規模なキャンペーンを発見しました。ハッカーたちが数千のスマートコントラクトにバックドアを忍び込ませ、合計で1000万ドル以上が危険にさらされていました。幸い専門家たちが多くの資金を救出しましたが、これは業界全体への警鐘です。
この攻撃はプロキシコントラクトを狙っています。EVMチェーンではネイティブなコードのアップグレードがサポートされていないため(NEAR Protocolのような新しいチェーンとは異なります)、開発者はプロキシという巧妙な回避策を使います。プロキシコントラクトをデプロイし、そのプロキシが実際のロジックを持つ実装コントラクト(implementation)を指すようにします。ユーザーはプロキシとやり取りし、プロキシは呼び出しを実装へルーティングします。所有者は後でプロキシが指す実装を変更して「アップグレード」できます。
ここが厄介なポイントです。通常、プロセスは2段階になります:プロキシをデプロイし、その後にimplementationアドレスを設定して初期化(initialize)すること。ハッカーはこの2つのステップの間の隙を突きます。チェーン上のプロキシデプロイを監視し、initializationをfront-runして自分たちの悪意あるimplementationを設定してしまうのです。Boom—プロキシはその時点で資金を抜き取ったり破壊活動を行えるコードを指すようになります。
過去には攻撃者がMiner Extractable Value(MEV)を利用してトランザクションをフロントランしていました。MEVとは、ブロック生成者が利益のためにトランザクションの順序を入れ替える現象のことです。Shutter Networkのような解決策は存在しますが、まだ広く普及していません。新たに懸念される点は、今回の攻撃がCoinbaseの集中型シーケンサーを持つレイヤー2チェーンであるBase上で起きていることです。Coinbaseがトランザクションの順序を制御しているため、従来の意味でのMEVはここにはありません。では、ハッカーはどうやってこれを実行しているのか?おそらくデプロイを監視するボットを走らせているか、過去にもあったようにJSON-RPCプロバイダーのリークを突いているのでしょう。
Etherscanのようなブロックエクスプローラーさえも騙されました。攻撃者はフロントランの1回のトランザクションで2つの異なるプロキシスロットを設定しました:Etherscanが最初に確認する古いOpenZeppelinスロットには無害なアドレスを置き、標準のEIP-1967スロットには悪意あるアドレスを置いたのです。巧妙ですね。
攻撃者はBase上でFixedFloat経由で資金供給を受けており、これはハッカー間で人気のあるブリッジで、過去のキャンペーンとも結びつきがあります。ある被害者はGnosis Safeを使ってデプロイしていましたが、Base上でデプロイしてからわずか2ブロック後にコントロールを失いました。
では、どうやって自分を守るか?鍵は「デプロイと初期化を単一トランザクションで行う」ことです。Foundryスクリプトのようなツールがこれを助けてくれますし、参考になる手法もあります。マルチチェーンで一貫性を持たせたいなら、emo.ethによるDeterministic Proxy Factoryを試してみてください—チェーン間で同じアドレスを保証してくれます。
Baseのようなレイヤー2では、mempoolのリークを避けるために常にsequencerへ直接ブロードキャストするようにしてください。web3-ethereum-defiのようなライブラリがこれを扱ってくれます。詳細はこのEthereum Stack Exchange の議論を参照してください。
ブロック番号を含む完全な事例を追うと、これらの呼び出しがどれほど接近しているかがわかります。開発者の方は、継続的な議論やヒントのためにEthereum Security ResearchersのTelegramグループに参加することをお勧めします。
ミームトークンの世界では、短時間でのデプロイが多いため、これらの脆弱性はプロジェクトにとって壊滅的になり得ます。安全対策を怠らず、プロセスを監査し、スピードとセキュリティは両立させるべきだということを忘れないでください。質問があればコメントにどうぞ、あるいは専門家に直接聞いてみてください!