Clear Sky Science · ja

DIVE: マルチラベル・スマートコントラクト脆弱性データセット

· 一覧に戻る

なぜより安全なデジタル取引が重要か

毎日、何十億ドルもの資金が「スマートコントラクト」──イーサリアムのようなブロックチェーン上で自動的に契約や取引を実行するコード──を通じて移動しています。こうしたデジタル合意に隠れたミスがあると、資金の凍結、資産の盗難、新しい金融システムへの信頼失墜といった深刻な影響を招きます。本稿はDIVEを紹介します。これは大規模かつ綿密に構築されたデータセットで、研究者がスマートコントラクトの弱点をより確実に発見・理解できるように設計されており、暗号通貨や分散型アプリケーションの基盤となるデジタル合意をより安全にする助けとなります。

Figure 1
Figure 1.

デジタル契約はどのように存在し変化するか

スマートコントラクトはそのライフサイクルの中でいくつかの段階を経ます。まず開発者が可読なソースコードとして作成し、それがマシン向け命令(バイトコード)にコンパイルされ、デプロイトランザクションでブロックチェーンに送られます。受理されるとコントラクトは恒久的なアドレスを取得しコード自体は変更不能になりますが、内部状態は利用者のやり取りに応じて変化します。この過程でソースコード、バイトコード、設定、トランザクション記録などさまざまな種類のデータが生成され、いずれも欠陥の手がかりを含んでいます。DIVEはこのライフサイクル観に基づき、デプロイ前(コードと設定)とデプロイ後(オンチェーンでの振る舞い)の両方から特徴量を収集して各コントラクトをより包括的に記述します。

従来のデータセットが抱えていた限界

これまでのスマートコントラクト収集は、脆弱性検出に対する機械学習の導入を後押ししましたが、重大な制約もありました。多くはサンプル数が少なく、限られた期間や特定のコンパイラバージョンに偏っていたり、ソースコードやバイトコードなど一種類のデータしか扱わなかったりしました。実際には単一のコントラクトが複数の問題を含むことが多いにもかかわらず、脆弱性を一種類のみとして扱うデータもありました。ラベル付けも一貫性に欠け、研究ごとに命名規則が異なったり、共通の基準なしに1~2個のツールに依存したりしていました。これらは論文間の比較を難しくし、単一研究を越えて一般化できる検出器の構築を妨げました。

DIVEデータセットの内容

DIVEは2016年から2024年にデプロイされた22,330件の実在するイーサリアムコントラクトを収集し、Solidityの主要なバージョンを網羅しています。各コントラクトは数百の特徴で記述されます。デプロイ前には、コンパイラバージョン、最適化設定、外部ライブラリの使用、公開インターフェース(関数やイベント)の構造、コード複雑度の測定値、コントラクト作成時に使われる低レベル命令のパターンなどを記録します。デプロイ後には、起動トランザクションからの情報(ガス消費、送金額、ブロック内でのタイミングや位置)や、ランタイムコードにおける命令パターンを追加します。この二面的な視点により、コーディング上の選択とオンチェーンでの振る舞いがセキュリティにどう関連するかを研究できます。

脆弱性の同定方法

DIVEはどのコントラクトが脆弱かを決める際、単一ツールや単純な多数決に依拠しません。代わりに強みの異なる6つの解析ツールを実行し、その結果を標準化された枠組みに通します。ツール出力はDASPトップ10で知られる8つのカテゴリ(再入可能性の欠陥、アクセス制御の破れ、算術ミス、サービス拒否のリスク、乱数の不備、フロントランニング、時間操作、未チェックの低レベル呼び出しなど)にマッピングされます。そのうえで「パワーベース」の投票方式によりカテゴリごとに各ツールの信頼度を決定します。さらに第二段階の検証で、指摘された問題が実際にコントラクトのコードで裏付けられているか(例えば想定された算術バグが現代のコンパイラチェックやセーフティライブラリによって既に保護されていないか)を確認します。この厳密な検証により、特にサービス拒否や時間関連の警告における誤検知を多く除去できます。

Figure 2
Figure 2.

この資源の活用方法

DIVEはマルチラベルであるため、単一のコントラクトが複数の脆弱性タイプでタグ付けされ得ます。これは現実世界でバグが群発し相互作用する様子を反映します。データセットは二値分類や多クラス分類、マルチラベル・マルチタスク学習、コンパイラバージョンや年を跨いだ転移学習、デプロイ前情報とデプロイ後情報の価値を比較する実験など幅広い研究を支援します。さらに、どの脆弱性が一緒に現れるかの頻度を記録しており、再入可能性とアクセス制御の問題が共起しやすい一方で、他の脆弱性は稀で孤立しがちであることを明らかにしています。こうしたパターンは、各脆弱性を独立に扱うのではなく、バグタイプ間の関係をモデル化する高度な学習手法の導入を促します。

一般ユーザーにとっての意義

多くの人にとってスマートコントラクトはトレーディングアプリ、ゲーム、貸出プラットフォームなどの背後にある不可視のインフラストラクチャです。DIVE自体が脆弱性を直接修正するわけではありませんが、より強力な検出ツールを訓練し公正に評価するために必要な詳細で整備されたラベル付きデータを提供します。これらのツールは開発者が問題を早期に発見する手助けをし、監査者がレビューを優先する際にも役立ちます。フレームワークが公開されており新たなコントラクトに対して再実行可能であるため、DIVEは時間とともに進化する基盤を提供し、日常のユーザーが依存するコード中の隠れたエラーによる被害を減らすための土台となります。

引用: Alsunaidi, S.J., Aljamaan, H. & Hammoudeh, M. DIVE: A Multi-Label Smart Contract Vulnerability Dataset. Sci Data 13, 664 (2026). https://doi.org/10.1038/s41597-026-07025-5

キーワード: スマートコントラクトのセキュリティ, イーサリアム, ブロックチェーンの脆弱性, 機械学習データセット, DASPトップ10