Back to Blog

Vee Financeセキュリティインシデントの真の原因

Code Auditing
September 22, 2021

VEE Financeは、最近のセキュリティインシデントに関するレポートを公開しました。レポートでは、主な原因として「Vee Financeオラクルマシンの価格操作とオラクルマシン価格の取得が小数点で処理されなかったため、スワップ前の期待されるスリッページチェックが機能しなかった」と述べています。

「事故の主な原因は、レバレッジ取引の注文作成プロセスにおいて、オラクルが価格フィードのソースとしてPangolinプールの価格のみを使用し、プールの価格が3%以上変動したことです。オラクルは価格を更新し、攻撃者はPangolinプールの価格を操作しました。Vee Financeオラクルマシンの価格操作とオラクルマシン価格の取得が小数点で処理されなかったため、スワップ前の期待されるスリッページチェックが機能しませんでした。」 — VEE Financeが公開したレポートより抜粋。

しかし、我々の慎重な調査の結果、これはそうではない可能性があることがわかりました。本当の理由は、攻撃者が偽のctokenBを作成し、コントラクトに渡したことです。ctokenBは攻撃者が制御できるため、トークン価格の計算に使用される基盤トークンを任意に返すことができます。これが攻撃の真の根本原因です。

全体プロセス

createOrderERC20ToERC20という外部関数があり、ユーザーは誰でも、コントラクトに担保を預けることで取得したctokenを使用してトークンスワップを作成するために呼び出すことができます。ctokenには、実際のトークンを表す基盤トークンがあります。

通常のケースでは、レバレッジを使用してトークンペアを取引するためにcreateOrderERC20ToERC20を呼び出す際、dappは取引で損失が発生しないことを保証する必要があります(そうでなければ、dappは損失を被ります)。これはgetAmountOutMin関数を呼び出すことで強制されます。

例えば、dappに0.95 ETHを預け入れ、0.5 ETHの価値を持つctoken(過剰担保)を取得したとします。その後、3倍のレバレッジを使用して、ユーザーに代わってdappに1.5 ETHを別のトークン(例えばtokenX)と取引するように依頼できます。この場合、損失を防ぐために、dappは取引されたtokenXの価値が0.95 * 1.5 ETHを下回らないことを保証する必要があります(そうでなければ、dappは損失を被るリスクがあります)。dappは外部価格オラクルを利用してETHとtokenXの価値を計算します。

しかし、createOrderERC20ToERC20関数は、渡されたctokenBを検証しません。したがって、攻撃者は自身のコントラクトをctokenBとして実装し、createOrderERC20ToERC20関数に渡すことができました。その結果、この偽のctokenBは、createOrderERC20ToERC20getAmountOutMinで呼び出されたときに基盤トークンとしてLINK(0x5947bb275c521040051d82396192181b413227a3)を返しますが、IPriceOracle(oracle).getUnderlyingPrice(createParams.ctokenB)で呼び出されたときには基盤トークンとしてBTCを返します。これにより、isRightPriceチェックを回避できます。なぜなら、価格計算に使用されるトークンは(LINKではなく)BTCだからです。これは、priceBの戻り値、0x15e1549d1216fe9fc032e7c00000443783124870000000000000000000000)で確認できます。これはBTCの価格です。

結論

要約すると、攻撃者はctokenBのチェック漏れを悪用しました。ctokenBは信頼できるものではないため、ctokenBが返す基盤トークンも信頼できません。しかし、この攻撃で価格オラクルは侵害されていません。

まとめ

DeFiプロジェクトを安全にすることは容易ではありません。コード監査に加えて、コミュニティはプロジェクトのステータスを積極的に監視し、攻撃が発生する前にブロックするべきだと考えています。

BlockSecについて

BlockSecは、2021年に世界的に著名なセキュリティ専門家グループによって設立された、先駆的なブロックチェーンセキュリティ企業です。同社は、Web3の世界のセキュリティと使いやすさを向上させ、その大規模な採用を促進することに尽力しています。この目的のため、BlockSecはスマートコントラクトおよびEVMチェーンのセキュリティ監査サービス、セキュリティ開発と脅威のプロアクティブなブロックのためのPhalconプラットフォーム、資金追跡と調査のためのMetaSleuthプラットフォーム、そしてWeb3ビルダーが仮想通貨の世界を効率的にサーフィンするためのMetaSuites拡張機能を提供しています。

現在までに、同社はMetaMask、Uniswap Foundation、Compound、Forta、PancakeSwapなど300社以上の著名なクライアントにサービスを提供し、Matrix Partners、Vitalbridge Capital、Fenbushi Capitalなどの著名な投資家から2回の資金調達で数千万米ドルを受け取っています。

公式サイト:https://blocksec.com/

公式Twitterアカウント:https://twitter.com/BlockSecTeam

Sign up for the latest updates
〜80万ドルの損失:HinkalのDouble-Spend攻撃 | BlockSec週次レポート
Security Insights

〜80万ドルの損失:HinkalのDouble-Spend攻撃 | BlockSec週次レポート

2026年6月29日〜7月5日の週次セキュリティレポートでは、Ethereumで約80万ドルの損失をもたらした1件の重大インシデントを取り上げます。Hinkalのシールドプールプロトコルが二重支払い攻撃により流出。旧ノート形式の欠陥を悪用し、単一デポジットから複数のnullifierを導出したと見られます。回路レベルの脆弱性、攻撃フロー、nullifierベースのプライバシープロトコルへの影響を分析します。

ニュースレター - 2026年6月
Security Insights

ニュースレター - 2026年6月

本月報は2026年6月の主要セキュリティインシデント3件を対象とし、確認済み損失総額は約2,200万ドルです。高度なハニーポット攻撃がトークン許可の未検証を悪用し、JaredFromSubwayのMEVボットから約1,500万ドルを流出。旧型Aztecロールアップ2件はプルーフ決済の境界ギャップにより約435万ドルを損失。SecondFiのEd25519実装欠陥により374ウォレットの秘密鍵が露出し約240万ドルが流出。3件に共通するのは、表面上は保たれているように見えたセキュリティ保証が実際には機能していなかった点です。

約400万ドルの損失:TaikoとSecondFiのエクスプロイト|BlockSec週次レポート
Security Insights

約400万ドルの損失:TaikoとSecondFiのエクスプロイト|BlockSec週次レポート

2026年6月22〜28日のブロックチェーンセキュリティ報告:EthereumとCardanoで約410万ドルの損失を確認。Taikoブリッジ攻撃はSGX署名鍵の露出と不完全なアテステーションポリシーを悪用し、悪意のあるプルーバー登録とL2状態証明の偽造を可能にした。SecondFiはEd25519ナンス導出の欠陥により、公開Cardanoトランザクションから秘密鍵の復元が可能となった。

Best Security Auditor for Web3

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

BlockSec Audit