時価総額: $2.5665T -2.09%
ボリューム(24時間): $64.1207B 43.32%
恐怖と貪欲の指数:

33 - 恐れ

  • 時価総額: $2.5665T -2.09%
  • ボリューム(24時間): $64.1207B 43.32%
  • 恐怖と貪欲の指数:
  • 時価総額: $2.5665T -2.09%
暗号
トピック
暗号化
ニュース
暗号造園
動画
トップクリプトスペディア

言語を選択する

言語を選択する

通貨の選択

暗号
トピック
暗号化
ニュース
暗号造園
動画

リエントランシー攻撃とは何ですか?契約でそれを防ぐにはどうすればよいですか?

Reentrancy attacks exploit unchecked external calls in smart contracts, allowing attackers to drain funds by re-entering functions before state updates—highlighted by the $60M DAO hack.

2025/11/10 16:20

スマートコントラクトにおけるリエントランシー攻撃を理解する

1. 再入攻撃は、最初の実行が完了する前に、悪意のあるコントラクトが脆弱な関数を繰り返しコールバックするときに発生します。この再帰的な動作は、スマート コントラクト内の外部呼び出しと状態変化の順序を利用します。

2. 中心的な脆弱性は、内部状態を更新する前に資金を送信したり、外部呼び出しを行ったりするコントラクトにあります。攻撃者はこのウィンドウを利用して、出金機能を再入力することで資金を複数回引き出すことができます。

3. 最も悪名高い例の 1 つは、2016 年の DAO ハッキングで、リエントランシーの欠陥により 6,000 万ドル以上相当のイーサが流出しました。攻撃者はフォールバック関数を使用して、引き出しメカニズムを再帰的に呼び出しました。

4. これらの攻撃はイーサ転送に限定されません。適切な保護策が講じられていない場合、ユーザー制御のコントラクトへの外部呼び出しは潜在的に武器化される可能性があります。

5.再入可能性は、分散型アプリケーション、特に多額のユーザー資金を扱う DeFi プロトコルにおいて、依然として最も重大なセキュリティ リスクの 1 つです。

再入可能を可能にする一般的なパターン

1. 「最初に呼び出し、後で更新」パターンに従う契約は本質的に影響を受けやすいです。ユーザーの残高を減らす前にイーサまたはトークンを送信すると、攻撃者は元の金額を反映した更新された残高で再侵入することができます。

2. 適切なチェックを行わずにcall() 、 delegatecall() 、またはsend()などの低レベルの呼び出しに依存する関数は危険にさらされる可能性が高くなります。これらのメソッドは、受信者のフォールバックまたは受信機能をトリガーしますが、これには悪意のあるロジックが含まれる可能性があります。

3. プルオーバープッシュ支払いモデルの不適切な使用はリスクの一因となります。トランザクション中に積極的に資金を送信するプッシュベースのシステムは、再帰的な悪用の余地を生み出します。

4. 複数のインターフェースにわたる複雑なコントラクトのやり取りにより、危険が増幅されます。あるコントラクトが別のコントラクトを呼び出し、両方のコントラクトが可変状態である場合、実行フローの追跡が困難になり、見落としの可能性が高くなります。

5.状態の更新がアトミックではなく、外部との対話後に発生する場合は、一見安全なコードでも危険にさらされる可能性があります。

効果的な予防戦略

1. Checks-Effects-Interactions (CEI) パターンを厳密に適用します。常に入力を検証し、内部状態変数を更新してから、外部呼び出しを実行します。このシーケンスにより、再入場ウィンドウが排除されます。

2. OpenZeppelin のReentrancyGuardなどのライブラリによって提供されるミューテックス ロックまたは再入ガードを使用します。これらは、すでに実行中の関数が再入力されるのを防ぐロック メカニズムを強制します。

3. 低レベルの呼び出しの使用を制限します。 transfer()のような、再帰的な実行を防ぐガス給費制限などの保護機能が組み込まれた高レベルの転送関数を優先します。

4. 直接支払いの代わりに引き出しパターンを実装します。ユーザーが別の機能を通じて資金の取り出しを開始できるようにすることで、機密性の高い操作中の外部呼び出しの数を最小限に抑えます。

5.定期的な監査ツールと静的分析ツールを開発ライフサイクルに統合して、展開前に潜在的な再入ベクトルを検出する必要があります。

よくある質問

リエントランシー攻撃におけるフォールバック機能の役割は何ですか?フォールバック機能は、コントラクトがデータなしの Ether を受信すると自動的に実行されます。攻撃者は、脆弱な機能を再度呼び出す悪意のあるフォールバックを作成し、元のトランザクションが完了する前に資金を枯渇させるループを作成します。

同じ契約内の異なる機能間でリエントラントが発生する可能性はありますか?はい。関数間の再入は、ある関数が同じコントラクトの別の関数に戻る外部呼び出しを行い、更新されていない共有状態を利用するときに発生します。このような経路をブロックするには、適切な状態管理とガードが不可欠です。

プロキシ契約はリエントラントの影響を受けませんか?いいえ。ロジック実装にチェックされていない外部呼び出しが含まれている場合、プロキシ コントラクトは依然として脆弱である可能性があります。プロキシは呼び出しをアップグレード可能なロジック コントラクトに委任するため、再入性を含むロジック層の欠陥は依然として悪用可能です。

ガス制限は再入試行にどのような影響を与えますか?初期の防御の一部は、再帰をブロックするために利用可能なガスをすべて消費することに依存していました。ただし、最新の攻撃は、正確なガス推定を使用してこれを回避します。ガス制限のみに依存するのは信頼できません。構造的なコード パターンにより、より強力な保護が提供されます。

免責事項:info@kdj.com

提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。

このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。

関連知識

BTCUSDT先物ポジションを保有する総コストの計算方法

BTCUSDT先物ポジションを保有する総コストの計算方法

2026-10-26 04:06:35

BTCUSDT先物ポジションの総コスト構成要素1. BTCUSDT 先物ポジションを保持するための総コストには、明示的な料金と暗黙的な料金の両方が含まれます。明示的なコストは取引開始手数料と終了手数料で構成されますが、暗黙的なコストは主に、長期にわたる資金調達率の支払いまたは受け取りによって発生しま...

XRPSDT の資金調達レートと建玉を一緒に監視する方法

XRPSDT の資金調達レートと建玉を一緒に監視する方法

2026-10-20 18:39:42

XRPUSDT 無期限契約の資金調達率の仕組み1. XRPUSDT 無期限スワップの資金調達率は、XRP と USDT 建て融資市場の間のプレミアム インデックスと金利差を使用して 8 時間ごとに計算されます。 2. Binance、Bybit、OKX などの取引所は、デリバティブ API エンドポ...

SOLUSDT 無期限先物で損益分岐点ストップロスを設定する方法

SOLUSDT 無期限先物で損益分岐点ストップロスを設定する方法

2026-10-23 09:34:18

損益分岐点とストップロスの仕組みを理解する1. 損益分岐点ストップロスは、ポジションが有利に動くにつれて上方に調整され、約定時に純損失がゼロになるように固定する動的な注文です。 2. 取引が事前に定義された利益しきい値 (通常、初期リスクまたはエントリー手数料の 1 倍から 2 倍) に達した場合に...

ETHUSDT取引にBinance Futures Calculatorを使用する方法

ETHUSDT取引にBinance Futures Calculatorを使用する方法

2026-10-21 02:00:11

Binance Futures Calculator インターフェイスを理解する1. 計算機は Binance Futures 取引インターフェイス内に直接組み込まれており、注文入力パネルの ETHUSDT 無期限契約ページからアクセスできます。 2. ユーザーがポジションサイズ、エントリー価格、レ...

先物清算前にBTCUSDTマーク価格を確認する方法

先物清算前にBTCUSDTマーク価格を確認する方法

2026-10-26 12:20:18

BTCUSDT 先物におけるマーク価格を理解する1. マーク価格は、市場環境が不安定な場合に不当清算を防止するために取引所が使用する計算値です。 2. 指標価格や調達率など、複数の情報源から導き出された公正かつ安定した参照価格を反映しています。 3. 前回の取引価格とは異なり、マーク価格には操作リス...

TRUMPUSDT 無期限契約のレバレッジを調整する方法

TRUMPUSDT 無期限契約のレバレッジを調整する方法

2026-10-30 22:19:37

TRUMPUSDT の無期限契約の仕組みを理解する1. TRUMPUSDT は、複数の Tier-1 デリバティブ取引所に上場されているテーマ別無期限先物契約であり、資産の基礎となるファンダメンタルズではなく、米国の政治的物語を中心とした価格センチメントを追跡するように設計されています。 2. プラ...

BTCUSDT先物ポジションを保有する総コストの計算方法

BTCUSDT先物ポジションを保有する総コストの計算方法

2026-10-26 04:06:35

BTCUSDT先物ポジションの総コスト構成要素1. BTCUSDT 先物ポジションを保持するための総コストには、明示的な料金と暗黙的な料金の両方が含まれます。明示的なコストは取引開始手数料と終了手数料で構成されますが、暗黙的なコストは主に、長期にわたる資金調達率の支払いまたは受け取りによって発生しま...

XRPSDT の資金調達レートと建玉を一緒に監視する方法

XRPSDT の資金調達レートと建玉を一緒に監視する方法

2026-10-20 18:39:42

XRPUSDT 無期限契約の資金調達率の仕組み1. XRPUSDT 無期限スワップの資金調達率は、XRP と USDT 建て融資市場の間のプレミアム インデックスと金利差を使用して 8 時間ごとに計算されます。 2. Binance、Bybit、OKX などの取引所は、デリバティブ API エンドポ...

SOLUSDT 無期限先物で損益分岐点ストップロスを設定する方法

SOLUSDT 無期限先物で損益分岐点ストップロスを設定する方法

2026-10-23 09:34:18

損益分岐点とストップロスの仕組みを理解する1. 損益分岐点ストップロスは、ポジションが有利に動くにつれて上方に調整され、約定時に純損失がゼロになるように固定する動的な注文です。 2. 取引が事前に定義された利益しきい値 (通常、初期リスクまたはエントリー手数料の 1 倍から 2 倍) に達した場合に...

ETHUSDT取引にBinance Futures Calculatorを使用する方法

ETHUSDT取引にBinance Futures Calculatorを使用する方法

2026-10-21 02:00:11

Binance Futures Calculator インターフェイスを理解する1. 計算機は Binance Futures 取引インターフェイス内に直接組み込まれており、注文入力パネルの ETHUSDT 無期限契約ページからアクセスできます。 2. ユーザーがポジションサイズ、エントリー価格、レ...

先物清算前にBTCUSDTマーク価格を確認する方法

先物清算前にBTCUSDTマーク価格を確認する方法

2026-10-26 12:20:18

BTCUSDT 先物におけるマーク価格を理解する1. マーク価格は、市場環境が不安定な場合に不当清算を防止するために取引所が使用する計算値です。 2. 指標価格や調達率など、複数の情報源から導き出された公正かつ安定した参照価格を反映しています。 3. 前回の取引価格とは異なり、マーク価格には操作リス...

TRUMPUSDT 無期限契約のレバレッジを調整する方法

TRUMPUSDT 無期限契約のレバレッジを調整する方法

2026-10-30 22:19:37

TRUMPUSDT の無期限契約の仕組みを理解する1. TRUMPUSDT は、複数の Tier-1 デリバティブ取引所に上場されているテーマ別無期限先物契約であり、資産の基礎となるファンダメンタルズではなく、米国の政治的物語を中心とした価格センチメントを追跡するように設計されています。 2. プラ...

すべての記事を見る

User not found or password invalid

Your input is correct