-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
リエントランシー攻撃とは何ですか?また、スマートコントラクトはそれをどのように防御できますか?
Re-entrancy attacks exploit unchecked external calls in smart contracts, allowing attackers to recursively withdraw funds before state updates, as seen in the $60M DAO hack.
2025/11/13 03:40
スマートコントラクトにおけるリエントランシー攻撃を理解する
1. 再入攻撃は、最初の実行が完了する前に、悪意のあるコントラクトが別のコントラクトの脆弱な機能を繰り返しコールバックするときに発生します。このエクスプロイトは、状態の変更と外部呼び出しが実行される順序を利用します。
2. 最も悪名高い例は、2016 年の DAO ハッキングです。このハッキングでは、攻撃者がイーサを送信する前に残高を更新できなかった契約から資金を再帰的に引き出し、6,000 万ドル以上を流出させました。
3. これらの攻撃は通常、重要な状態変数を矛盾した状態に保持しながら、信頼できないコントラクトへの外部呼び出しを行う関数をターゲットとします。
4. 再帰呼び出し中に、攻撃者のフォールバックまたは受信関数が同じ引き出しロジックを再度トリガーし、アクセス制御や残高チェックを事実上バイパスします。
5. 中心的な脆弱性は、チェック効果相互作用パターンに違反することにあります。このパターンでは、実行中の操作を防ぐために、状態の変更は常に外部呼び出しよりも前に行われる必要があります。
Solidity における一般的な脆弱なパターン
1. 最初に内部アカウンティングを更新せずに、ユーザーが制御するアドレスに Ether またはトークンを送信する機能は、再入可能性の主なターゲットです。
2. ネイティブ Ether 転送によるコールなどの低レベルのコールを使用するコントラクトは、残りのすべてのガスを転送し、複雑なコールバック ロジックが可能になるため、特にリスクにさらされます。
3. 呼び出し後の検証に依存するロジックは、呼び出し自体が再帰エントリをトリガーすると失敗し、損傷が発生するまでそれらのチェックが無効になります。
4. たとえ子コントラクトが安全であるように見えても、親コントラクトが適切な保護を強制しない場合、継承構造により意図せずに機能が公開される可能性があります。
5. デリゲートコール メカニズムが共有ストレージ レイアウトを通じて状態の破損を許可する場合、ライブラリまたはプロキシ パターンによって脆弱性が伝播する可能性があります。
効果的な防御メカニズム
1. Checks-Effects-Interactionsパターンを厳密に実装します。常に入力を検証し、状態変数を更新してから、外部呼び出しを続行します。
2. OpenZeppelin の ReentrancyGuard などの確立されたライブラリの再入ガードを使用します。このガードは、ミューテックス ロックを使用して再帰エントリをブロックします。
3.電話の代わりに転送または送信を介して資金を転送することを好みます。これらの方法はガス転送を制限し、攻撃対象領域を減らすためです。
4. 自動的に送金されるのではなく、ユーザーが資金を請求するプルオーバープッシュ支払いモデルを採用し、アウトバウンド コールのリスクを排除します。
5. 開発中に厳密な静的分析ツールと正式な検証を適用して、展開前に潜在的な再帰パスを検出します。
よくある質問
再入シナリオにおいてフォールバック機能が危険になるのはなぜですか?フォールバック関数は、呼び出し側コントラクトのビジネス関数を再度呼び出すロジックが含まれている場合、危険になります。外部呼び出しを行う前に元のコントラクトの状態が更新されていない場合、この再帰トリガーによって古い残高やアクセス許可が悪用される可能性があります。
複数の契約対話にわたって再入が発生する可能性はありますか?はい、同じコントラクト内の異なる機能が適切な同期を行わずに共有状態にアクセスすると、機能間の再入が可能になります。攻撃者は、外部から呼び出す 1 つの関数をトリガーし、状態が更新される前にフォールバックを使用して 2 番目の脆弱な関数に入る可能性があります。
非イーサ契約は再入の影響を受けませんか?いいえ、ERC-20 転送を処理するトークン コントラクトも悪用される可能性があります。トークン転送が受信側フック (承認 + コールバックなど) をトリガーし、受信コントラクトが転送中に送信側の状態を操作する場合、同様の再帰的エクスプロイトが出現します。
コンパイラのアップグレードは再入を軽減するのにどのように役立ちますか? Solidity の新しいバージョンには、より安全なデフォルトと既知のアンチパターンに対する警告が含まれています。たとえば、明示的な可視性指定子と改善されたガソリン給金ルールにより、意図しない動作が減少します。ただし、コンパイラ機能だけでは、アーキテクチャ上の規律を必要とする論理的欠陥を排除することはできません。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- ホワイトハウス・ブローカーズ・ピース:仮想通貨、銀行、そして金融の未来
- 2026-01-31 18:50:01
- 希少な王立造幣局コインの発見が価値の熱狂を引き起こす: あなたの小銭の価値は何ですか?
- 2026-01-31 18:55:01
- Pi Network のメインネット移行が加速し、数百万ものロックを解除して Pi Coin の基盤を強化
- 2026-01-31 18:55:01
- Lido の stVaults が機関向けイーサリアムステーキングに革命を起こす
- 2026-01-31 19:25:01
- MegaETH の大胆な賭け: 上場手数料なし、交換エアドロップなし、純粋な根性のみ
- 2026-01-31 19:20:02
- BlockDAGのプレセール遅延で市場の厳しい監視の中で上場日への疑問が浮上
- 2026-01-31 19:15:01
関連知識
半減期とは何ですか? (Bitcoinの供給スケジュールの把握)
2026-01-16 00:19:50
Bitcoin 半減期とは何ですか? 1. Bitcoin の半減は、Bitcoin プロトコルに組み込まれた事前にプログラムされたイベントで、マイナーに与えられるブロック報酬を 50% 削減します。 2. これは約 210,000 ブロックごとに発生します。これは、Bitcoin の平均ブロック時...
Play-to-Earn (P2E) ゲームとは何ですか?またその仕組みは何ですか?
2026-01-12 20:19:33
定義とコアメカニズム1. Play-to-Earn (P2E) ゲームは、プレーヤーがゲームプレイ アクティビティを通じて暗号通貨トークンまたは非代替トークン (NFT) を獲得する、ブロックチェーン ベースのデジタル エクスペリエンスです。 2. これらのゲームは、分散型台帳テクノロジーに依存して...
Mempoolとは何ですか?トランザクションはどのように確認されるのですか?
2026-01-24 06:00:16
メンプールとは何ですか? 1. mempool は、未確認のトランザクションを保持する各 Bitcoin ノード内の一時記憶域です。 2. トランザクションはネットワークにブロードキャストされた後、マイナーがトランザクションをブロックに含める前にメモリプールに入ります。 3. すべてのフル ノードは...
暗号通貨で受動的収入を得る方法?
2026-01-13 07:39:45
ステーキングのメカニズム1. ステーキングには、トランザクションの検証やコンセンサスの維持などのネットワーク操作をサポートするために、ウォレットに一定量の暗号通貨をロックすることが含まれます。 2. 参加者は、賭けているのと同じトークンで指定された報酬を受け取り、通常はネットワークで定義されたパラメ...
ゼロ知識証明 (ZK 証明) とは何ですか?
2026-01-22 04:40:14
定義とコアコンセプト1. ゼロ知識証明 (ZK-Proof) は、一方の当事者が、その陳述の有効性を超えて基礎となる情報を明らかにすることなく、他方の当事者に対してその陳述の真実性を証明できるようにする暗号プロトコルです。 2. ZK 証明は、完全性、健全性、ゼロ知識という 3 つの基本特性を満たさ...
ブロックチェーンのトリレンマとは何ですか? (セキュリティ、スケーラビリティ、分散化)
2026-01-15 17:00:25
核心的な対立を理解する1. ブロックチェーンのトリレンマは、単一のブロックチェーン プロトコル内でセキュリティ、スケーラビリティ、分散化を同時に最大化することが非常に難しいという基本的なアーキテクチャ上の制約を説明します。 2. 主要な設計上の決定には必ずトレードオフが伴います。スループットを向上さ...
半減期とは何ですか? (Bitcoinの供給スケジュールの把握)
2026-01-16 00:19:50
Bitcoin 半減期とは何ですか? 1. Bitcoin の半減は、Bitcoin プロトコルに組み込まれた事前にプログラムされたイベントで、マイナーに与えられるブロック報酬を 50% 削減します。 2. これは約 210,000 ブロックごとに発生します。これは、Bitcoin の平均ブロック時...
Play-to-Earn (P2E) ゲームとは何ですか?またその仕組みは何ですか?
2026-01-12 20:19:33
定義とコアメカニズム1. Play-to-Earn (P2E) ゲームは、プレーヤーがゲームプレイ アクティビティを通じて暗号通貨トークンまたは非代替トークン (NFT) を獲得する、ブロックチェーン ベースのデジタル エクスペリエンスです。 2. これらのゲームは、分散型台帳テクノロジーに依存して...
Mempoolとは何ですか?トランザクションはどのように確認されるのですか?
2026-01-24 06:00:16
メンプールとは何ですか? 1. mempool は、未確認のトランザクションを保持する各 Bitcoin ノード内の一時記憶域です。 2. トランザクションはネットワークにブロードキャストされた後、マイナーがトランザクションをブロックに含める前にメモリプールに入ります。 3. すべてのフル ノードは...
暗号通貨で受動的収入を得る方法?
2026-01-13 07:39:45
ステーキングのメカニズム1. ステーキングには、トランザクションの検証やコンセンサスの維持などのネットワーク操作をサポートするために、ウォレットに一定量の暗号通貨をロックすることが含まれます。 2. 参加者は、賭けているのと同じトークンで指定された報酬を受け取り、通常はネットワークで定義されたパラメ...
ゼロ知識証明 (ZK 証明) とは何ですか?
2026-01-22 04:40:14
定義とコアコンセプト1. ゼロ知識証明 (ZK-Proof) は、一方の当事者が、その陳述の有効性を超えて基礎となる情報を明らかにすることなく、他方の当事者に対してその陳述の真実性を証明できるようにする暗号プロトコルです。 2. ZK 証明は、完全性、健全性、ゼロ知識という 3 つの基本特性を満たさ...
ブロックチェーンのトリレンマとは何ですか? (セキュリティ、スケーラビリティ、分散化)
2026-01-15 17:00:25
核心的な対立を理解する1. ブロックチェーンのトリレンマは、単一のブロックチェーン プロトコル内でセキュリティ、スケーラビリティ、分散化を同時に最大化することが非常に難しいという基本的なアーキテクチャ上の制約を説明します。 2. 主要な設計上の決定には必ずトレードオフが伴います。スループットを向上さ...
すべての記事を見る














