
出典:SharkTeam
2024年1月30日、MIM_SPELLはライトニングローンに攻撃されました。
SharkTeamは、できるだけ早くインシデントのテクニカル分析を実施し、セキュリティの予防策を要約しました。
1。攻撃トランザクション分析
攻撃アドレス:
0x87F585809CE79AE39A5FA0C7C96D0D159EB678C9
攻撃契約:
0XE1091D17473B049CCCD65C54F71677DA85B77A45
0x13AF445F81B0DECA5DCB2BE6C691F545C95912
0xe59b54a9e37ab69f6e9312a9b3f7253ee184e5a
攻撃された契約:
0x7259E152103756E1616A77AE982353C3751A6A90
攻撃トランザクション:
0x26A83DB7E288838DD9FEE6FB7314AE58DCC6AEE9A20BF224C386FF5E80F7E4CF2
0xDB4616B89AD82062787A4E924D520639791302476484B9A6ECA5126F79B6D8777
攻撃プロセス:
1。攻撃者(0x87F58580)は、Lightningローンを通じて300,000 MIMトークンを借りました。
2。次のステップのために、ユーザーの借入を返済するために、2,40,000 MIMトークンを攻撃された契約(0x7259E1520)に送信します。
3.攻撃者(0x87F58580)は、他のユーザーの借入を返済するためにRepayFrall関数を呼び出し、他のユーザーの借入を順番に返済することです。
4。弾性変数が0に縮小された後、攻撃者(0x87F58580)が新しい攻撃契約(0xE59B54A9)を作成し、伸縮性= 0までbase = 120080183818866666666521504972888888888888888888888888888888888888888888888888888888888888888888888888888888888888の呼び出しを継続的に呼び出します。
5。その後の攻撃者(0x87F58580)は、5000047 MIMトークンを借りたDeGenbox契約の撤回関数を呼び出します。
6.攻撃者(0x87F58580)は、Lightningローン機能を返し、4400,000 MIMトークンを1807 ETHに変換し、このトランザクションは約450Wの利益を上げました。
第二に、脆弱性分析
攻撃の本質は、借入変数の精度が計算され、キー変数の弾性値とベース値の割合が不均衡になり、住宅ローンと借入の数を計算するときに問題が発生し、最終的にMIMトークンを借りたことです。
攻撃された契約(0x7259E1520)の借入関数と返済機能は、上向きの方法を使用して、弾性とベースの2つの変数を計算します。
攻撃者(0x87F58580)は、他のユーザー借入を返済することにより、弾性変数とベース変数を0および97に最初に設定しました。
その後、借入関数と返済関数は連続的に呼び出され、パラメーター量は1です。貸付関数が最初に借入関数を呼び出す場合、上記はロジックが実行され、Elastic = 0の場合は追加関数に返されます。これにより、Elastic = 1、base = 98が発生します。
攻撃者(0x87F58580)は、借入関数を呼び出して1に渡します。Elastic= 1はElse Logicを実行するため、計算された返品値は98です。
しかし、この時点で、攻撃者(0x87F58580)は返済関数を呼び出して1に渡しました。伸縮性= 2なので、elseは計算された戻り値1になります。変数の変更バック1、ベース変数は195です。
借入金ループを経験した後、弾性変数は変化しないままで、この脆弱性を使用してほぼ2倍になっていることがわかります。最後に、Elastic = 0 Base = 120080183810681886665215049728にします。
弾性変数とベース変数の間の割合が非常に不均衡な場合、攻撃者(0x87F58580)を少し住宅ローンで追加して、溶媒修飾子の制限を通じて多数のMIMトークンを借りることができます。
3。安全性の提案
この攻撃に応じて、開発プロセス中に次の注意事項に従う必要があります。
1.開発精度の関連ロジックを計算する場合、精度と状況全体を慎重に考慮します。
2。プロジェクトが開始される前に、プロの第3パーティ監査チームは、スマートコントラクト監査を実施する必要があります。