セキュリティチェック:EVM互換チェーンは通用するか?

EVMの隠れたセキュリティリスクを明らかにする:BlockSecの自動化ツールはどのように詳細な調査を助けるか

セキュリティチェック:EVM互換チェーンは通用するか?

2023年11月、BlockSecのCEOである周亜欽教授は、DRK Labが主催する初のWeb3 Scholars Summitに招待され、参加しました。カンファレンス中、周教授はEVM(Ethereum Virtual Machine)の脆弱性検出におけるBlockSecの取り組みと成果を発表しました。また、EVM互換チェーンのセキュリティ確保に特化して開発されたBlockSecの自動差分ファジングツールを紹介しました。本記事では、講演内容を要約します。

はじめに

Defillamaのデータ統計によると、現在238のL1およびL2パブリックチェーンが存在し、そのうち144はEVM互換です。しかし、これらのEVM互換チェーンの実装中にセキュリティ上の問題は存在しないのでしょうか?という疑問が生じます。当社の調査の結果、その答えは「はい」です。この懸念に対応するため、BlockSecは自動化された差分ファジングセキュリティツールをローンチしました。これらのEVM互換チェーンの背後にある真実を探求する旅に、ぜひご参加ください。

仮想マシンの脆弱性

Figure 1: Ethereum Virtual Machine (EVM) のワークフロー図

Ethereum Virtual Machine (EVM) を例にとると、Virtual ROM、Program Counter、Stack、Memory、World State (永続的) を含むスタックベースのアーキテクチャを採用しています。

仮想マシンは、スマートコントラクトのコンパイル済みバイナリコードを解釈および実行するエンジンとして機能します。多くのブロックチェーンプラットフォームの中核コンポーネントは仮想マシンであり、特にEthereum Virtual Machine (EVM) は注目に値します。したがって、仮想マシンはスマートコントラクトの実行、トランザクションの処理、ブロックチェーンの整合性の確保において重要な役割を果たします。

EVM自体も、プログラマーによって書かれたソフトウェアプログラムであることがわかっています。しかし、EVMに問題がないことをどのように保証できるでしょうか?結局のところ、人間が書いたコードにはバグが存在する可能性があります。

そして、EVMにバグが発生すると、ブロックチェーン上のエコシステムに壊滅的な結果をもたらします。実際、EVMは過去に多くの深刻な脆弱性に遭遇しています。

例えば、2020年には、プリコンパイルされたコントラクト(すなわち、CVE-2020-26241)[1]によって引き起こされた脆弱性インシデントが発生しました。Geth (0x00...04) プロトコルにあるdataCopyプリコンパイルコントラクトは、呼び出し時に浅いコピーを実行しました。大量のデータをコピーする際に、完全なデータではなくポインターのみがコピーされました。これにより、悪意のあるスマートコントラクトが変更されるべきではないデータを変更できるようになり、異なるバージョンの仮想マシンが同じスマートコントラクトを実行する際にデータの一貫性が失われました。もう一つの例は、2021年に特定のEVM互換チェーンがEthereumと同期してアップグレードされなかったことです。Gethの古いバージョンには、プリコンパイルされたコントラクト呼び出しにおける入力および出力データのメモリ領域が重なる脆弱性(CVE-2021-39137)[2]がありました。攻撃者はこの脆弱性を悪用し、チェーンフォークを引き起こしました。

BlockSec の対策

EVM の脆弱性をタイムリーに発見するにはどうすればよいでしょうか?課題は何でしょうか?

  1. まず、仮想マシンの複雑な設計により、その操作ロジックを完全に理解できるツールを見つけることは困難です。各専門分野は専門化を必要とし、多くの開発者はその操作ロジックを理解し、効果的な予防策を講じるために十分な労力を費やすことができない可能性があります。
  2. さらに、多くのL1/L2の新しいパブリックチェーンはEVM仮想マシンをカスタマイズしており、新たなセキュリティ問題を引き起こす可能性があります。

明らかに、EVM仮想マシンのこれらの問題を特定するために、手動監査だけに頼るのは困難です。

適応し、それに応じて対応しましょう!これらの課題を踏まえ、BlockSecはこれらの問題に正面から立ち向かうための自動化システムを開発しました!

差分ファジング

BlockSecでは、専門家チームが差分ファジングと呼ばれる巧妙なアプローチを採用しています。異なるバージョンの仮想マシンで同じテストケースを実行し、出力結果を比較することで、潜在的な脆弱性や不整合を発見することができます。この方法により、従来のテスト方法が見落としがちな微妙な違いを効果的に特定し、システムの全体的なセキュリティを向上させることができます。

Figure 2: 差分ファジングのワークフロー

基本的な動作原理:

差分ファジングを実施するには、同一の入力をテストケースとして準備する必要があります。これらのテストケースは、差分ファジングエンジンに投入されます。異なるバージョンの仮想マシンで同じテストケースを実行した結果を比較することで、潜在的な問題を発見できます。

具体的な実装手順:

差分ファジングのテストケースは、トランザクションメタデータとプリステートの2つの部分で構成する必要があります。しかし、これらのトランザクションをどのように生成するのでしょうか?この課題に取り組むために、2つのアプローチがあります。

  1. 過去のトランザクションの再利用:ブロックチェーン上で発生した過去のトランザクションを取得し、差分ファジングエンジンで異なるバージョンの仮想マシンで実行することができます。しかし、この方法だけに依存することには限界があります。過去のトランザクションは「通常」すぎることが多く、セキュリティテストではコーナーケース、つまり異常なシナリオを発見する必要があります。そこで、2番目のアプローチを考案しました。
  2. カバレッジ誘導ファジング:これまで観測されなかったバイトコードと過去に存在しなかったトランザクションをゼロから生成し、トランザクションとスマートコントラクトのコードをミューテートして仮想マシンに投入します。様々な次元からテストケースの有効性と網羅性を確保します。

これらのトランザクションが生成されたら、差分ファジングエンジンに投入され、結果が比較されます。

結果の比較は、単なる単純な数値比較ではなく、仮想マシンの永続ストレージと非永続ストレージの両方におけるデータの一貫性も包括的に考慮します。本記事ではこれ以上の詳細には触れません。

ケーススタディ

Figure 3: Aurora VM におけるプリコンパイルされたコントラクト ModExp の問題の例

差分ファジングを通じて、Aurora VM で発見した仮想マシンの脆弱性ケースを共有したいと思います。具体的には、ModExp プリコンパイルされたスマートコントラクトに関する問題です。

数値 x を y 乗するモジュラ指数計算を行う際、この操作には計算リソースが必要であることがわかっています。正しい実装では、モジュラ指数計算には複数のイテレーションが含まれるため、ガス計算はイテレーション数を考慮します。しかし、ガス計算に問題が生じる特定のシナリオがあります。それは、指数 y が 0 の場合、すなわちゼロ次べき乗操作を示します。この場合、イテレーション数はゼロになり、非常に小さいガス値になります。しかし、実際には計算にはリソースが必要です。

結論

現在、BlockSecがローンチした差分ファジングツールは、rbpfubpfAurora-engineneon-evmMoonbeamrevmEvmOSfevmPolygon-zkevm など、様々なブロックチェーン仮想マシンの環境で実行をサポートしており、継続的に拡張しています。

このツールにより、14件の新しい脆弱性を発見し、2件のCVE(CVE-2021–46102 および CVE-2022–23066)を申請し、130万ドル以上のバグバウンティを獲得しました。

現在、BlockSecが提供する包括的なEVMチェーンセキュリティソリューション(監査サービス+差分ファジングツール)は、EOSおよびFileCoinに認識され、採用されており、それらのエコシステムのセキュリティと健全な発展に貢献していく予定です。

参照

[1] 0x4 プリコンパイルにおける浅いコピーは EVM メモリ破損につながる可能性がある

[2] datacopy による RETURNDATA 破損

BlockSec について

BlockSec は、2021年に世界的に著名なセキュリティ専門家グループによって設立された、先駆的なブロックチェーンセキュリティ企業です。同社は、Web3の世界のセキュリティとユーザビリティを向上させ、その大規模な採用を促進することに尽力しています。そのために、BlockSecはスマートコントラクトおよびEVMチェーンのセキュリティ監査サービス、セキュリティ開発および脅威のプロアクティブなブロックのためのPhalconプラットフォーム、資金追跡および調査のためのMetaSleuthプラットフォーム、そしてWeb3ビルダーが仮想通貨の世界で効率的にサーフィンするためのMetaDock拡張機能を提供しています。

現在までに、同社はMetaMask、Uniswap Foundation、Compound、Forta、PancakeSwapなど300社以上の著名なクライアントにサービスを提供し、Matrix Partners、Vitalbridge Capital、Fenbushi Capitalなどの著名な投資家から2回の資金調達ラウンドで数千万米ドルを受け取っています。

✉️ビジネスコンサルティング:[email protected]

BlockSecのTwitterアカウント:https://twitter.com/BlockSecTeam

PhalconのTwitterアカウント:https://twitter.com/Phalcon_xyz

Sign up for the latest updates