Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
独立メディア
いかなるプロジェクトとも無提携
最も深い暗号通貨の知識ベース
crypto-bible.com
最新
個人投資家のほとんどが知らないブロックチェーンが30日の手数料でイーサリアムの5倍を稼いだ——Canton Networkの構造分析  ·  なぜあなたの損切りはいつもちょうど狩られる位置に設定されるのか:暗号資産ポジション管理完全ガイド  ·  PoSとPoW、どちらが安全か?マイナーとバリデーターの本質的な違い、そして答えがあなたの想像より複雑な理由  ·  「バイナンスサポート」から完全に本物に聞こえる電話がかかってきた:AIボイスディープフェイク詐欺が経験豊富なユーザーまで騙す仕組み  ·  なぜトークンアンロックはいつも高値で不意打ちを食らわせるのか:Vestingスケジュール完全解説  ·  ラップトークン完全解読:ビットコインがイーサリアムで取引するために「偽装」が必要な理由
用語解説 · wallet-and-security

Reentrancy Attack

リエントランシー攻撃
wallet-and-security 進階

30秒バージョン · 忙しい方へ
<a href="/ja/glossary/wallet-and-security/reentrancy-attack/" target="_blank">リエントランシー攻撃</a>は<a href="/ja/glossary/blockchain-fundamentals/smart-contract/">スマートコントラクト</a>の脆弱性を悪用する攻撃手法です:攻撃者はコントラクトが資金を送った後、内部状態(アカウント残高)を更新する前の時間窓を利用して、資金を受け取った瞬間に元の引き出し関数を再度呼び出します。これによりコントラクトが状態更新前に残高チェックを再び通過し、コントラクトが空になるまで繰り返し資金を引き出せます。2016年のThe DAO攻撃(約6,000万ドルの損失)がこの脆弱性を悪用し、イーサリアムのハードフォーク(ETH/ETCの分裂)を直接引き起こしました。
詳しく読む +
01 · これは何?

リエントランシー攻撃の技術的な原理は何か、コントラクト操作の「順序」がなぜそれほど重要なのか?リエントランシーの根本的な脆弱性は、スマートコントラクトが資金を転送した後に自分の台帳を更新することにあります——この操作順序が悪用の機会を生みます。正しいアプローチ:まず台帳を更新し(ユーザーの残高をゼロに設定)、それからユーザーに資金を転送します。脆弱なパターン:ユーザーに資金を転送し、転送完了後に台帳を更新します。問題:EthereumのCall()メソッドはコントラクトに支払うとき、ETHを受け取った瞬間に受取コントラクトのフォールバック関数を実行できます。攻撃者のフォールバック関数が元のコントラクトのwithdrawを再び呼び出します——この時点で台帳はまだ更新されていないので残高チェックがまた通ります。

02 · なぜ存在する?

The DAO攻撃とは何か、なぜそれほど重要だったのか?The DAO(分散型自律組織)は2016年のイーサリアム上のクラウドファンディングスマートコントラクトプロジェクトで、当時約1億5,000万ドル相当のETHを調達しました。2016年6月、攻撃者はThe DAOの引き出しコントラクトのリエントランシー脆弱性を悪用して繰り返し引き出し、最終的に約360万ETH(当時約6,000万ドル相当)を転送しました。イーサリアムコミュニティはハードフォーク(ブロックチェーンの状態を変更)して盗まれたETHをDAO投資家に強制返却するかどうかという根本的な選択に直面しました。今日のイーサリアム(ETH)の由来であり、ハードフォークを認めなかった少数派は元のチェーンを維持し——これがイーサリアムクラシック(ETC)の由来です。

03 · 意思決定にどう影響する?

リエントランシー攻撃をどう防ぐか?検証済みのパターンは何があるか?いくつかの標準的な防衛アプローチ。第一に、Checks-Effects-Interactions(CEI)パターン:最も基本的で重要な防衛原則。コントラクトの関数はこの順序で実行すべきです:Checks(まずすべての条件チェック)→ Effects(すべての内部状態を更新)→ Interactions(最後に外部コントラクトやアドレスと対話、送金など)。第二に、ReentrancyGuard(ミューテックスロック):OpenZeppelinが標準のReentrancyGuardモジュールを提供しています——本質的にはブール値のミューテックスロックで、関数実行中に「ロック済み」に設定し完了後にアンロックします。第三に、生のcall()を避けるtransfer()send()はデフォルトで2,300 Gasのみ転送します——複雑なロジックのフォールバックを実行するには不十分です。

04 · どうすればいい?

リエントランシー攻撃以外に一般的なスマートコントラクトの脆弱性タイプは何か?同様に重要なスマートコントラクトの脆弱性タイプをいくつか知っておきたい。整数オーバーフロー/アンダーフロー:Solidity 0.8の自動オーバーフロー保護前、数値計算は「ラップアラウンド」できました——残高偽造に悪用されました。安全でない外部呼び出し:外部コントラクトを呼び出すとき、戻り値を不正確に処理すると攻撃者が実行フローを制御できます。ロジックエラー:技術的な脆弱性でなくビジネスロジックの設計エラー。フラッシュローン攻撃:フラッシュローンの瞬間的な巨大流動性を使って1つのトランザクション内で市場やオラクル価格を操作します。

具体例 +

擬似コードを使ってリエントランシー攻撃の完全なフローを説明しましょう。各アドレスの残高を記録するbalancesマッピングを持つシンプルなイーサリアムの預金/引き出しコントラクトを想像してください。

脆弱なwithdraw関数:先に送金し、後で残高を更新します。

攻撃者はフォールバック関数を持つ悪意のあるコントラクトをデプロイします:ETHを受け取った瞬間にvictim.withdraw()を再度呼び出します。

攻撃のフロー:攻撃者がvictim.withdraw()を呼び出す→残高チェックが通る→コントラクトが攻撃者にETHを送る→フォールバックがトリガーされて再びwithdrawを呼び出す→この時点で残高はまだ更新されていないのでチェックがまた通る→ループ。

修正されたCEIバージョン:balances[msg.sender] = 0を先に行い、その後.call{value: ...}を行います。1行の順序変更で攻撃全体がブロックされます。

図解
Reentrancy Attack: Withdraw Before Balance Updates重入攻擊 vs 安全提款雙欄對比流程圖:左側綠色欄「正常提款(安全)」——步驟順序:① 呼叫提款 → ② 檢查餘額足夠 → ③ 先更新餘額為零 → ④ 再打款。右側紅色欄「重入攻擊漏洞」——關鍵差異:步驟三和四順序反轉:② 檢查餘額通過 → ③ 先打款(回調立即觸發,攻擊者在回調中再呼叫提款)→ 餘額尚未更新,步驟②再Reentrancy Attack: Withdraw Before Balance UpdatesNormal Withdraw (Safe)1. User calls withdraw(1 ETH)2. Check: balance ≥ 1 ETH ✓3. Update balance = 04. Send 1 ETH to user ✓Reentrancy Exploit1. Attacker calls withdraw(1 ETH)2. Check: balance ≥ 1 ETH ✓3. Send 1 ETH → callback triggers↺ calls withdraw(1 ETH) AGAIN before balance updates!4. Check STILL passes (balance not yet 0)Loop repeats until contract is drained. The DAO hack (2016, $60M) used this exact pattern.Crypto Bible · crypto-bible.com
スクリーンショット歓迎。転載時は出典を明記してください。
よくある誤解 +
✕ 誤解 1
× 誤解1:リエントランシーは古い脆弱性で、現代のスマートコントラクトはすべて防衛済みで心配不要だ。間違いです。リエントランシーは2016年から広く知られていますが、その後も多くのコントラクトがCEIを無視したり複雑なクロスコントラクト対話を導入したりして再びリエントランシーリスクを露呈しています。
✕ 誤解 2
× 誤解2:引き出し(withdraw)関数だけがリエントランシーの脆弱性を持てる。間違いです。状態更新前に外部呼び出しをするどんな関数もリエントランシーリスクを持てます。CEI原則は引き出しだけでなく、外部コントラクトと対話するすべての関数に適用されます。
The Missing Link +
直接的な影響

リエントランシーはスマートコントラクト設計の根本的なエンジニアリングのトレードオフを明らかにします:外部呼び出し(別のアドレスやコントラクトへの資金転送)と状態更新の間の順序。直感的な「先に送金、後で記録」のアプローチはビジネスロジックを明確にしますが、リエントランシーリスクを導入します。CEIの「先に記録、後で送金」のアプローチはビジネスロジックとしてやや直感に反しますが、リエントランシー問題を完全に排除します。このトレードオフには明確なコンセンサスの答えがあります——常にCEIを使う。しかしそれはスマートコントラクトのコードのセキュリティと直感的なビジネスロジックが時に微妙な衝突を持つことを思い出させます。

質問する
10文字以上入力してください
関連トピック
クリプトAIエージェントサービスの選び方:マーケティングの罠に騙されないための5つの評価フレームワーク
AI Agent Bible
Agentサービスに認可を与える前に4つの質問をしてください:認可境界はコードで強制されているか約束に過ぎないか?各操作の完全な推論ログが見られるか?サードパーティの監査報告書があるか?秘密鍵は誰が保有しているか?4つすべてに明確な答えが得られてから初めて認可を検討してください。美しいインターフェースは安全の証拠ではありません。
#hack#security
クリプトAgentローンチ前セキュリティチェックリスト:テストネットからメインネットまでの12の必須項目
AI Agent Bible
クリプトAgentローンチ前の12の必須セキュリティ項目:秘密鍵の平文なし・ウォレット完全隔離・ERC-20承認上限・System Promptに認証情報なし・書き込みツールのバックエンド検証・スキーマ検証層・高額操作の独立確認チャネル・日次支出サーキットブレーカー・市場異常サーキットブレーカー・完全な4層ログ。1つでも欠けると不可。
#hack#security
Tool Use完全メカニズム解説:AIエージェントはどのように「行動」するか、そしてなぜこの設計が信頼できるかどうかを決定するのか
AI Agent Bible
AIエージェントのLLM自体はツールを実行しません——「何をしたいか」のリクエストを出力するだけで、実際の実行はバックエンドコードです。この設計はすべてのセキュリティの基盤:実行層はあなたのコントロール下にあり、セキュリティ検証はそこで追加されます。ツール設計の良し悪しがエージェントを信頼できるかどうかを決定します。
#hack#security
あなたのエージェントのフロントラン:MEVボットがAIエージェントのトレードを標的にするとき、損失はあなたが直接標的にされるより酷くなる可能性がある
AI Agent Bible
AIエージェントはMEVボットにとって人間のトレーダーより良い獲物です——エージェントのトレードパターンが予測可能で高頻度で時間的に規則的だからです。フロントランニングで毎回0.3%を失い、1日20回操作するエージェントは年間約22%の累積損失を被ります。これは手数料として表示されず、見えない戦略の侵食です。
#hack#security