Pickle Finance が攻撃され、DAI で約 2,000 万ドルを失った 厳格な監査のない DeFi はどこにあるのでしょうか?
PeckShield
2020-11-23 02:58
本文约2753字,阅读全文需要约11分钟
11月、ハッカーはDeFiプロトコルPickle Finance(酸っぱいキュウリ)を攻撃し、DAIで2000万ドル近くを稼いだ。

今週、「科学者」(技術力と知識の閾値を利用してDeFiのウールを専門に扱うハッカー)は非常に忙しい。

文章

今日の午前2時37分、人々がまだ眠っている間にハッカーがDeFiプロトコルのPickle Finance(酸っぱいキュウリ)を攻撃し、DAIで2000万ドル近くを稼いだ。

副題

暗号通貨が再びCCTVに乗り込む DeFiは「科学者」の現金自動預け払い機になった?
11 月 18 日、ビットコインが 18,000 ドルに達し、暗号通貨が再び CCTV に登場しました 以前、分散型金融ツールとして知られる暗号通貨が初めて CCTV に登場しました。

CCTVによると、投資収益率の観点から見ると、今年の真の「ナンバーワン」投資商品は仮想通貨だという。ブルームバーグ・ギャラクシー暗号指数は約65%上昇し、世界の株式、債券、商品市場における金価格と利回りの20%以上の上昇を上回った。大幅な上昇の主な理由は、イーサリアムの価格が169.40%上昇したことです。

CCTVは「イーサリアムの価格上昇は、分散型金融ツール(DeFi)の利用増加と感染症流行後に各国が導入した大規模な景気刺激策によるもので、投資家はビットコイン、イーサリアム、その他の仮想通貨を選択している」と説明した。投資、価値の維持。」

仮想通貨市場は良いニュースを頻繁に発信する一方で、DeFiプロジェクトは厳格な監査を受けていないために頻繁に攻撃されています。

どうしたの?

どうしたの?

PeckShield は追跡と分析を通じて、攻撃者が StrategyCmpdDaiV2.getSuppliedUnleveragged() 関数を通じて 1,972 万米ドルの資産残高を照会したことを発見しました。

次に、攻撃者は入力検証の脆弱性を悪用して、StrategyCmpdDaiV2 内のすべての DAI を Pickle Jar に抽出します。この脆弱性は、あらかじめ決められた 2 つの偽の Jar を含む ControllerV4.swapExactJarForJar() 関数にあります。特定の Jar が検証されない場合、このステップでは、次の展開ラウンドのために、デポジットされたすべての DAI が Pickle Jar に抽出されます。

次に、攻撃者は、earn() 関数を呼び出して、抽出した DAI を StrategyCmpdDaiV2 にデプロイします。内部バッファ管理において、ハッカーは Earn() 関数を 3 回呼び出し、StrategyCmpdDaiV2 に合計 950,818,864.8211968 cDAI を生成しました。

初めて Earn() 関数を呼び出して 1,976 万 DAI をデポジットし、903,390,845.43581639 cDAI をミントします。

2 度目に Earn() 関数を呼び出して 988,000 DAI をデポジットし、45,169,542.27179081 cDAI をミントします。

文章

3 度目に Earn() 関数を呼び出して 49,000 DAI をデポジットし、2,258,477.11358954 cDAI をミントします。

次に、攻撃者は、ControllerV4.swapExactJarForJar() 関数を呼び出し、任意のコード実行を使用して StrategyCmpdDaiV2 内のすべての cDAI を抽出します。このステップでは、_execute() 関数には 2 つのパラメーターがあります: _target と _data. _target はターゲット アドレスを指します。は図のオレンジ色で示した部分、_targetはホワイトアドレス、攻撃者はこのアドレスを任意に制御できない、ここではCurveProxyLogicというホワイトコントラクトを使用する(262行のapprovedJarConverter[_targets[i]を渡すことができる)完全に制御されるのは、図の紫色で示された部分であるパラメータ _data です。_data には、 _execute() 関数が呼び出すことができる add_liquidity() 関数と、 add_liquidity() に渡されるすべてのパラメータが含まれています。

この時点で、オレンジ色のボックス内にあるcurve、curveFunctionSig、curvePoolSize、curveUnderlyingIndexに戻ります。curveはアドレスです。これは、オレンジ色のボックスの最後から2行にあるcurve.call()関数が任意のコントラクトを実行できることを意味します。したがって、攻撃者はカーブを StrategyCmpdDaiV2 に設定し、curveFunctionSig は、指定したコントラクトに加えて、コントラクトを呼び出す関数も指定できることを示し、攻撃者はこの操作を通じて StrategyCmpdDaiV2.withdraw() 関数の呼び出しに成功します。

最後に、ControllerV4.swapExactJarForJar() 関数に戻って実行すると、抽出された cDAI が悪意のある _toJar にデポジットされ、_toJar.deposit() 関数では、すべての 950,818,864.8211968 cDAI が直ちにハッカーのアドレスに転送されます。

副題

DeFiは厳格な監査なしでどこまでできるのでしょうか?

Pickle Finance (ピクルスキュウリ) への攻撃に対応して、同社の監査会社ヘチは、今年 10 月にコードの監査を実施したが、攻撃者によって悪用された脆弱性はスマート コントラクト内ではなく、新しく作成されたスマート コントラクト内で発生したとツイートしました。セキュリティ監査の対象となります。この脆弱性攻撃に関連するコードは、以前に監査されたcontroller-v3.solではなくcontroller-v4.solのswapExactJarForJarに存在し、スマートコントラクトにはswapExactJarForJarが含まれていません。

これに関して、PeckShieldの担当者は、「一部のDeFiプロジェクトは、最初のスマートコントラクトのセキュリティ監査を行った後、メインネットを迅速に開始するために、新しく追加されたスマートコントラクトの監査を省略する可能性がある」と述べた。 「この攻撃は、最終的には小さな損失で終わります。DeFiは、起こり得るさまざまなリスクを防ぐために、オンライン化する前にコードが徹底的に監査および調査されていることを確認する必要があります。」

PeckShield
作者文库