SharkTeam: Sonne Finance 攻撃事件の分析

avatar
SharkTeam
4ヶ月前
本文は約1931字で,全文を読むには約3分かかります
Sonne Finance に対する攻撃の技術的解釈。

2024 年 5 月 15 日、Sonne Finance が攻撃され、プロジェクトは 2,000 万米ドル以上を失いました。

SharkTeam: Sonne Finance 攻撃事件の分析

SharkTeam はこのインシデントの技術分析を直ちに実施し、セキュリティ防止策をまとめました。今後のプロジェクトがこれから学び、ブロックチェーン業界のセキュリティ防御ラインを共同で構築できることを願っています。

1. 攻撃トランザクション分析

攻撃者: 0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43

攻撃契約: 0x02fa2625825917e9b1f8346a465de1bbc150c5b9

ターゲットコントラクト: 0xe3b81318b1b6776f0877c3770afddff97b9f5fe5

攻撃トランザクション: 0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0

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

1. 35、569、150 VELO をフラッシュ ローンし、これらの VELO トークンを soVELO 契約に転送します

SharkTeam: Sonne Finance 攻撃事件の分析

直接譲渡(寄付)であるため、soVELOトークンは鋳造されません。したがって、soVELO 契約では、totalCash は 35, 569, 150 VELO 増加し、soVELO の totalSupply は変化しませんでした。

2. 攻撃者は新しいコントラクト 0xa16388a6210545b27f669d5189648c1722300b8b を作成し、新しいコントラクト内のターゲット コントラクトに対して攻撃を開始します。攻撃プロセスは次のとおりです。

SharkTeam: Sonne Finance 攻撃事件の分析

(1) 2 soVELO を新規契約に移管

(2) soWETH と soVELO を担保として宣言

(3) soWETH から借入 265, 842, 857, 910, 985, 546, 929 WETH

SharkTeam: Sonne Finance 攻撃事件の分析

getAccountSnapshot 関数の戻り値に基づいて、上記の借用関数の実行プロセスから次のことがわかりました。

soWETH 契約の場合、新規契約残高は 0、融資額は 0、為替レート (exchangeRate) は 208、504、036、856、714、856、032、085、073 です。

soVELO 契約の場合、新規契約残高は 2、つまり soVELO の 2 ウェイが抵当にされ、融資金額は 0、為替レート (exchangeRate) は 17、735、851、964、756、377、265、 143, 988, 000, 000 , 000, 000, 000, 000

為替レートは次のように計算されます。

SharkTeam: Sonne Finance 攻撃事件の分析

soVELO の 1 wei を抵当に入れると、VELO は 17, 735, 851, 964, 756, 377, 265, 143, 988 まで借りることができ、VELO は 265, 842, 857, 910, 985, 546, 929 WETH まで借りることができます。少なくとも 265 , 842, 857, 910, 985, 546, 929 の住宅ローンを組む必要があります。

soWETH の価格: soWETHPrice = 2, 892, 868, 789, 980, 000, 000, 000,

soVELO の価格: soVELOPrice = 124, 601, 260, 000, 000, 000

1 wei を質入れした場合に soVELO で借りられる WETH の金額は次のとおりです。

1 * 為替レート * soVELOPrice / soWETHPrice = 763, 916, 258, 364, 900, 996, 923

763WETHについて。この融資をサポートするには、soVELO 担保 1 ウェイだけで十分です。

265、842、857、910、985、546、929 WETH の借入 (約 265 WETH) が担保の soVELO に変換されます。担保として必要な soVELO の最低額は次のとおりです。

265, 842, 857, 910, 985, 546, 929 * soWETHPrice / soVELOPrice / 為替レート = 0.348

つまり、soVELO担保は1weiあれば十分です。

実際、soVELO 担保の 2 wei は 1 wei のみの借入に使用されました。

(4) 原資産、すなわち 35、471、603、929、512、754、530、287、976 VELO を償還します。

SharkTeam: Sonne Finance 攻撃事件の分析

為替レート = 17, 735, 851, 964, 756, 377, 265, 143, 988, 000, 000, 000, 000, 000, 000

35, 471, 603, 929, 512, 754, 530, 287, 976 VELO を償還するために必要な担保 soVELO の額は、

35、471、603、929、512、754、530、287、976 * 1 e 18 / 為替レート = 1.99999436

計算の際、四捨五入ではなく切り捨てが使用されるため、実際に計算される必要な担保は 1 wei の soVELO となります。

実際の担保は soVELO 2 wei で、そのうち 1 wei は上記の 265 WETH の融資に使用され、残りの 1 wei は 35 M VELO の償還に使用されます。

(5) 借りた265 WETHと償還した35 M VELOをアタックコントラクトに移す

3.これを3回(計4回)繰り返して新たな契約を作成し、攻撃を繰り返します。

4. 最後にフラッシュローンを返済します。

SharkTeam: Sonne Finance 攻撃事件の分析

2. 脆弱性分析

上記の攻撃では 2 つの脆弱性が悪用されました。

(1) 寄付攻撃: VELO トークンを soVELO コントラクトに直接転送 (寄付) し、為替レートを変更し、攻撃者が 1 ウェイ soVELO のみを担保として約 265 WETH を貸与できるようにします。

(2) 計算精度の問題: 計算プロセス中の精度損失と変更された為替レートを使用すると、35 M VELO は 1 wei soVELO 抵当のみで償還できます。

3. 安全に関する提案

この攻撃に対応するには、開発プロセス中に次の予防措置に従う必要があります。

(1) プロジェクトの設計および開発プロセス中、ロジックの整合性と厳密性、特にデポジット、誓約、状態変数の更新、およびプロジェクト実行中の乗算と除算の計算結果のトレードオフの問題を維持する必要があります。計算プロセスは、ロジックが完全で抜け穴がないように、できるだけ多くの状況を考慮する必要があります。

(2) プロジェクトがオンラインになる前に、サードパーティの専門監査会社によってスマート コントラクト監査を実施する必要があります。

私たちについて

SharkTeam のビジョンは、Web3 の世界を保護することです。このチームは、ブロックチェーンとスマート コントラクトの基礎理論に精通した、世界中から集まった経験豊富なセキュリティ専門家と上級研究者で構成されています。リスクの特定とブロック、スマートコントラクト監査、KYT/AML、オンチェーン分析などのサービスを提供し、高度な持続的脅威(高度な持続的脅威)に効果的に対抗できるオンチェーンのインテリジェントなリスク特定とブロックプラットフォームChainAegisを作成しました。 Web3 の世界では持続的脅威、APT)。 Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land、TinTinLand など、Web3 エコシステムのさまざまな分野の主要企業と長期的な協力関係を確立しています。

公式ウェブサイト:https://www.sharkteam.org

Twitter: https://twitter.com/sharkteamorg

電報: https://t.me/sharkteamorg

ディスコード: https://discord.gg/jGH9xXCjDZ

オリジナル記事、著者:SharkTeam。転載/コンテンツ連携/記事探しはご連絡ください report@odaily.email;法に違反して転載するには必ず追究しなければならない

ODAILYは、多くの読者が正しい貨幣観念と投資理念を確立し、ブロックチェーンを理性的に見て、リスク意識を確実に高めてください、発見された違法犯罪の手がかりについては、積極的に関係部門に通報することができる。

おすすめの読み物
編集者の選択