2024 年 5 月 15 日、Sonne Finance が攻撃され、プロジェクトは 2,000 万米ドル以上を失いました。
SharkTeam はこのインシデントの技術分析を直ちに実施し、セキュリティ上の注意事項をまとめました。今後のプロジェクトがこれから学び、ブロックチェーン業界のセキュリティ防御ラインを共同で構築できることを願っています。
攻撃者: 0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43
攻撃契約: 0x02fa2625825917e9b1f8346a465de1bbc150c5b9
ターゲットコントラクト: 0xe3b81318b1b6776f0877c3770afddff97b9f5fe5
攻撃トランザクション: 0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0
攻撃プロセスは次のとおりです。
1. 35,569,150 VELO をフラッシュローンし、これらの VELO トークンを soVELO 契約に転送します
直接譲渡(寄付)であるため、soVELOトークンは鋳造されません。したがって、soVELO 契約では、totalCash は 35,569,150 VELO 増加し、soVELO の totalSupply は変化しませんでした。
2. 攻撃者は新しいコントラクト 0xa16388a6210545b27f669d5189648c1722300b8b を作成し、新しいコントラクト内のターゲット コントラクトに対して攻撃を開始します。攻撃プロセスは次のとおりです。
(1) 2 soVELO を新規契約に移管
(1) 2 soVELO を新規契約に移管
(2) soWETH と soVELO を担保として宣言
(3) soWETH から 265,842,857,910,985,546,929 WETH を借りる
getAccountSnapshot 関数の戻り値に基づいて、上記の借用関数を実行すると、次のことがわかりました。
soWETH 契約の場合、新しい契約残高は 0、ローン金額は 0、為替レート (exchangeRate) は 208,504,036,856,714,856,032,085,073 です。
soVELO 契約の場合、新規契約残高は 2、つまり soVELO の 2wei が抵当にされ、融資金額は 0、為替レート (exchangeRate) は 17,735,851,964,756,377,265,143,988,000,000,000,000,000,000 となります。
為替レートは次のように計算されます。
soVELO の 1wei を抵当に入れると、VELO は 17,735,851,964,756,377,265,143,988 までしか借りられませんが、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
1weiを質入れしたsoVELOで借りられるWETHの金額は以下の通りです。
1 * 為替レート * soVELOPrice / soWETHPrice = 763,916,258,364,900,996,923
約763WETH。このローンをサポートするには、soVELO 住宅ローンの 1wei だけで十分です。
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で十分です。
265,842,857,910,985,546,929 * soWETHPrice / soVELOPrice / 為替レート = 0.348
つまり、soVELO担保は1weiで十分です。
実際、借り入れの際に使用したのはsoVELO担保の1weiだけでした。
(4) 原資産、すなわち 35,471,603,929,512,754,530,287,976 VELO を償還する
為替レート = 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 * 1e18 / 為替レート = 1.99999436
計算中、四捨五入ではなく切り捨てが使用されるため、実際に計算される必要な担保はsoVELOの1weiとなります。
実際の担保は soVELO の 2wei で、そのうち 1wei は上記の 265WETH の融資に使用され、残りの 1wei は 3500 万 VELO の償還に使用されます。
(5) 借りた265 WETHと引き換えた35M VELOをアタックコントラクトに移す
3.これを3回(計4回)繰り返して新たな契約を作成し、攻撃を繰り返します。
4. 最後にフラッシュローンを返済します。
上記の攻撃では 2 つの脆弱性が悪用されました。
(1) 寄付攻撃: VELO トークンを soVELO コントラクトに直接転送 (寄付) し、為替レートを変更し、攻撃者は 1wei soVELO のみを担保として約 265 WETH を貸し出すことができます。
(2) 計算精度の問題: 計算プロセス中の精度損失と変更された為替レートを使用すると、1wei soVELO のみが抵当に入れられている場合でも、3500 万 VELO を償還できます。
この攻撃に対応するには、開発プロセス中に次の予防措置に従う必要があります。
(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
全てのコメント