Актуальні теми
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Ласкаво просимо до Sherlock's Vulnerability Spotlight! Щотижня ми будемо висвітлювати вражаючу вразливість, яку наші дослідники виявили під час аудиту Шерлока.
Цього тижня ми маємо надмірне виведення коштів через неправильну конфігурацію.
Його знайшли @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 та @0xleastwood у конкурсі @NotionalFinance V3.

Якщо поточний баланс становить 999 900 USDC, а сума виведенняExternal становить 1 000 000 USDC, то баланс у контракті недостатній, і з грошового ринку потрібно виводити додаткові кошти (наприклад, Compound).

Оскільки контракт вже має 999 900 USDC, для виконання запиту на виведення коштів у розмірі 1 000 000 USDC з грошового ринку потрібно вивести лише додаткові 100 USDC
Однак замість того, щоб виводити 100 USDC з грошового ринку, Notional виводить 1 000 000 USDC з ринку відповідно до функції oracle.getRedemptionCalldata(withdrawAmountExternal). В результаті з грошового ринку виводиться перевищення в 999 900 USDC.
Які наслідки?
Це призвело до надмірної кількості активів, які простоювали в Notional і не приносили жодних доходів або інтересу на грошовому ринку, що призвело до значної втрати прибутковості для користувачів, оскільки вони отримували нижчу відсоткову ставку, ніж очікувалося, і зазнавали втрат можливостей.
Зловмисники потенційно можуть зловживати цим, щоб витягнути кошти, які Notional інвестував у грошовий ринок, що призведе до горя та приголомшливої втрати прибутку/відсотків для протоколу.
Виправлення:
По суті, перед виправленням код говорив оракулу: «Підготуйте кроки, щоб вивести все, що користувач хоче з грошового ринку».
Коли він повинен був сказати: «Тягни тільки те, чого нам не вистачає з грошового ринку».

Після виправлення, у попередньому прикладі, 999 900 USDC, які вже утримуються за контрактом, залишаються недоторканими та продовжують приносити дохід, підвищуючи ефективність та зберігаючи прибутковість для всіх користувачів.
Ця вразливість виникла через тонкий логічний недолік у тому, як розраховувалися та передавалися суми виведення коштів. Нехтуючи існуючим балансом контракту, система невиправдано витягувала надмірні кошти з грошового ринку, що призводило до неефективності капіталу та втрати прибутку.
Ми пишаємося тим, що допомогли убезпечити Notional завдяки цьому відкриттю. Коли це конче потрібно убезпечити, Шерлок – правильний вибір.
2,84K
Найкращі
Рейтинг
Вибране