定義
リエントランシー攻撃は未完了の処理へ再び入る動作を利用します。外部コントラクトが戻る前に呼び返し、元の状態が整合していなければ会計や承認規則を破れます。
仕組み
例えば残高更新より先に外部とやり取りすると、古い残高を見て一回限りの処理を繰り返す恐れがあります。関数や契約をまたぐ場合や読み取りの不整合を使う場合もあります。全コールバックが悪いのでなく、制御を渡す際の仮定が問題です。
注意点
検査と更新の順序、ガード、外部呼び出し制限、不変条件を組み合わせます。全経路、トークンのコールバック、依存契約を確認します。見慣れた画面や監査表示は保証ではありません。実装と状態の仮定を修正し、一人の呼出元を遮断するだけでは不十分です。