
出典:Beosin
2024年1月30日、BeosinのEagleeyeセキュリティリスクの監視、早期警告、ブロッキングプラットフォーム監視ディスプレイによると、北京時間、Defi Protocol Mim_SpellはハッカーLightningローンに攻撃され、600万米ドルを超える損失が発生しました。現在、攻撃者は盗まれた資金をETHに交換し、2つの攻撃者の住所に移転します。同時にこの脆弱性を分析します。
脆弱性分析
この事件の主な理由はです攻撃者はプロジェクトパーティ契約を使用して上向きアルゴリズムを使用し、パラメーターを1に制御します。
契約には2つの機能があります。これは借りて返済されます。1つは契約からお金を借りることであり、もう1つは契約に契約を支払うことです。
借入関数は借入額を指定し、借金は割合変換によって計算され、発信者の総負債価値が更新されます。以下の図に示すように、ここの契約の追加アルゴリズムは上向きに使用されます。
借入関数は返済債務価値を指定し、返済額は比例変換によって計算され、返済額は契約に転送されます。以下の図に示すように、ここの契約のサブアルゴリズムはまだ上向きに使用されています。
借入と返済のプロセスを理解して、ハッカーが脆弱性をどのように使用しているかを見てみましょう。
ハッカーは最初に契約の金額と債務価値を0および97に制御しました(制御方法は次のセクションで導入されます)。
次に、借入関数と返済機能は停止されず、借入値と返済値は1です。最後に、借入と債務価値は0および12008181886666665215049728に制御され、深刻な不均衡をもたらします。
上記のコードルール(Elastic = 0、base = 97)によると、攻撃者が1回の借入を呼び、1に渡されると、2つの元帳がElastic = 1、base = 98(Elastic is 0、およびに従って増加します。値の同期に対して、再び呼び出して再び1に渡されると、それは弾性= 2、base = 196になります(弾性が0でない場合、それは比例して追加されます)。
次に、攻撃者は返済関数を1に通過し、この時点で計算された弾性を呼び出します。この時点では弾性が変化していないことがわかりますが、ベースは2倍になります。
攻撃者は、複数の上記の方法を使用して、Elastic = 0、base = 120080183810686665215049728をもたらします。最終的には、借入を通じて500万以上のMIMと契約を借りました。
攻撃プロセス
関数の機能を理解して、攻撃者が攻撃をどのように実行するかを見てみましょう(例としてトランザクションの1つ)。
1.攻撃者は最初に300,000 MIMを借りました。
2。その後、攻撃者はコールバック関数の金額と債務を照会します。
3.次に、攻撃者はRepayFrall関数を呼び出し、弾性を制御するために240,000 MIMトークンを返しました。
4.次に、攻撃者は返済機能を通じて他のユーザーの負債を返し、最終的にローンと債務価値を0と97に制御しました。
5.攻撃者は新しい契約を作成し、借入と返済を訴えることにより、借入と債務価値の量を0および120080181886665215049728に制御します。
6.最後に、500万人のMIMが借りて500万人のMIMを借りて、Lightningローンを返済しました。
資金追跡
報道時間の時点で、600万米ドル以上の盗まれた資金はETHと交換されており、ハッカーの住所は継続して資金を監視しています。