Ласкаво просимо до 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 завдяки цьому відкриттю. Коли це конче потрібно убезпечити, Шерлок – правильний вибір.
Показати оригінал
3,04 тис.
39
Вміст на цій сторінці надається третіми сторонами. Якщо не вказано інше, OKX не є автором цитованих статей і не претендує на авторські права на матеріали. Вміст надається виключно з інформаційною метою і не відображає поглядів OKX. Він не є схваленням жодних дій і не має розглядатися як інвестиційна порада або заохочення купувати чи продавати цифрові активи. Короткий виклад вмісту чи інша інформація, створена генеративним ШІ, можуть бути неточними або суперечливими. Прочитайте статтю за посиланням, щоб дізнатися більше. OKX не несе відповідальності за вміст, розміщений на сторонніх сайтах. Утримування цифрових активів, зокрема стейблкоїнів і NFT, пов’язане з високим ризиком, а вартість таких активів може сильно коливатися. Перш ніж торгувати цифровими активами або утримувати їх, ретельно оцініть свій фінансовий стан.