Security
17 min read
1582 views

Reentrancy 2025: The $35.7M Smart Contract Classic 🔄

IT
InstaTunnel Team
Published by our engineering team
Reentrancy 2025: The $35.7M Smart Contract Classic 🔄

はじめに:長年にわたる脆弱性が未だに根絶できない理由

2024年9月、暗号資産の世界はまたもや、歴史が繰り返されることを痛感させる出来事を目撃しました。Pendle Finance上に構築されたイールドファーミングプラットフォームのPenpieプロトコルが、高度なリエントランシー攻撃の犠牲となり、約2700万ドル相当の暗号資産が流出しました。2024年を通じて他の大規模なリエントランシー攻撃と合わせて、この脆弱性による総損失額は約4700万ドルに達し、長年の警告と防御策にもかかわらず、リエントランシーがスマートコントラクトのセキュリティにおいて最も持続的かつコストのかかる脆弱性の一つであり続けていることを示しています。

この記事では、Penpie攻撃の詳細を解説し、なぜ8年経った今もリエントランシー攻撃がブロックチェーンエコシステムを悩ませ続けているのかを探り、開発者やプロトコルがこの永続的な脅威から身を守る方法について洞察を提供します。

リエントランシー攻撃の理解:基本事項

Penpie事件に入る前に、リエントランシー攻撃がなぜこれほど危険で、長年にわたり文書化されているにもかかわらずなぜ続いているのかを理解することが重要です。

リエントランシー攻撃とは?

リエントランシー攻撃は、スマートコントラクトの実行の基本的な性質を悪用します。コントラクトが自身の状態変更を完了する前に外部の別のコントラクトや関数を呼び出すと、悪意のある者にとっての攻撃のチャンスが生まれます。呼び出されたコントラクトは「再度」元のコントラクトに入り込み、操作の一部を再実行できるため、予期しない、しばしば壊滅的な挙動を引き起こします。

例えるなら、銀行の窓口係が引き出しリクエストを処理する際に、口座残高を最終的に更新するまでに複数回引き出しを行える仕組みです。巧妙な顧客は、システムが更新される前に何度も引き出しリクエストを出し、システムが更新されるまでに実際の残高以上の資金を引き出すことが可能です。最終的に係員が口座を調整する頃には、顧客は実際の所有額を超える資金を引き出していることになります。

技術的仕組み

スマートコントラクトにおいて、リエントランシーは、外部コール(例:fallback関数)を通じて外部コントラクトに制御が移ることで発生します。これにより、初期の実行が完了する前に関数を再帰的に呼び出すことが可能となり、攻撃者は契約の状態を操作し、開発者が想定しなかった動作を引き起こすことができます。

この脆弱性は、contractsが「checks-effects-interactions」(検査・効果・相互作用)のパターンに従わない場合に特に顕著です。このパターンは以下のように定めています:

  1. Checks:すべての条件と要件を検証
  2. Effects:すべての状態変数を更新
  3. Interactions:外部コントラクトへの呼び出し

コントラクトが内部状態を更新する前に外部呼び出しを行うと、リエントランシーの脆弱性にさらされます。

リエントランシー攻撃の種類

現代のリエントランシー攻撃は、単一関数の単純なバリアントを超え、多様化しています。2016年から2024年までのEVM互換ブロックチェーン上の73件の実例分析によると、これらの攻撃はより複雑で洗練されており、複数のコントラクトやプロジェクト、さらにはブロックチェーン間の複雑な相互作用を伴うことが多いです。

主なタイプは以下の通りです:

  • シングル関数リエントランシー:攻撃者が同じ脆弱な関数に繰り返し入り込む
  • クロス関数リエントランシー:複数の関数間で共有される状態を悪用
  • クロスコントラクトリエントランシー:複数コントラクト間の相互作用から脆弱性が生じる
  • クロスチェーンリエントランシー:異なるブロックチェーンネットワーク間での攻撃
  • 読み取り専用関数リエントランシー:状態を読むview関数を利用した攻撃

Penpie攻撃:2700万ドルの教訓

プロトコルとその目的

PenpieはPendle Finance上に構築されたイールドファーミングプロトコルで、ユーザーがPendleエコシステムから最大のリターンを得られるよう設計されています。ユーザーはPenpieにPendle Finance Market Tokensを預けることで、PENDLEのインセンティブを増強し、イールドを追求するDeFi投資家にとって魅力的なプラットフォームとなっています。

攻撃のタイムライン

2024年9月3日午後6時23分UTC、巧妙な攻撃者がPenpieのセキュリティ脆弱性を突き、ユーザー資金を奪取し、ArbitrumとEthereumネットワーク上で合計約2700万ドル相当の資産を流出させました。

攻撃の迅速さと正確さは、綿密な計画と偵察の結果です。攻撃は3つのトランザクションにわたって実行され、攻撃者の手法とプロトコルの仕組みへの深い理解を示しています。

脆弱性:二つの致命的な欠陥の組み合わせ

この事件の原因は二つの大きな要素に集約されます:PendleStakingUpg.batchHarvestMarketRewards関数にリエントランシー保護がなく、PenpieがすべてのPendle Marketを登録可能なプールとして扱っていたことです。さらに、Pendle Market、PT、YTトークンの作成は許可不要でした。

この組み合わせにより、完璧な嵐が生まれました。市場作成の許可不要性は誰でも市場を登録できることを意味し、一方で報酬収穫関数にリエントランシー保護がなかったため、悪意のある市場がシステムを悪用できる状態になったのです。

攻撃の展開

攻撃者は高度な多段階の攻撃を実行しました:

  1. 悪意のあるインフラの構築:攻撃者はPendleの標準化イールド(SY)トークンの偽バージョンを作成し、それらをPendle Liquidity Providerトークンにリンクさせました。この悪意のSYコントラクトが攻撃の土台となります。

  2. フラッシュローンの取得:攻撃者はBalancerから大量の資産(agETH、rswETH、egETH、wstETH)を借り入れ、これらを悪意のSYコントラクトに預け入れました。フラッシュローンにより、一時的に大きな資本を所有せずにコントロールできました。

  3. 市場登録:攻撃者はこの悪意のある市場をPenpieに登録し、検証機能の欠如した許可不要の市場登録システムを利用しました。

  4. リエントランシーの悪用:batchHarvestMarketRewards関数が呼び出されると、悪意のSYコントラクトはフラッシュローン資産のトークンを報酬として返しました。この過程で、攻撃者はリエントランシーの脆弱性を突き、何度も関数に再度入り込みました。

  5. 報酬の操作:脆弱性を利用して、攻撃者はリエントランシー呼び出しを通じて報酬残高を膨らませ、報酬配布メカニズムを操作し過剰な報酬を獲得しました。

  6. 資金の引き出し:報酬額を膨らませた後、攻撃者は偽のPendle Marketから引き出し、Marketトークンを元の資産に戻しました。

技術的根本原因

Penpieの脆弱性は、PendleStakingコントラクトにリエントランシーガードがなかったことに由来します。_harvestBatchMarketRewards関数は、redeemRewards()呼び出し前後のトークン残高に基づいて報酬を計算しますが、この関数には再帰呼び出しを防ぐ仕組みがありませんでした。

redeemReward()が呼ばれると、特定の悪意のある市場のclaimRewards()がトリガーされ、これにより攻撃者はPendleStaking.depositMarket()に再度入り込むことができました。このリエントランシーにより、攻撃者は高価なLPトークンを繰り返し預け入れ、シェアを増やし、これらのトークンを報酬として扱うことが可能になったのです。

その後の対応

攻撃を検知した直後、PenpieとPendleのチームは迅速に対応しました。プロトコルは凍結され、Penpieの凍結後すぐに別の悪意のあるコントラクトが展開され、攻撃者は残りの1億500万ドルの資金を狙っていた可能性が示唆されました。迅速な対応により、さらに大きな被害を防ぐことができました。

PenpieチームはTwitter/Xを通じて攻撃者に対し、盗まれた資金の返還と引き換えに報酬を提供するよう要請しました。これは暗号資産界でよく見られる「ホワイトハット」報酬の一環です。しかし、攻撃者は資金の返還を拒否し、Tornado Cashを通じて資金洗浄を始めました。

ブロックチェーンセキュリティ企業PeckShieldによると、攻撃者は9月6日に盗まれた資金を中継アドレスに移し、Tornado Cashを使った洗浄を複数回行いました。9月8日までに全資金が洗浄され、回収はほぼ不可能となっています。

PenpieチームはシンガポールのKampong Java Neighbourhood Police Centreに報告書を提出し、Hypernativeと協力して攻撃者の動きを追跡しています。また、複数のブロックチェーンセキュリティ企業や法執行機関とも連携を進めていますが、Tornado Cashの使用により資金回収は非常に困難です。

セキュリティ監査のパラドックス:なぜ見逃されたのか?

Penpie攻撃の最も憂慮すべき点の一つは、セキュリティ監査を受けていたにもかかわらず、この脆弱性が見逃されたことです。Penpie Financeは、信頼できる企業であるZokyoとWatchPugによる二つの監査を受けていました。ZokyoはNEARやAuroraを含むさまざまなプロトコルやチェーンの監査実績があり、WatchPugはCode4renaのランキングで2位に位置し、80万ドル以上の報酬を獲得しています。

では、なぜこの脆弱性は見逃されたのでしょうか?

範囲の問題

この攻撃に使われたスマートコントラクトは、Zokyoの最初の監査範囲外でした。また、関数registerPoolの監査後にコードに変更が加えられたため、監査の時点と実際のコードに差異が生じています。これはスマートコントラクトのセキュリティにおいて重要な問題であり、監査はあくまで特定の時点の評価であることを示しています。コード変更後の継続的なセキュリティ監視が必要です。

コードの進化

スマートコントラクトは、展開後にアップグレードや修正を行うことが一般的です。これらの変更は、新たな攻撃ベクトルを生む可能性があります。Penpieの攻撃に関与した許可不要の市場登録機能も、最初のセキュリティレビュー後に追加または修正された可能性があります。

従来の監査の限界

Penpie Financeのハックは、従来の監査手法の限界を浮き彫りにしています。複雑な相互作用や外部の許可不要なコンポーネントを含む場合、従来のコードレビューだけでは見落としがちです。特に、多数のコントラクトが連携するシステムでは、より高度なテストや監査が求められます。

2024年におけるリエントランシー攻撃の継続:背景と理由

Penpieだけでなく、2024年には複数のリエントランシー攻撃が発生しています。7月のMinterest攻撃、Terra攻撃、8月のLien攻撃、9月のTrustSwap攻撃、12月のClober攻撃、GemPad攻撃などです。

2024年3月5日、WOO NetworkのWooFi WooPPV2コントラクトがリエントランシー攻撃により約1000万ドルを失いました。3月23日にはCurio DeFiがリエントランシーの脆弱性により約1600万ドルの損失を被っています。

また、12月10日にはBase NetworkのClober DEX流動性ボールトが攻撃され、約501,000ドル相当のETH(133.7 ETH)が失われました。原因はRebalancerコントラクトのburn関数のリエントランシー脆弱性です。

これらの連続した事件は、リエントランシーが解決された問題ではなく、常に警戒を続ける必要がある脅威であることを示しています。

防止と対策:Penpieから学ぶ教訓

Penpie攻撃は、ブロックチェーンのセキュリティに携わる開発者や専門家にとって貴重な教訓を提供します。

リエントランシーガードの実装

最も基本的な防御策はリエントランシーガードの導入です。これにより、重要な関数が同一トランザクション内で複数回呼び出されるのを防ぎ、リエントランシー攻撃を効果的に阻止できます。

Solidityでは、OpenZeppelinのReentrancyGuardのようなミューテックスロックを使用するのが一般的です。

Checks-Effects-Interactionsパターンの徹底

このパターンは、状態の変更(例:ユーザの残高更新)を外部呼び出しの前に行うことを保証します。これにより、Penpieのような攻撃のリスクを低減できます。

具体的には、以下の順序を守ることです: 1. 条件と入力の検証 2. 状態変数の更新 3. 外部コントラクトとの相互作用

状態を更新してから外部呼び出しを行うことで、リエントランシーのリスクを最小化します。

外部入力の厳格な検証

セキュリティの観点から、関数に対して反リエントランシー修飾子を付与したり、トークンのホワイトリストを利用したり、トークンを再生成するための統一パッケージコントラクトを使用したりすることが推奨されます。

Penpieの脆弱性は、すべてのPendle Marketを十分な検証なしに受け入れたことにより悪化しました。プロトコルは、外部コントラクトやトークンに対して厳格な検証を実施すべきです。

包括的なテストの実施

適切なテストには、さまざまなビジネスロジックシナリオをカバーする詳細なテストケースの作成が必要です。従来のユニットテストだけでは不十分であり、複雑な相互作用や攻撃シナリオをシミュレートした統合テストも必要です。

高度なテスト手法の検討

Mutation testingは、ソフトウェアコードに制御された変更を加え、そのテストスイートの有効性を検証する手法です。これにより、アクセス制御や状態更新・外部呼び出しのシーケンスを変更する変異を導入し、Penpieの脆弱性を検出できた可能性があります。

継続的なセキュリティ監視

監査はあくまで一時点の評価です。リアルタイムで疑わしい活動を検知できる継続的なセキュリティ監視体制が必要です。Penpieチームは攻撃後にHypernativeと協力して攻撃者の動きを追跡しましたが、攻撃前からの監視体制が望まれます。

セキュリティ重視の開発フレームワークの利用

最新の開発フレームワークやライブラリには、一般的な脆弱性に対する保護機能が組み込まれています。OpenZeppelinのコントラクトのように、監査済みのライブラリを利用することで、一般的な落とし穴を避けることができます。

インシデント対応計画の策定

完全なセキュリティを実現しても、侵害は起こり得ます。プロトコルは、以下を含むインシデント対応計画を持つべきです: - サーキットブレーカーや一時停止機能 - セキュリティ企業や法執行機関との連携 - 資金回収のための手順 - 影響を受けたユーザーへの明確なコミュニケーション

PenpieとPendleの迅速な対応により、さらに1億500万ドルの盗難を防ぐことができました。これは、事前の準備と迅速な対応の重要性を示しています。

DeFiセキュリティの広範な課題

Penpie攻撃とリエントランシーの継続的な蔓延は、DeFiエコシステムが直面するいくつかの重要な問題を浮き彫りにしています。

組み合わせの課題

DeFiの組み合わせ性(複数のプロトコルがシームレスに連携できる性質)は、強みであると同時に弱点でもあります。イノベーションを促進し、ネットワーク効果を生み出す一方で、一つのプロトコルの脆弱性が他のプロトコルを通じて悪用されるリスクも高まります。これらの相互作用は、許可不要な環境では特にセキュリティレビューを困難にしています。

監査業界の限界

信頼できる監査を受けたにもかかわらず、Penpieの重大な脆弱性は見逃されました。これは監査の一時点評価の限界を示しており、継続的なセキュリティ監視の必要性を浮き彫りにしています。

セキュリティ基準の必要性

ブロックチェーン業界は、より強固なセキュリティ基準とベストプラクティスの策定を求められています。Ethereum Foundationや各種セキュリティ企業がガイドラインを公開していますが、採用は一貫していません。特に大規模資金を扱うプロトコルには、必須のセキュリティ標準が必要です。

ユーザ保護と保険

リエントランシー攻撃により、スマートコントラクトやブロックチェーン技術の安全性への信頼が揺らぎ、長期的には規制や法的措置、投資家の信頼低下、ブロックチェーンプラットフォームやプロジェクトの評判へのダメージにつながる可能性があります。DeFi業界は、ユーザを保護するためのより良い仕組みや保険の普及が求められていますが、現状では十分に普及していません。

リエントランシー攻撃の経済的影響

リエントランシー攻撃の経済的コストは、単なる盗難額を超えています。

直接的な損失

過去のデータによると、実際に確認されたリエントランシー攻撃による総損失は9億840万ドルに上ります。これは約840ETH(約170万ドル)と、906.9百万ドル相当のトークンの合計です。正当なユーザから攻撃者への巨額の資産移転を意味します。

市場の信頼性

高額な攻撃は、DeFiプロトコルやブロックチェーン技術全体への信頼を損ねます。これにより採用が遅れ、投資が減少し、業界の成長が制約される可能性があります。

機会損失

攻撃対応や資金回収、修復策の実施にかかる時間とコストは、イノベーションや成長に充てられるべきリソースの機会損失です。

規制の監視強化

大規模なハッキングは規制当局の関心を引き、監督やコンプライアンスの強化につながり、イノベーションの妨げになる可能性もあります。

今後の展望:スマートコントラクトセキュリティの未来

ブロックチェーンエコシステムが成熟するにつれ、リエントランシーやその他のセキュリティ課題に対処することがますます重要になります。

新たなセキュリティツール

形式的検証やランタイム監視システムなど、新しいセキュリティツールが開発されており、従来の監査の限界を補完しています。

プログラミング言語の進化

Vyperのような新しいスマートコントラクト言語は、安全な設計により一般的な脆弱性を防ぐ努力をしています。ただし、2023年のCurve Finance Vyperコンパイラバグのように、リエントランシー問題から完全に免れるわけではありません。

セキュリティ教育

開発者向けのセキュリティ教育の充実も必要です。より包括的なトレーニングや認証プログラムを通じて、新規開発者が一般的な脆弱性とその防止策を理解できるようにすべきです。

業界の協力

Penpieチームは、Binance Security、Slowmist、Chainalysisなど複数の団体と連携し、Tornado Cashの預金を追跡しています。このような業界横断的な協力は、セキュリティ向上に不可欠です。

結論:退職しないクラシック

Penpie攻撃は、リエントランシーが依然として重要な脆弱性であることを痛感させる事例です。8年前のDAOハック以来、長年にわたり認識されているにもかかわらず、リエントランシー攻撃は今日もなお、ブロックチェーンのスマートコントラクトにとって大きな脅威となり続け、多額の損失をもたらしています。

監査を通じた防御策にもかかわらず、攻撃の高度化と規模の拡大は、業界にとって重要な教訓となります。リエントランシーは解決済みの問題ではなく、継続的な警戒と堅牢なセキュリティ対策、そして防御技術の進化を必要とする課題です。

開発者には、リエントランシーガードの実装、checks-effects-interactionsパターンの徹底、外部入力の厳格な検証、包括的なテストの実施を推奨します。プロトコルには、継続的なセキュリティ監視とインシデント対応計画が不可欠です。

業界全体としては、セキュリティ基準の強化、監査の進化、協力の促進を通じて、この長年の脆弱性に立ち向かう必要があります。リエントランシー攻撃は、歴史に名を残す”クラシック”な脆弱性であり、その持続力と高コスト性は今後も変わらないでしょう。業界全体で根本原因に取り組み、包括的な防御策を実施し続けることが求められます。

重要ポイント

  1. リエントランシー攻撃は依然として大きな脅威:2016年以降広く知られているにもかかわらず、2024年だけで約4700万ドルの損失が発生しています。

  2. Penpie攻撃は高度な手法:2024年9月のPenpieハックは、許可不要の市場作成とリエントランシー保護の欠如を組み合わせた攻撃の例です。

  3. 監査だけでは不十分:監査は一時点の評価に過ぎず、その後のコード変更が新たな脆弱性を生むため、継続的な監視が必要です。

  4. 複雑さがリスクを高める:現代のDeFiは複雑なコントラクト間の相互作用を伴い、セキュリティレビューの難易度を上げています。

  5. 予防には規律が必要:リエントランシーガードの導入、checks-effects-interactionsの徹底、徹底したテストが攻撃を防ぎます。

  6. 業界の進化が求められる:セキュリティ標準の強化、教育の充実、高度なテスト手法、協力体制の構築が必要です。

リエントランシー攻撃との戦いは終わっていません。これは継続的な努力と専門知識、そして警戒心を持ち続けることが求められる、長期戦です。ブロックチェーンの未来を守るために、皆で取り組み続けましょう。

Continue from this article into the most relevant product guides and workflows.

Related Topics

#reentrancy attack, smart contract reentrancy, penpie hack 2024, $27M ethereum theft, $35.7M blockchain loss, defi reentrancy vulnerability, blockchain security risk, smart contract exploit, decentralized finance hack, ethereum contract bug, solidity vulnerability, reentrancy loop exploit, defi protocol breach, crypto hacking trends 2025, smart contract hacking, defi financial losses, blockchain cybersecurity, contract withdrawal exploit, recursive call exploit, defi attack case studies, crypto exploit prevention, smart contract coding flaws, blockchain vulnerability 2025, web3 security threat, defi incident response, smart contract auditing, secure solidity development, blockchain risk management, defi exploit statistics, cryptocurrency cybercrime, defi protocol takeover, flash loan reentrancy, defi contract weakness, crypto platform breach, smart contract defense strategies, ethereum vulnerability exploit, defi exploit remediation, blockchain exploit analysis, hacker reentrancy strategy, defi breach investigation, smart contract governance failure, defi risk prevention, secure smart contract best practices, blockchain ecosystem threat, defi contract patching, crypto theft prevention, reentrancy mitigation, defi exploit awareness, blockchain incident lessons, penpie security breach, web3 exploit defense, on-chain security threat, smart contract exploit examples, defi ecosystem risk, blockchain attack landscape

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles