スマートコントラクト bytecode フォレンジック — 三層 verify 技術
確度概ね確度あり更新2026-05-26要再確認2026-09-22出典3機械翻訳
目次
ウィキ上の位置づけ
このエントリは FinWiki index の下にあります。 ピア コンテキストについては Fork and Rebrand プロジェクトの五層監査フレームワーク、より広範なインフラストラクチャ境界については システム基盤 として読み取ってください。
[!info] 要約 プロジェクト側の verified contract と GitHub ソースが一致しない場合、bytecode こそが ground truth になります。三層 verify: (1) オンチェーン deployed bytecode と GitHub source のコンパイル結果を比較し、(2) 4-byte PUSH4-EQ dispatcher を逆推して fn selector を抽出し、unverified コントラクトのインターフェイスを照合し、(3) クロスチェーン verified twin fingerprint でチームの実体を特定します。
レイヤー 1: デプロイされたものとコンパイルされたものの差分
- eth_getCode(addr, “latest”) でオンチェーンランタイムのバイトコードを取得
- GitHub出典 + プロジェクト側が知ったsolcバージョン + オプティマイザー設定でローカルコンパイル
- diffが空でない = オンチェーン版とGitHub版が不一致 = シグナル
- immutable / コンストラクター引数 / メタデータハッシュ差分は剥離して比較する点に注意
レイヤー 2: 4 バイト PUSH4-EQ ディスパッチャの逆推
- EVM コントラクトはディスパッチャー進入時にPUSH4 selector EQ JUMPIパターンで分岐
- 契約が検証されていなくても、オペコード列から全セレクターを抽出可能(4-byte)
- 4byte.directory / openchain.xyzでfn署名を逆引き
- ERC-20 /一時停止/ブラックリスト/移行等のセンシティブナインターフェイスにヒット =
レイヤー 3: クロスチェーンで検証されたツイン フィンガープリント
- 同一チームが複数チェーンへデプロイした際、一方はverified、他方はunverifiedというケースは頻出
- 検証済み側のランタイムバイトコード(メタデータハッシュ剥離後)をフィンガープリントとして利用
- unverifiedチェーン側ではbytecode類似度マッチング(SimHash / k-gram等)を実施
- ヒット = 同一チーム = 身元アンカー — 商用 グローバル暗号資産フォレンジックベンダー層 — Chainalysis / Elliptic / TRM / Crystal 比較 はこの層をクロスチェーンclusterラベルライブラリとして商品化している
使う場面
- 中核となる契約(ブリッジ/保管庫/ガバナンス)が意図的に検証されていない
- プロジェクト側のGitHubは既に削除されたがコントラクトはまだ稼働しているケース
- クロスチェーン・プロジェクトで「表向きの体制 vs 真の開発チーム」を識別したいケース
- バックドア/緊急一時停止/ブラックリストインターフェイスの存在を疑うケース — DMM Bitcoin 流出事件 詳細分析 (2024-05) — Lazarus 帰属 4,502.9 BTC や Bybit Lazarus $14.6 億 ハック詳細分析 (2025-02) — 史上最大の暗号資産流出 のような取引所事件では、攻撃者が未確認の中継契約をデプロイした事例が存在
使わない場面
- 既に完全にverifiedかつ出典が信頼できるコントラクト(直接出典を読めば足りる)— この場合は 形式化仕様 ↔ 実装の co-design 等の仕様優先アプローチがより有効
- プロキシ契約(EIP-1967 ストレージスロットから実装を特定した交渉実施)
- 純粋にread-onlyのviewコントラクト(リスクが低い)
根拠
- ケーススタディ:オンチェーンで一部の中核コントラクトは検証済みだが、ブリッジ/ボールト系の一部はクローズド出典・三層検証で未検証コントラクトのインターフェイスを逆推し、クロスチェーンツイン指紋でチーム元をロックした
#security/forensic#security/smart-contract#security/dd
発見
続けて読む
次に読む
- Etherscan verified ソース汚染 — なぜ「verified」は「バイトコード」ではないのか検証は、提出されたソースを宣言されたコンパイラ設定の下で再コンパイルし、その出力をデプロイされたバイトコードと比較する。その主張の強さはツールと一致の種類によって異なる:
- Git 履歴改竄の検出 — スカッシュおよび force-push された状態の復元force-push はリモートのブランチポインタを新しい履歴へ移動させる。押し出されたコミットは孤児になるが、次の GC サイクルまで残存する。ローカルでは git reflog が以前の正確なコミットハッシュを記憶し続け、git fsck が到達不能オブジェクトを列挙する。リモートでは、GitHub Events API が直近の PushEvent を before/af...
- プロキシ・アップグレード可能コントラクトの rug パターン — admin のアップグレード権限がバックドアになるプロキシはすべての呼び出し(delegatecall)を、固定のストレージスロットに格納された implementation アドレスへ委譲する。ERC-1967 はそれらのスロットを標準化し、ツールが決定論的に見つけられるようにしている:
ここへリンク
- AI エージェントのための ERC-4337 アカウント抽象化入門ERC-4337 は、Ethereum アドレスが単一の secp256k1 鍵ではなく任意のコードによって制御されることを可能にする、アプリケーション層のアカウント抽象化標準である。AI エージェントにとって、これは 「エージェントにユーザーのシードフレーズを渡さなければならない」(安全でなく、取り消し不能)と 「エージェントは、スコープ付き・取り消し可能・スポンサー可能な実...
- GMOインターネットグループGMOインターネットグループは、JapanFGに関係する複数の金融基盤の親会社に当たる。GMO Payment Gatewayは加盟店決済、GMO Coinは暗号資産、GMOフィナンシャルホールディングス/GMOクリック証券はオンライン証券・FX、GMOあおぞらネット銀行はあおぞら銀行との共同出資構造で運営される。
- Bybit Lazarus $14.6 億 ハック詳細分析 (2025-02) — 史上最大の暗号資産流出2025-02-21、Bybit の ETH コールドウォレットから約 $14.6 億 (約 2,200 億円) 相当の ETH + stETH + mETH 等が流出。史上最大の暗号資産盗難 であり、名目換算で Mt.Gox 2014 の 850,000 BTC を上回る規模。Chainalysis + Elliptic + ZachXBT が事件発生後即時に Lazarus...
- CEX matching engine + cold/hot ウォレット内部架構CEX のコア = matching engine (注文書照合エンジン)。設計思想は大別して 3 種類:
- Coincheck NEM 580 億円流出事件 詳細分析 (2018-01)2018-01-26 早朝、Coincheck の NEM (XEM) ホットウォレットから 約 5.2 億 XEM (当時 約 580 億円相当) が外部に流出。当時 史上最大規模の暗号資産盗難 事件であり、Mt.Gox (2014) を超える金額として国際的に注目された。NEM Foundation が開発した モザイクタグ追跡 によって流出資金のフローはリアルタイムで追跡...