CertiK: Pickle Finance が約 2,000 万ドルを損失 攻撃分析
CertiK
2020-11-23 08:15
本文约3168字,阅读全文需要约13分钟
Pickle Finance がハッキングされ、通貨価格が半減しました。どうしたの?この記事では、この攻撃イベントの詳細な分析について説明します。

北京時間 11 月 22 日午前 2 時 37 分、CertiK セキュリティ調査チームはスカイネットを通じて、Pickle Finance プロジェクトが攻撃され、1 億 3,000 万人民元近く相当の合計 1,975 万 DAI が失われたことを発見しました。

Pickle Finance は 9 月 10 日にマイニングを開始して以来、存在感がありませんでした。

食料軍団の急激な栄枯盛衰の経験から、投資家自身もピクルスプロジェクトの突然の出現に対してある程度の警戒を維持している。

しかし、9月14日にV Godの個人プラットフォームを取得して以来、Pickle Gherkinは、新しいDeFiゲームプレイと激動のDeFiの波の中でのさまざまな支持により、平地からの開始価格の10倍の上昇を達成しました。

「10,000ドルのピクルスを5ドルで売ったところ、寝てみたら60ドルの価値がありました???これは???」

投資家がこの新しいタイプの食品トークンの購入に向けて準備を進めていたか、すでに深く関与していた矢先、11月23日に発表されたニュースは投資家に衝撃を与えた。

Messariのデータによると、Pickle Financeがハッキングされて以来、そのネイティブトークンPICKLEは50.12%急落して10.17ドルとなった後、わずかに回復し、現在の市場価値は11.41ドルとなっている。

副題

攻撃プロセス全体は次のとおりです。

攻撃プロセス全体は次のとおりです。

ステップ 1: 攻撃者は、StrategyCmpdDAIV2.getSuppliedUnleveragged() の関数を使用して、アドレス 0xcd892a97951d46615484359355e3ed88131f829d の StrategyCmpdDAIV2 コントラクトで引き出すことができる Dai の金額を取得します。これは Amount_A として記録されます。

ステップ 2: 攻撃者は、アドレス 0x6847259b2b3a4c17e7c43c54409810af48ba5210 にある ControllerV4 スマート コントラクトの swapExactJarForJar() 関数を呼び出し、呼び出し時にパラメータとして No. 1 と No. 2 のダーティ jar、Amount_A、および 0、[]、[] を渡します。

swapExactJarForJar() 関数

このうち、1番ダーティjarと2番ダーティjarは攻撃者自身がデプロイし、IJarインターフェースのスマートコントラクトに準拠しているため、token()関数やその他の関数の論理実装は攻撃者が決定します。彼自身。このステップが確立されるのは、Pickle Finance swapExactJarForJar() 関数が、受信した jar が正式なスマート コントラクト アドレスであるかどうかを検証しないためです。

swapExactJarForJar() 関数で渡される jar は、トークンのタイプを定義できます。

drawForSwap()関数を呼び出す

swapExactJarForJar() 関数の実行により、上記 289 行目の swapExactJarForJar() 関数内のdrawForSwap() 関数が実行されると、一連の関数呼び出しの後、0xcd892a97951d46615484359355e3ed88131f829 で deleverageToMin() 関数と deleverageUntil() が実行されます。 dは最終的に実行されますfunction では、現在の StrategyCmpdDAIV2 で引き出し可能なトークン (Amount_A) を、アドレス 0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87 の PickleJar スマート コントラクトに転送します。

deleverageToMin() 関数と deleverageUntil() 関数

StrategyCmpdDAIV2 スマート コントラクトから PickleJar スマート コントラクトにトークンを転送する内部トランザクションのスクリーンショット
PickleJar スマート コントラクトの Earn() 関数

ステップ 3: PickleJar スマート コントラクトのアドレス 0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87 で Earn() 関数を呼び出します (上の図を参照)。

現在の PickleJar 内の pDAI の数をアドレス 0x6b175474e89094c44da98b954eedeac495271d0f からアドレス 0x6847259b2b3a4c17e7e7c43c54409810af48ba5210 の ControllerV4 スマート コントラクトに転送するために、合計 3 回の呼び出しが行われます。 ControllerV4 コントラクトの () 関数 (以下の図を参照)示されているように)、以下の図の 152 行目で Deposit() 関数を渡します。

このようにして、0xcd892a97951d46615484359355e3ed88131f829dのStrategyCmpdDAIV2コントラクト内のdeposit()関数が呼び出され、PickleJar内のpDAIの数を含むcDAIがStrategyCmpdDAIV2に生成されます。

ControllerV4 スマート コントラクトの Earn() 関数
StrategyCmpdDAIV2コントラクトのdeposit()関数

ステップ 4: アドレス 0x6847259b2b3a4c17e7c43c54409810af48ba5210 で、ControllerV4 スマート コントラクトの swapExactJarForJar() 関数を再度呼び出し、No. 3 と No. 4 のダーティ JAR、CurveProxyLogic スマート コントラクトのアドレス 0、0、および 0x20 をパラメータとして渡します。 。

ここで、0x20 は注入パラメータです。その目的は、CurveProxyLogic スマート コントラクト アドレスと連携して、アドレス 0x6186e99d9cfb05e1fdf1b442178806e81da21dd8 にある CurveProxyLogic スマート コントラクトの add_liquiditya() 関数を実行することです。

汚れた瓶 No. 3:

0xa2da08093a083c78c21aeca77d6fc89f3d545aed

汚れた瓶 No. 4:

0xa445e12d69e8bd60290f6935d49ff39ba31c6115

CurveProxyLogic スマート コントラクト アドレス: 0x6186e99d9cfb05e1fdf1b442178806e81da21dd8

swapExactJarForJar() 関数は、CurveProxyLogic スマート コントラクト アドレスと注入パラメーターを使用して、指定された関数を実行します。
CurveProxyLogic スマート コントラクトの add_liquiditya() 関数

このステップの後、3 番目のステップで、StrategyCmpDAIV2 のストレージが StrategyCmpDAIV2 スマート コントラクトから ControllerV4 スマート コントラクトに転送されます。

これまでのところ、引き出すことができるすべてのトークンは cDAI の形式で ControllerV4 スマート コントラクトに保存されており、攻撃者は cDAI を引き出す資格を持っています。

5 番目のステップでは、攻撃者はアドレス 0x5d3a536e4d6dbd6114cc1ead35777bab948e3643 にある CErc20Delegator スマート コントラクトの redeemUnderlying() 関数を呼び出し、アドレス 0xbb8be4772faa655c255309afc3c5207aa7b896 にある CErc20 を内部的に呼び出します。 fd redeemUnderlying()、redeemUnderlyingInternal()、および redeemFresh() 関数。

最後に、取得したすべての cDAI を DAI に変換し、すべての DAI を引き出して攻撃を完了します。

CErc20Delegator の redeemUnderlying() 関数

CErc20 の redeemUnderlying() 関数

安全上のアドバイス

安全上のアドバイス

複数の DeFi 攻撃により、「監査済み」だからといってセキュリティが保証されているわけではないという事実が明らかになりました。

Pickle Finance が 10 月以前にセキュリティ監査に合格したという事実は、すべての新しいスマート コントラクトがリアルタイムのセキュリティ テストを受けたことを意味するものではありません。

高いリターンには高いリスクが伴い、この脆弱性の発生は警告でもあります。

完全なセキュリティ保証 = セキュリティ監査 + リアルタイム検出 + 資産保護 = CertiK 監査サービス +CertiK はセキュリティ オラクルをリアルタイムで検出します+CertiK クイック スキャン+CertiKShield 分散型資産保護基金プール

CertiK の一連のセキュリティ サービスとツールは、プロジェクトとユーザーの資産セキュリティのニーズをカバーします。

監査が必要な場合は、CertiK 公式アカウントの下部にあるダイアログ ボックスをクリックしてメッセージを残して、無料の相談と見積もりを入手してください。

CertiK
作者文库