核心概念
COBRAは、スマートコントラクトのバイトコードからセマンティックな文脈と関数インターフェース情報を統合的に分析することで、ABI情報が公開されていない場合でも脆弱性を効果的に検出できるフレームワークである。
要約
COBRA: インタラクションを考慮したバイトコードレベルのスマートコントラクト向け脆弱性検出器
本論文は、Ethereum上のスマートコントラクトのバイトコードに存在する脆弱性を、セマンティックな文脈と関数インターフェース情報を統合的に分析することで検出するフレームワーク、COBRAを提案する。特に、ABI情報が公開されていない場合でも、関数シグネチャを推論することで脆弱性検出を可能にすることを目的とする。
COBRAは、以下の5つの主要なステップから構成される。
文脈抽出: バイトコードからOpcodeとSSA Opcodeを抽出し、CFGを構築する。
ABI取得: 可能であれば、EtherscanからABI情報を取得する。
シグネチャ推論: ABI情報がない場合、SRIFを用いて関数シグネチャを推論する。SRIFは、Opcodeのシーケンスを入力とし、LSTMとアテンション機構を用いて関数のパラメータを予測する。
属性要約: 関数の状態変更可能性とpayable属性を、Opcodeの分析に基づいて推論する。
脆弱性検出: COBRAは、セマンティックな文脈表現と関数表現を統合したエンコーダと、脆弱性を分類するデコーダからなるseq2seqモデルを用いて脆弱性を検出する。エンコーダは、ABI情報があればそれを利用し、なければSRIFで推論した関数シグネチャを用いる。