-
Bitcoin
$119,449.7677
0.05% -
Ethereum
$2,999.3297
0.45% -
XRP
$2.9220
2.98% -
Tether USDt
$1.0001
-0.01% -
BNB
$688.4199
-0.75% -
Solana
$161.6543
-0.28% -
USDC
$0.9998
0.00% -
Dogecoin
$0.1958
-1.94% -
TRON
$0.3021
0.12% -
Cardano
$0.7310
-1.62% -
Hyperliquid
$47.6023
-3.53% -
Stellar
$0.4528
-8.80% -
Sui
$3.8321
5.25% -
Chainlink
$15.6650
-0.35% -
Hedera
$0.2364
-4.19% -
Bitcoin Cash
$502.7898
-1.11% -
Avalanche
$21.1110
-1.14% -
UNUS SED LEO
$9.0015
-0.40% -
Shiba Inu
$0.0...01314
-2.32% -
Toncoin
$3.0138
1.41% -
Litecoin
$94.8316
-0.29% -
Monero
$343.7052
1.66% -
Polkadot
$3.9318
-2.13% -
Uniswap
$9.0367
5.17% -
Dai
$0.9999
0.00% -
Ethena USDe
$1.0004
-0.03% -
Bitget Token
$4.4625
1.43% -
Pepe
$0.0...01212
-2.97% -
Aave
$313.6764
1.44% -
Bittensor
$406.7018
2.79%
スマートコントラクトの再発攻撃とは何ですか?
再発攻撃は、悪名高いDAOハックに見られるように、資金を排出するためにスマートコントラクトの再帰関数呼び出しを悪用します。
2025/07/15 02:50

スマートコントラクトの基本を理解する
スマート契約は、コードに直接書かれた条件との自己実行契約です。 Ethereumのようなブロックチェーンプラットフォームで実行され、仲介者なしの当事者間の契約を自動的に実施します。これらの契約は展開されると不変です。つまり、コードに存在する脆弱性を展開後に変更することはできません。この不変性により、スマートコントラクトがライブになる前に、すべての可能なエクスプロイトから安全になることを保証することが重要になります。
そのようなエクスプロイトの1つは、暗号通貨のエコシステムの重大な損失の原因となっている再発攻撃です。この脆弱性がどのように機能するかを理解するには、スマートコントラクトが関数呼び出しを通じて外部アカウントやその他の契約とどのように相互作用するかを把握する必要があります。
再発攻撃とは何ですか?
悪意のある契約が、最初の実行が完了する前に、悪意のある契約が別の契約で脆弱な機能を繰り返し呼び出すと、再発攻撃が発生します。この再帰行動は、意図しない方法で資金を消耗させたり、状態変数を操作したりすることができます。
古典的な例には、エーテル転送を処理する契約が含まれます。関数が内部残高を更新する前にエーテルを外部アドレスに送信する場合、悪意のある契約は譲渡中に関数に再入力し、契約の資金を繰り返し排出できます。 2016年の悪名高いダオハックは、6,000万ドルのエーテル損失をもたらし、再発の脆弱性の結果でした。
再発攻撃は実際にどのように機能しますか?
再発攻撃のメカニズムをよりよく理解するには、次の単純化されたシナリオを検討してください。
- 契約には、ユーザーが堆積したエーテルを引き出すことができる
withdraw()
関数があります。 - この関数は、最初に
call.value()
を使用してユーザーにエーテルを送信し、ユーザーの残高をゼロに更新します。 - 悪意のある契約はユーザーとしてそれ自体を登録し、エーテルをターゲット契約に預けます。
-
withdraw()
呼び出すと、ターゲット契約はエーテル転送を開始します。 - 転送中、悪意のある契約のフォールバック関数(自動的にトリガーされる)は、再び
withdraw()
呼び出します。 - 残高はまだ更新されていないため、契約は、ユーザーがまだ利用可能な資金を持っており、より多くのエーテルを送信していると考えています。
- このループは、契約が排出されるかガスがなくなるまで続きます。
このプロセスは、契約内の運用順序を活用します。特に、州を更新する前にエーテルを送信します。
再発の脆弱性の種類
再発攻撃にはいくつかの形式があり、それぞれが契約ロジックのさまざまな側面を活用しています。
- 単一機能の再発:これは、単一の関数に外部呼び出しと状態の変更の両方が含まれる場合に発生します。州が更新される前の外部呼び出し中に攻撃者が再突入をトリガーします。
- クロス機能の再発:ここでは、複数の関数が状態変数を共有します。攻撃者は、最初の機能がまだ実行されている間に2番目の関数に再び入り、共有データを一貫して操作できません。
- DeLegateCallの再発:この高度なバリアントは、
delegatecall
メカニズムを使用して、ある契約から別の契約のコンテキストでコードを実行します。慎重に処理されない場合、これは予期しない再発シナリオにつながる可能性があります。
各タイプでは、搾取を防ぐために慎重な監査と特定の緩和戦略が必要です。
再発攻撃を防ぐ方法
再発攻撃の防止には、契約設計のベストプラクティスを採用し、セキュリティツールを活用することが含まれます。
- Checks-effects-interactionsパターンを使用します。外部呼び出しを行う前に、常に契約の状態を更新してください。これにより、再入国が既存のバランスや状態を操作できないことが保証されます。
- REANTRANCY GOURDSを実装する:OpenzePpelinのようなライブラリは、Mutex変数を使用してリエントラントコールをブロックするリンステンスガード修飾子を提供します。
- 複雑な外部呼び出しを避ける:不明または信頼されていない契約との相互作用を最小限に抑えます。必要に応じて、コールバックが安全であり、任意のコードをトリガーしないようにしてください。
- プッシュオーバープッシュペイメントを使用してください:ユーザーに資金をプッシュする代わりに、引き出しを開始させます。これにより、再帰的な排出のリスクが減ります。
- 徹底的な監査を実施する:自動化されたツールと手動レビューを使用して、コードベースの潜在的な再発ベクターを検出します。
これらの戦略を適用することにより、開発者は再発攻撃を成功させる可能性を大幅に減らすことができます。
再発性のエクスプロイトの実世界の例
いくつかの有名な事件は、再発攻撃の壊滅的な影響を強調しています。
- The Dao Hack(2016) :最も有名なケースには、スマートコントラクトが再帰的な撤退を許可した分散型の自律組織が含まれていました。攻撃者はこれを悪用して、数百万相当のエーテルを排出しました。
- Fusion Network Attack(2021) :ハッカーは、プロトコルで機能を超えた再発バグを利用し、1,400万ドルの損失をもたらしました。
- Warp Finance Hack(2021) :複数の再発ポイントが異なる機能で悪用され、攻撃者が800万ドル近くの資産を排出できるようになりました。
これらの例は、コーディングプラクティスを確保するための厳密なテストと遵守の重要性を強調しています。
よくある質問
Q:エチレオム以外のブロックチェーンでは、再発攻撃が発生する可能性がありますか?
はい、再発攻撃は、外部呼び出しおよび変動状態でスマートコントラクトをサポートするブロックチェーンプラットフォームに影響を与える可能性があります。 Ethereumは最も顕著なケースを見てきましたが、Binance Smart Chain、Solanaなどに同様の脆弱性が存在します。
Q:すべての外部呼び出しは危険ですか?
いいえ、しかし、外部呼び出しは注意して扱う必要があります。危険は、重要な状態変数を更新する前に作成されると発生します。適切なコーディングパターンとセーフガードは、このリスクを軽減できます。
Q:契約の脆弱性について契約をテストするにはどうすればよいですか?
SlithersやSecurifyなどの静的分析ツールを使用したり、手動コード監査を実行したり、BrownieやHardhatなどのフレームワークを使用して攻撃シナリオをシミュレートできたりできます。再発ガードを使用し、安全な開発慣行に従うことも役立ちます。
Q:フラッシュローン攻撃と再発攻撃の違いは何ですか?
どちらもDefiプロトコルを活用できますが、フラッシュローン攻撃は、担保なしで大量の資本を借用し、同じ取引内で返済することに依存しています。再発攻撃は、契約状態を操作するために再帰的に呼び出して関数に焦点を当てています。ただし、一部の攻撃は両方の手法を組み合わせて、より大きな影響を与えます。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- BDAG X1アプリのスカイロケット、シブリバウンド、XMRが強力になりました:何が起こっているのですか?
- 2025-07-15 07:10:12
- Ruvi AI:監査されたトークンは、大規模な利益をもたらしたイーサリアムを上回るように設定していますか?
- 2025-07-15 06:50:12
- 10倍の可能性を備えたdefiトークン:Mutuum Financeと年末の機会
- 2025-07-15 06:50:12
- ビットコインのワイルドライド:12万ドルのサージ、暗号請求書の話題、そしてそれが何を意味するのか
- 2025-07-15 07:10:12
- XRPのカップとハンドル:目の前の億万長者のターゲット?
- 2025-07-15 07:50:12
- ビットコインは$ 186,000を超えて爆発します:新しいマイルストーンまたは始まりのみですか?
- 2025-07-15 08:10:12
関連知識

Bitcoin先物取引戦略をバックテストする方法は?
2025-07-15 11:35:36
Bitcoin先物取引の理解Bitcoin先物取引には、将来の価格と日付でBitcoinを売買する契約が含まれます。トレーダーはこれらの機器を使用して、価格の動きを推測したり、既存のポジションをヘッジしたりします。この文脈で戦略をバックテストすることは、実際の資本を危険にさらす前に、履歴データに取引...

取引の心理学Bitcoin契約
2025-07-13 02:50:00
Bitcoin先物取引の感情的なジェットコースターを理解するBitcoin契約取引は、特に先物の形で、トレーダーの心理的状態に大きな影響を与える可能性のある高レベルのボラティリティとレバレッジを導入します。実際のBitcoinを売買するスポット取引とは異なり、先物契約により、トレーダーは基礎となる資...

Lightningネットワークはスマートコントラクトに使用できますか?
2025-07-14 23:28:20
Lightning Networkのコア機能を理解するLightningネットワークは、 Bitcoinのようなブロックチェーンプロトコルの上に構築された2層ソリューションであり、より高速で安価なトランザクションを可能にします。ユーザー間でオフチェーンの支払いチャネルを作成することで動作し、それぞれ...

契約Bitcoin契約を取引するのに最適な時期?
2025-07-13 05:29:09
Bitcoin契約とそのボラティリティを理解するBitcoin契約、特に先物契約は、基礎となる資産を所有せずにBitcoinの将来の価格についてトレーダーが推測できるようにするデリバティブ手段です。これらの契約はBitcoinのスポット価格から価値を引き出し、Binance、Bybit、OKXなどの...

Bitcoin先物のろうそく足チャートを読む方法は?
2025-07-15 03:00:26
ろうそく足チャートの基本を理解するろうそく足チャートは、特にBitcoin先物では、暗号通貨取引で広く使用されています。各ろうそく足は特定の時間間隔を表し、その期間中のオープン、ハイ、低、および密接な価格を示しています。ろうそくの本体は、開口部と終値の間の範囲を反映していますが、芯または影は到達した...

Bitcoin契約取引でフィボナッチレベルを使用する方法は?
2025-07-13 08:07:30
取引におけるフィボナッチレベルの理解Fibonacciレベルは、潜在的なサポートゾーンとレジスタンスゾーンを特定するためにトレーダーが使用するテクニカル分析ツールです。これらのレベルは、フィボナッチ配列から導き出されます。これは、各数値が先行する2つの合計(0、1、1、2、3、5、8、8、13など)...

Bitcoin先物取引戦略をバックテストする方法は?
2025-07-15 11:35:36
Bitcoin先物取引の理解Bitcoin先物取引には、将来の価格と日付でBitcoinを売買する契約が含まれます。トレーダーはこれらの機器を使用して、価格の動きを推測したり、既存のポジションをヘッジしたりします。この文脈で戦略をバックテストすることは、実際の資本を危険にさらす前に、履歴データに取引...

取引の心理学Bitcoin契約
2025-07-13 02:50:00
Bitcoin先物取引の感情的なジェットコースターを理解するBitcoin契約取引は、特に先物の形で、トレーダーの心理的状態に大きな影響を与える可能性のある高レベルのボラティリティとレバレッジを導入します。実際のBitcoinを売買するスポット取引とは異なり、先物契約により、トレーダーは基礎となる資...

Lightningネットワークはスマートコントラクトに使用できますか?
2025-07-14 23:28:20
Lightning Networkのコア機能を理解するLightningネットワークは、 Bitcoinのようなブロックチェーンプロトコルの上に構築された2層ソリューションであり、より高速で安価なトランザクションを可能にします。ユーザー間でオフチェーンの支払いチャネルを作成することで動作し、それぞれ...

契約Bitcoin契約を取引するのに最適な時期?
2025-07-13 05:29:09
Bitcoin契約とそのボラティリティを理解するBitcoin契約、特に先物契約は、基礎となる資産を所有せずにBitcoinの将来の価格についてトレーダーが推測できるようにするデリバティブ手段です。これらの契約はBitcoinのスポット価格から価値を引き出し、Binance、Bybit、OKXなどの...

Bitcoin先物のろうそく足チャートを読む方法は?
2025-07-15 03:00:26
ろうそく足チャートの基本を理解するろうそく足チャートは、特にBitcoin先物では、暗号通貨取引で広く使用されています。各ろうそく足は特定の時間間隔を表し、その期間中のオープン、ハイ、低、および密接な価格を示しています。ろうそくの本体は、開口部と終値の間の範囲を反映していますが、芯または影は到達した...

Bitcoin契約取引でフィボナッチレベルを使用する方法は?
2025-07-13 08:07:30
取引におけるフィボナッチレベルの理解Fibonacciレベルは、潜在的なサポートゾーンとレジスタンスゾーンを特定するためにトレーダーが使用するテクニカル分析ツールです。これらのレベルは、フィボナッチ配列から導き出されます。これは、各数値が先行する2つの合計(0、1、1、2、3、5、8、8、13など)...
すべての記事を見る
