Skip to main content
Web3Fire
securityadvanced

再入攻撃

状態の更新が完了する前に契約が自身を再呼び出し、資金を流出させる脆弱性。

entity.loading_intelligence

要点

カテゴリsecurity
難易度advanced

概要

再入攻撃とは、状態の更新が完了する前にスマートコントラクトが自身を再呼び出し、資金を流出させる攻撃手法です。これは、有名なDAOハッキング事件の攻撃ベクトルでした。この攻撃は、スマートコントラクトの実行における状態変更の順序を悪用するものです。

仕組み

悪意のあるスマートコントラクトが外部関数を呼び出し、被害者のスマートコントラクトが状態を更新する前に、そのスマートコントラクトを再呼び出しします。処理の最後まで残高が更新されないため、呼び出しが繰り返されることで資金が流出します。チェック・エフェクト・インタラクション(CEI)や再入防止ガード(reentrancy guards)によってこれを防ぐことができます。

重要性

再入(Reentrancy)は、スマートコントラクトの脆弱性の中でも最も危険なもののひとつであり、多大な損失を引き起こします。開発者や監査担当者にとって、これを理解することは不可欠です。最新のフレームワークには、組み込みの保護機能が備わっています。

関連する概念

再入攻撃は、スマートコントラクトの脆弱性や監査に関連しています。これらは、コーディングパターンやガードによって防ぐことができます。

ナレッジグラフ

entity.loading_graph

entity.faq

entity.loading_faq

entity.related_comparisons

ARCHITECTURE V3 — Static Knowledge Shell · 297/297 Concepts · SSG · 0 D1