Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# 暗号とセキュリティ

スマートコントラクト検証サービスの脆弱性を調べる

Ethereumのスマートコントラクト検証におけるセキュリティの課題を深掘りする。

― 1 分で読む


スマートコントラクトセキュスマートコントラクトセキュリティの脆弱性る深刻な欠陥を特定する。スマートコントラクトの検証プロセスにおけ
目次

スマートコントラクトはイーサリアムプラットフォームの重要な部分だよ。これはブロックチェーン上で動くプログラムで、特定の条件が満たされるとアクションを実行するんだ。でも、これらのコントラクトにはしばしばセキュリティの問題があるから、スマートコントラクトの検証がめっちゃ重要になってるんだ。検証っていうのは、コントラクトのソースコードがブロックチェーン上で動いているコードと一致しているかをチェックすることなんだ。このプロセスは開発者とユーザーの間の信頼を築くんだ。

いろんなツールが検証のためにあるけど、やっぱりそのセキュリティに関しては疑問が残るね。俺たちの目標は、これらの検証サービスがどう機能するかを分析して、脆弱性を特定することなんだ。

スマートコントラクトの重要性

スマートコントラクトは、特定の条件が満たされると自動的に実行されるスクリプトみたいなもんだ。ブロックチェーンの整合性と安定性を維持するだけじゃなくて、開発者がゲームや取引所、組織みたいな分散型アプリケーション(DApps)を作ることも可能にするんだ。イーサリアムのブロックチェーンは何百万ものスマートコントラクトをホストしていて、そのエコシステムは豊かでダイナミックなんだ。

でも、イーサリアムはこれらのコントラクトのコンパクトなバージョンをバイトコードという形で保存しているだけなんだ。このバイトコードは読みづらいから、コントラクトが何をするべきかを理解するのが難しくなるんだ。この読みにくさのせいで、ユーザーをだますために存在する害のあるトークンやコントラクトを見つけるのが難しくなる。

スマートコントラクト検証サービス

検証サービスはEtherscanやSourcifyみたいなプラットフォームに組み込まれていて、ユーザーがコントラクトのソースコードが信頼できるかどうかを確認できる手助けをしてくれる。一般的には、ユーザーがソースコードや必要な詳細をこれらのサービスにアップロードするんだ。検証サービスはこのコードをコンパイルして、ブロックチェーン上のバイトコードと比較する。

一致が見つかると、ユーザーは将来のニーズ(セキュリティチェックや監査など)のために確認済みのソースコードをチェックできるようになる。この検証プロセスは開発者とユーザーの間の信頼を高めるために意図されていて、さまざまなアプリケーションをサポートするんだ。

検証サービスに対する信頼の問題

これらの検証サービスは信頼を生み出すことを約束しているけど、完璧じゃないんだ。悪意のある開発者が検証に合格するように見える誤解を招くソースコードを提供することができるってことを理解するのが重要なんだ。だから、全体の検証プロセスのセキュリティや整合性が損なわれる可能性があるんだ。

これらの検証サービスが意図した通りに機能して、信頼を築く目的を果たすために徹底的に分析する必要があるんだ。

脆弱性の研究

俺たちはEtherscan、Sourcify、Blockscoutという3つの主要な検証サービスに焦点を当てた包括的なセキュリティ分析を行ったんだ。この分析の目的は、彼らのワークフローを理解して、悪用につながる可能性のある弱点を特定することなんだ。

検証サービスのワークフロー

  1. データ収集: 検証サービスはアップロードされたソースコードと必要な設定詳細を集める。
  2. データ比較: サービスはローカルでコンパイルされたバイトコードをオンチェーンのバージョンと比較して、相違がないか確認する。
  3. 結果保存: 一致が見つかると、サービスは確認されたソースコードを将来のためにユーザーがアクセスできるように保存する。

この一見単純なプロセスにも、攻撃者が悪用できる抜け穴があるんだ。

見つかった脆弱性の種類

1. データ整合性の問題

データ整合性は、データが変更されないことを保証することを指すんだ。もし攻撃者が検証サービスに提供されたソースコードを操作できるなら、チェックをバイパスできるんだ。サービスの機能が、誰かがオンチェーンのバイトコードと一致する誤解を招くソースコードを作成するのを許してしまう可能性もある。

2. データ一貫性の問題

データ一貫性は、確認されたソースコードの意味とオンチェーンのバイトコードが一致していることを保証する。検証中にソースコードの一部が無視されたり、間違った要素がメタデータとしてマークされたりすると、さまざまな脅威が生じることがあるんだ。どんな不一致も不適切な検証結果につながるかもしれない。

3. 明確な参照失敗

明確な参照というのは、表示される情報が明確であって曖昧でないべきだってことなんだ。もしサービスがその参照を正確に明示しないなら、ユーザーはソースコードの真の性質について誤解するかもしれない。

脆弱性の検出

俺たちは、上記の脆弱性をチェックするためのさまざまな方法や、それがどう悪用されるかを調査したんだ。

検出技術

  1. コンパイラ機能の調査: 一部のコンパイラ機能が、攻撃者が意図したソースコードとは一致しないバイトコードを生成できる可能性があるんだ。
  2. 入力検証: ユーザーがファイルパスを変更して敏感なデータにアクセスしたり、ソースコードを不適切に変更したりできないようにすること。
  3. 実行のシミュレーション: シミュレーションが改ざんされたコードで実行されると、実際のオンチェーンコードを反映しない異なる結果が返ってくるかもしれない。

潜在的な悪用の例

  1. 偽のソースコード提出: 悪意のあるユーザーが、実際のコントラクトに隠れた脆弱性があってもバックドアのないソースコードを提出することができる。
  2. 競争的な検証: 攻撃者が元の開発者を害するようなコントラクトの検証に合格するために、誤解を招くもしくは有害なコードを表示するかもしれない。
  3. 置き換えられたコントラクト: create2のような機能を使って、悪意のある者が既存のアドレスに悪意のあるコントラクトをデプロイして、元のものを検出されずに置き換えることができる。

セキュリティ対策と推奨

これらの脆弱性から守るために、いくつかのステップを取ることができるんだ:

  1. 検証プロトコルの強化: サービスは、ソースコードの整合性を確保するために、より厳格なチェックとバランスを実装すべきなんだ。
  2. ユーザー教育の拡充: ユーザーはリスクを理解して、コントラクトやサービスの信頼性をどう検証するかを知る必要があるんだ。
  3. 継続的な監視と更新: 検証サービスを常に更新し、監視することで、新たな脆弱性を特定して迅速に対応できるんだ。

結論

スマートコントラクトはイーサリアムエコシステムの重要な特徴だけど、たくさんのセキュリティの課題があるんだ。検証サービスは、これらのコントラクトの安全性と信頼性を確保する重要な役割を果たしてる。俺たちの調査結果は、悪用される可能性のあるいくつかの脆弱性を示していて、ユーザーや開発者にとって潜在的な災害を引き起こす可能性があるんだ。

コミュニティがこれらの検証サービスを強化し、信頼を育み、イーサリアムプラットフォームの整合性を維持するために行動を起こすことが重要なんだ。警戒と革新の両方を持って、ブロックチェーン空間のすべてのユーザーにとってより安全で透明な環境を作り出すことができるんだ。

オリジナルソース

タイトル: Abusing the Ethereum Smart Contract Verification Services for Fun and Profit

概要: Smart contracts play a vital role in the Ethereum ecosystem. Due to the prevalence of kinds of security issues in smart contracts, the smart contract verification is urgently needed, which is the process of matching a smart contract's source code to its on-chain bytecode for gaining mutual trust between smart contract developers and users. Although smart contract verification services are embedded in both popular Ethereum browsers (e.g., Etherscan and Blockscout) and official platforms (i.e., Sourcify), and gain great popularity in the ecosystem, their security and trustworthiness remain unclear. To fill the void, we present the first comprehensive security analysis of smart contract verification services in the wild. By diving into the detailed workflow of existing verifiers, we have summarized the key security properties that should be met, and observed eight types of vulnerabilities that can break the verification. Further, we propose a series of detection and exploitation methods to reveal the presence of vulnerabilities in the most popular services, and uncover 19 exploitable vulnerabilities in total. All the studied smart contract verification services can be abused to help spread malicious smart contracts, and we have already observed the presence of using this kind of tricks for scamming by attackers. It is hence urgent for our community to take actions to detect and mitigate security issues related to smart contract verification, a key component of the Ethereum smart contract ecosystem.

著者: Pengxiang Ma, Ningyu He, Yuhua Huang, Haoyu Wang, Xiapu Luo

最終更新: 2023-07-02 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2307.00549

ソースPDF: https://arxiv.org/pdf/2307.00549

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事

分散・並列・クラスターコンピューティングブロックチェーンをつなぐ:クロスチェーンクエリ言語

異なるブロックチェーン間でデータにシームレスにアクセスするためのソリューション。

― 1 分で読む