Back to Blog

#1 Cetus事件:見過ごされた1回のシフトで2億2300万ドルが流出、2025年最大のDeFiハッキング事件

Code AuditingPhalcon Security
2026年2月9日
8 min read
Key Insights
  • 2025年5月22日、Cetus Protocol(SuiのCLMM DEX)が約2億2,300万ドルの不正利用を受け、2025年最大のDeFiハッキング事件となった。

  • 根本原因:checked_shlw()におけるオーバーフロー防止ガードの欠陥により、誤った閾値が使用され、固定小数点演算におけるu256の安全でない左シフト操作が検出をすり抜けた。

2025年5月22日、Sui上で最大の集中流動性DEXであるCetus Protocolが壊滅的なエクスプロイトに見舞われ、複数のプールで流動性が枯渇し、推定2億2300万ドルの損失が発生しました。この事件は2025年最大のDeFiハックとなり、特に固定小数点演算に関連するスマートコントラクトセキュリティの重大な脆弱性を浮き彫りにしました。

エクスプロイトは、カスタムオーバーフロー防止関数 checked_shlw() の欠陥から発生しました。不適切な定数と比較により、この関数は、固定小数点u256演算で使用される左シフトを実行する前に、安全でない条件を検出できませんでした。この見落としにより、トークン投入量などの重要なデルタ計算中に最上位ビットがサイレントに切り捨てられることを可能にし、ユーザーが提供する必要のあるトークン量などを決定する際の計算が不正になりました。攻撃者は、流動性サイズやティック/価格範囲設定などのパラメータを慎重に操作することで、プロトコルを、実質的に1単位のトークンの預け入れを計算させながら、同時にそのポジションに膨大な量の流動性を付与するように欺くことができました。このインフレしたポジションがオンチェーンに記録された後、攻撃者は流動性を削除し、実際の準備金を回収し、プールから資金を枯渇させました。

集中流動性と固定小数点演算の理解

Cetus Protocolは、流動性プロバイダー(LP)が選択した価格範囲(ティック間隔)内でのみ資産を供給する洗練されたアプローチである集中流動性マーケットメーカー(CLMM)設計を利用しています。伝統的なAMMが流動性を均一に分散するのとは異なり、CLMMはLPが特定の上下限の間に資本を集中させることを可能にします。この設計は資本効率を大幅に向上させますが、以下を変換するための正確な固定小数点演算に大きく依存します。

  • ポジションに付与される流動性量。
  • 預け入れられる、または引き出される実際のトークン量。

ユーザーが流動性を追加すると、プロトコルは現在の価格と選択された範囲に基づいて、トークンデルタ(必要な基盤トークン量)を計算します。逆に、流動性が削除されると、逆の計算により、ポジションが引き出す権利のある資産の量が決定されます。

Cetusインシデントの根本的な脆弱性は、この複雑な関係を悪用しました。もし「預け入れなければならない量」の計算が小さすぎると操作でき、同時にポジションが大きな流動性で付与されたままであれば、攻撃者は後でその付与された流動性を削除して、プールの実際の準備金を回収することができました。これは、複雑な数学的演算を伴うDeFiプロトコルにおける一般的な攻撃ベクトルを浮き彫りにしています。

重要なu256シフト脆弱性

この大規模なDeFiハックの根本原因は、固定小数点u256演算(通常は2^64のスケーリング係数を適用するための<< 64)で一般的な操作である左シフトを安全に実行するように設計されたヘルパー関数内のバグでした。SuiのようなMoveベースのシステムでは、すべての操作でオーバーフローチェックが一様に強制されるわけではないため、ビットシフトの手動による保護が不可欠です。

Cetusは、u256値を64ビット左シフトしたときに256ビット境界を超えるかどうかを確認するために、オーバーフロー防止ヘルパー checked_shlw() を実装しました。しかし、不適切な定数と比較により、この重要なチェックは、拒否されるべき特定の大きな入力に対してバイパスされる可能性がありました。

具体的には、2つの価格(sqrt_price_0とsqrt_price_1)間の流動性提供に必要な基盤トークン(トークンA)の量を計算する get_delta_a 関数は、checked_shlw() を呼び出します。ここでの checked_shlw() の目的は、トークンA計算の分子がシフト時にオーバーフローしないことを保証することです。

欠陥は checked_shlw() のオーバーフローチェックにあり、これはマスクとして 0xffffffffffffffff << 192 (2^256 - 2^192に相当)を使用していました。このマスクは、正しいしきい値よりも大幅に大きいです。その結果、2^192より大きく、この誤ったマスクよりも小さい入力値は、左シフトすると確かにu256範囲を超えるにもかかわらず、チェックを通過することができました。その後の左シフトは、サイレントな切り捨てをもたらし、不正確で大幅に小さい値を生成しました。

以下の図は、脆弱な実装とパッチが適用されたバージョンとの違いを示しています。正しい境界は、はるかに大きい 0xffffffffffffffff << 192 ではなく、1 << 192 であるべきでした。攻撃者は、この欠陥のあるチェックを巧みに悪用し、最小限の量(例えば、トークンAの1 wei)を預け入れながら、異常に多くのLPトークンをミントしました。

Cetusの脆弱でパッチが適用されたu256シフト実装の比較
Cetusの脆弱でパッチが適用されたu256シフト実装の比較

Cetus DeFiハックの解剖

攻撃者は複数のプールで同じ技術を適用しましたが、根本的な攻撃フローは一貫していました。この高度なブロックチェーンセキュリティ侵害に関わる手順を理解するために、特定のトランザクションを分析しましょう。

1. フラッシュローンでプール価格を操作する

攻撃は、攻撃者がフラッシュローンを利用して10,024,321.28 haSUIを急速に獲得することから始まりました。次に、5,765,124.79 SUIをスワップアウトし、意図的にプール価格を18,956,530,795,606,879,104から18,425,720,184,762,886に低下させました。この戦略的な価格変動は、攻撃者が集中流動性設計に内在する「単一サイド/ほぼ単一トークン」の流動性挙動を活用して、1つのトークンの最小量のみを必要とするCLMMポジションを開くことを可能にしたため、極めて重要でした。

Cetusプール価格操作に使用されたフラッシュローン
Cetusプール価格操作に使用されたフラッシュローン

2. 「ほぼ無料」の預け入れで流動性を追加する

次に、攻撃者は非常に狭いティック範囲(例:300000–300200)を選択し、ターゲット流動性を正確に調整しました。CLMMシステムでは、トークンデルタ計算は範囲境界の平方根価格に大きく依存し、狭い範囲では特定の中間値がわずかな変化に極めて敏感になる可能性があります。

これらのパラメータを慎重に調整することにより、攻撃者は内部乗算でu256中間値を生成させました。この値は左シフト時にオーバーフローするはずでしたが、欠陥のある checked_shlw() ガードを正常に通過しました。安全でないシフトによって引き起こされた切り捨ての直接的な結果として、プロトコルは必要なトークンA量を実質的に1単位として計算しましたが、同時にポジションに膨大な量の流動性(つまり、10,365,647,984,364,446,732,462,244,378,333,008)をミントして記録しました。

Cetus攻撃者が最小限の預け入れで流動性を追加
Cetus攻撃者が最小限の預け入れで流動性を追加

3. 流動性を削除して実際の準備金を抽出する

オンチェーンのポジションが偽のインフレ流動性を持っているように見えたため、攻撃者は流動性を削除し、ポジションが適切に資金調達されていたかのように資産を引き出しました。この重要なステップで、プールの実際の準備金が体系的に枯渇し、2億2300万ドルという巨額の損失につながりました。

4. 複数のプールで繰り返す

攻撃プリミティブを正常に検証した後、攻撃者は同じワークフローを複数のプールに複製し、総損失を急速に拡大させ、これまでで最大のDeFiハックの1つを実行しました。

Web3に最適なセキュリティ監査人

ローンチ前に設計、コード、ビジネスロジックを検証する

主要な教訓とブロックチェーンセキュリティの教訓

Cetusインシデントは、特に複雑なDeFiプロトコルにおけるブロックチェーンセキュリティの複雑な課題を痛感させる出来事でした。根本原因は、固定小数点演算パスのu256左シフト周りの誤ったオーバーフローチェックでした。これにより、オーバーフローしたシフトが上位ビットをサイレントに切り捨て、預け入れ額がほぼゼロに見える一方で、LPポジションには巨額の流動性が付与され、最終的に準備金の抽出が可能になりました。

スマートコントラクトセキュリティのための教訓:

  • 算術処理における厳格さ: シフト、スケーリング係数、丸め、境界条件を固定小数点演算で扱う際には、例外的に厳格であること。これらは重大な脆弱性の一般的な原因です。
  • 実績のあるプリミティブ: 実績のある安全な算術プリミティブまたは形式化された不変条件の使用を、アドホックなヘルパー関数の開発よりも優先すること。カスタムヘルパーが必要な場合は、その定数としきい値を極めて慎重に検証すること。
  • 包括的なテスト: エッジケースとプロパティベースのテストを広範囲に実装し、最大値、境界ティック、敵対的なパラメータの組み合わせを網羅すること。このプロアクティブなアプローチは、デプロイ前に微妙な欠陥を発見できます。
  • 継続的な監視: 堅牢な監査があっても、リアルタイム監視ソリューションは不可欠です。BlockSecのPhalcon Securityのようなツールは、疑わしいオンチェーンアクティビティや進行中の潜在的なエクスプロイトを検出でき、重要な最後の防御線を提供します。

Cetusインシデントは、ブロックチェーンセキュリティに対する多層的なアプローチの重要性を強調しており、綿密なコードレビュー、高度なテスト手法、継続的なオンチェーン監視を組み合わせることで、洗練されたDeFiハックから保護できます。

Phalcon Securityを使い始める

すべての脅威を検出し、重要なアラートを出し、攻撃をブロックする。

無料で試す

参照

  1. Cetus Protocolの公式発表
  2. BlockSecの短い分析
  3. Suiscanでのトランザクション

BlockSecについて

BlockSecは、フルスタックのブロックチェーンセキュリティおよび暗号コンプライアンスプロバイダーです。私たちは、顧客がコード監査(スマートコントラクト、ブロックチェーン、ウォレットを含む)、リアルタイムでの攻撃傍受、インシデント分析、不正資金追跡、AML/CFT義務の履行を、プロトコルとプラットフォームのライフサイクル全体にわたって実行するのに役立つ製品とサービスを構築しています。

BlockSecは、権威あるカンファレンスで複数のブロックチェーンセキュリティ論文を発表し、DeFiアプリケーションの複数のゼロデイ攻撃を報告し、複数のハッキングを阻止して2000万ドル以上を救済し、数十億ドルの暗号通貨を保護しています。

Sign up for the latest updates
損失約557万 USD:X100 FreezerとNEMへの攻撃 | BlockSec Weekly
Security Insights

損失約557万 USD:X100 FreezerとNEMへの攻撃 | BlockSec Weekly

本週次レポートでは、2026年10月19日–2026年10月25日にEthereumとBNB Chainで発生した2件のセキュリティインシデントを取り上げます。フラッシュローンを資金源としたX100 Freezerのガバナンス乗っ取りと、BNB Chain上のNEMトークンの流動性プールに影響を及ぼした税の精算処理の欠陥を検証します。本レポートの対象範囲における推定損失額は合計で約557万 USDです。内訳は、代表例として取り上げるX100のトランザクションによる損失が約475万 USD、NEMプールのインシデントによる損失が約82.0万 USDです。この合計には、別途報告された、その後のX100からの資金奪取は含まれません。

約387万 USDの損失:Autheo NetworkとUNCXへのハッキング | BlockSecウィークリー
Security Insights

約387万 USDの損失:Autheo NetworkとUNCXへのハッキング | BlockSecウィークリー

この週次レポートでは、2026年10月12日–2026年10月18日に発生した3件のセキュリティインシデントを取り上げます。推定損失額の合計は約387万 USDです。Autheo Networkでは秘密鍵の侵害により約176万 USD、Qubic Walletでは脆弱なシード生成により約130万 USDの損失が発生しました。また、Ethereum、BNB Chain、Base、Robinhood Chain上のUNCX NetworkのSmart Token Vesting V2コントラクトでは、会計処理上の誤りにより約80.7万 USDの損失が発生しました。重点的に取り上げるUNCXの分析では、シェア総数の計算に欠陥があり、異なるトークン対シェア比率で作成されたベスティングのトランシェが混同された結果、共通プールからの過剰な引き出しが可能になった仕組みを説明します。

約54万2,000ドルの損失:MakerDaoBotへの攻撃 | BlockSec週間ニュース
Security Insights

約54万2,000ドルの損失:MakerDaoBotへの攻撃 | BlockSec週間ニュース

本レポートは2026/10/05~10/11にEthereumで発生したセキュリティ事故1件を扱う。推定損失は約54.2万ドル。攻撃コントラクトは悪意あるアダプターを展開し、アクセス制御のないMakerDaoBot関数に渡して、ボット内部のMakerDAO残高への操作権限を付与させた。アダプターは旧ETH-Aオークション4件を決済し、ETH-A担保200単位をWETHに変換。攻撃コントラクトがWETHをETHに戻し、攻撃者へ200 ETHを送金した。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit

Get Real-Time Protection with Phalcon Security

Audits alone are not enough. Phalcon Security detects attacks in real time and blocks threats mid-flight.

phalcon security