-
bitcoin $77146.398531 USD
-0.23% -
ethereum $2514.088317 USD
-0.37% -
tether $0.999674 USD
0.00% -
bnb $722.500739 USD
-1.34% -
xrp $1.361192 USD
-0.23% -
usd-coin $0.999776 USD
-0.01% -
solana $101.320251 USD
-0.42% -
tron $0.339801 USD
0.16% -
hyperliquid $78.899137 USD
-0.02% -
zcash $1141.149289 USD
-0.18% -
dogecoin $0.084480 USD
-0.05% -
monero $530.834712 USD
-1.66% -
chainlink $11.453705 USD
-0.73% -
unus-sed-leo $9.056535 USD
-0.61% -
cardano $0.207439 USD
-0.31%
ブロックチェーンに対する再突入攻撃はどのように発生しますか?
Reentry attacks exploit smart contract vulnerabilities by repeatedly calling functions before transactions complete, risking fund drainage if not secured properly.
2025/04/11 20:21
再突入攻撃の紹介
再突入攻撃は、ブロックチェーンのスマートコントラクト、特に金融取引を処理するスマートコントラクトで発生する可能性のあるエクスプロイトの一種です。このタイプの攻撃は、契約のコードの脆弱性を利用して、攻撃者が最初のトランザクションが完了する前に関数を繰り返し呼び出すことができます。これらの攻撃がどのように発生するかを理解することは、開発者とユーザーが資産を保護し、ブロックチェーンの整合性を維持するために重要です。
再突入攻撃のメカニズム
再突入攻撃は通常、資金の譲渡を伴うスマートコントラクトを対象としています。この攻撃は、契約のロジックの欠陥を活用して、契約が内部状態を更新する前に外部住所に資金を送信します。これがどのように機能しますか:
- 最初の呼び出し:攻撃者は、攻撃者の住所に資金を送るように設計された脆弱なスマートコントラクトの関数を呼び出すトランザクションを開始します。
- 外部呼び出し:契約が内部状態を更新する前に(たとえば、送信者の残高を減らす)、攻撃者の住所に資金を送ります。
- 再入国:攻撃者の住所は、資金を受け取ったときに同じ関数を再度自動的に呼び出すように設定されているため、最初の取引が完全に処理される前に契約に再び入ります。
- ループ:このプロセスは複数回繰り返すことができ、攻撃者は契約のロジックが最終的に州の更新または資金がなくなるまで契約の資金を排出できるようにします。
脆弱なスマートコントラクトコード
再突入攻撃をどのように実行できるかを理解するために、Solidityで書かれた脆弱なスマートコントラクトの簡略化された例を見てみましょう。
contract VulnerableContract {mapping(address => uint) public balances; function withdraw(uint amount) public { require(balances[msg.sender] >= amount, 'Insufficient balance'); // Send funds to the caller (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); // Update the balance balances[msg.sender] -= amount; } function deposit() public payable { balances[msg.sender] += msg.value; }
}
この例では、 withdraw関数は最初に資金を発信者に送信し、次に残高を更新します。このシーケンスにより、攻撃者は残高が更新される前に契約に再び入ることができます。
再突入攻撃の実行
再入国攻撃を実行するには、攻撃者が資金を受け取ったときに自動的にwithdraw関数を呼び出すことができる悪意のある契約を設定する必要があります。このような悪意のある契約の簡略化された例は次のとおりです。
contract AttackContract {VulnerableContract public vulnerableContract; constructor(address _vulnerableContractAddress) { vulnerableContract = VulnerableContract(_vulnerableContractAddress); } function attack() public { vulnerableContract.withdraw(vulnerableContract.balances(address(this))); } receive() external payable { if (address(vulnerableContract).balance >= msg.value) { vulnerableContract.withdraw(msg.value); } }
}
- 攻撃契約の展開:攻撃者は
AttackContractを展開し、VulnerableContractのアドレスで初期化します。 - 攻撃を開始する:攻撃者は
AttackContractのattack関数を呼び出し、それはVulnerableContractのwithdraw関数を呼び出します。 - 再入国ループ:資金を受け取ると、
AttackContractのreceive機能は自動的に再びwithdraw呼び出し、VulnerableContractを排出するループを作成します。
再突入攻撃の防止
再突入攻撃を防ぐために、開発者は、外部呼び出しが行われる前に契約の内部状態が更新されることを確認する必要があります。再突入攻撃に耐性のあるVulnerableContractの更新バージョンは次のとおりです。
contract SecureContract {mapping(address => uint) public balances; function withdraw(uint amount) public { require(balances[msg.sender] >= amount, 'Insufficient balance'); // Update the balance first balances[msg.sender] -= amount; // Then send funds to the caller (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); } function deposit() public payable { balances[msg.sender] += msg.value; }
}
この安全なバージョンでは、資金が送られる前に残高が更新され、再入国の試みが妨げられます。
再突入攻撃の実際の例
再突入攻撃の最も悪名高い例の1つは、2016年のイーサリアムブロックチェーンのDAOハックです。DAO(分散型自律編成組織)は、ベンチャーキャピタルファンドとして運営するように設計されたスマートコントラクトでしたが、上記の脆弱性が含まれていました。攻撃者は、この脆弱性を悪用して、DAOから約360万人のETHを排出し、攻撃を逆転させるためにイーサリアムブロックチェーンのハードフォークにつながりました。
もう1つの例は、2017年のパリティウォレットハックで、攻撃者がパリティマルチシグネチャウォレットの再入国脆弱性を悪用し、150,000を超えるETHの盗難をもたらしました。
よくある質問
Q:ブロックチェーンで再突入攻撃をリアルタイムで検出できますか? A:ブロックチェーンの分散型の性質により、リアルタイムで再突入攻撃を検出することは困難です。ただし、一部のブロックチェーンプラットフォームとセキュリティ会社は、高度な監視ツールと異常検出アルゴリズムを使用して、再突入攻撃を示す可能性のある疑わしいパターンを特定します。これらのツールは、重大な損害が発生する前に、ユーザーと開発者に潜在的な脆弱性を警告することができます。
Q:すべてのスマートコントラクトは、再入国攻撃に対して脆弱ですか? A:いいえ、すべてのスマートコントラクトが再突入攻撃に対して脆弱であるわけではありません。資金の譲渡を伴わない、または外部通話を行わない契約は、一般に影響を受けやすくありません。ただし、内部状態を更新する前に資金を外部住所に送信する契約は危険にさらされる可能性があります。
Q:再入国攻撃から身を守るために、ユーザーはどのようなステップを踏むことができますか? A:ユーザーは、スマートコントラクト、特に多額のお金を処理するものとのやり取りに慎重になることで、自分自身を守ることができます。彼らは契約のコードと監査のレポートを調査し、評判の良いプラットフォームを使用し、資金を安全なウォレットに保持する必要があります。さらに、スマートコントラクトセキュリティにおける一般的な脆弱性とベストプラクティスについて情報を提供することは、ユーザーがより安全な決定を下すのに役立ちます。
Q:開発者は、スマートコントラクトが再突入攻撃に対して安全であることをどのように保証できますか? A:開発者は、「チェックエフェクトインタラクション」パターンなどのベストプラクティスに従うことにより、スマートコントラクトが安全になることを保証できます。このパターンでは、外部呼び出しが行われる前に契約の内部状態が更新されます。また、徹底的なコード監査を実施し、正式な検証ツールを使用し、ブロックチェーンスペースの最新のセキュリティガイドラインと脆弱性について最新の状態を維持する必要があります。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- 日本、XRP、そしてXRP軍:グローバル金融における静かな革命?
- 2026-09-13 20:35:02
- 未確認の話題: 金網クジラ、1,000 万リンク、そして 17% の修正 - 実際に何が起こっているのでしょうか?
- 2026-09-13 16:55:01
- Cardano 価格の予測、分析、および動き: 市場のボラティリティと将来の可能性をナビゲートする
- 2026-09-13 16:25:01
- Revolut データ侵害: 偽の政府要求がセキュリティのギャップを悪用し、顧客データを暴露
- 2026-09-13 09:00:02
- ブロックストリーム、リキッドネットワーク、ビットコイン:「盗まれた」資金をめぐる対立
- 2026-09-13 08:35:01
- リップル RLUSD の流通額が 24 億ドルに達: ステーブルコインの軌跡を詳しく見る
- 2026-09-13 04:50:01
関連知識
モジュラーブロックチェーンとは何ですか?なぜそれが次の大きなトレンドになるのでしょうか?
2026-06-20 02:19:37
市場のボラティリティパターン1. マクロ経済が不確実な時期には、Bitcoin の価格変動が 1 回の取引セッション内で 5% を超えることがよくあります。 2. 弱気市場局面ではアルトコインと BTC の相関関係が 0.85 を超え、独立した価格行動が減少していることを示しています。 3. 分散型...
アカウントの抽象化とは何ですか? Web3 にとってそれがなぜ重要ですか?
2026-06-17 14:39:56
Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、ブロックごとに流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の...
ゼロ知識証明とは何ですか?プライバシーはどのように保護されますか?
2026-06-17 12:59:37
市場のボラティリティパターン1. Bitcoin の価格変動は、流動性が低い期間に 1 回の取引セッション内で 5% を超えることがよくあります。 2. アルトコインと BTC の相関関係は、過去 18 か月で平均 0.85 以上であり、Bitcoin の方向性の動きに強く依存していることを示してい...
zk-Rollup とは何ですか? なぜみんながそれについて話しているのですか?
2026-06-25 06:39:37
市場のボラティリティパターン1. Bitcoin の価格変動は、ETF 流入レポートやマクロ経済データの発表などの流動性の高いイベント中に 5% を超える急激な日内変動を示すことがよくあります。 2. アルトコインと BTC の相関関係は過去 2 年間で強化され、弱気相場局面では上位 50 トークン...
Chainlink とは何ですか? ブロックチェーン オラクルはどのように機能しますか?
2026-06-19 13:00:17
市場のボラティリティパターン1. Bitcoin やイーサリアムを含む主要な暗号通貨では、24 時間以内に 15% を超える価格変動が定期的に発生します。 2. アジアの取引時間中の流動性ギャップにより、永久スワップ市場では連鎖的な清算が頻繁に引き起こされます。 3. 1,000 BTC または 5...
ブロックチェーンにおけるオラクルとは何ですか?なぜ必要ですか?
2026-06-21 19:39:38
定義とコア機能1. ブロックチェーンのオラクルは、分散型ネットワーク上で動作するスマート コントラクトに外部データを提供する、信頼できるサードパーティ サービスです。 2. ブロックチェーン仮想マシンの実行環境が決定的で分離されているため、スマート コントラクトは、価格フィード、天気予報、API 応...
モジュラーブロックチェーンとは何ですか?なぜそれが次の大きなトレンドになるのでしょうか?
2026-06-20 02:19:37
市場のボラティリティパターン1. マクロ経済が不確実な時期には、Bitcoin の価格変動が 1 回の取引セッション内で 5% を超えることがよくあります。 2. 弱気市場局面ではアルトコインと BTC の相関関係が 0.85 を超え、独立した価格行動が減少していることを示しています。 3. 分散型...
アカウントの抽象化とは何ですか? Web3 にとってそれがなぜ重要ですか?
2026-06-17 14:39:56
Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、ブロックごとに流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の...
ゼロ知識証明とは何ですか?プライバシーはどのように保護されますか?
2026-06-17 12:59:37
市場のボラティリティパターン1. Bitcoin の価格変動は、流動性が低い期間に 1 回の取引セッション内で 5% を超えることがよくあります。 2. アルトコインと BTC の相関関係は、過去 18 か月で平均 0.85 以上であり、Bitcoin の方向性の動きに強く依存していることを示してい...
zk-Rollup とは何ですか? なぜみんながそれについて話しているのですか?
2026-06-25 06:39:37
市場のボラティリティパターン1. Bitcoin の価格変動は、ETF 流入レポートやマクロ経済データの発表などの流動性の高いイベント中に 5% を超える急激な日内変動を示すことがよくあります。 2. アルトコインと BTC の相関関係は過去 2 年間で強化され、弱気相場局面では上位 50 トークン...
Chainlink とは何ですか? ブロックチェーン オラクルはどのように機能しますか?
2026-06-19 13:00:17
市場のボラティリティパターン1. Bitcoin やイーサリアムを含む主要な暗号通貨では、24 時間以内に 15% を超える価格変動が定期的に発生します。 2. アジアの取引時間中の流動性ギャップにより、永久スワップ市場では連鎖的な清算が頻繁に引き起こされます。 3. 1,000 BTC または 5...
ブロックチェーンにおけるオラクルとは何ですか?なぜ必要ですか?
2026-06-21 19:39:38
定義とコア機能1. ブロックチェーンのオラクルは、分散型ネットワーク上で動作するスマート コントラクトに外部データを提供する、信頼できるサードパーティ サービスです。 2. ブロックチェーン仮想マシンの実行環境が決定的で分離されているため、スマート コントラクトは、価格フィード、天気予報、API 応...
すべての記事を見る














