3 січня проект Radiant Capital зазнав серйозної атаки флеш-позики, що призвело до втрати 1900 ETH (приблизно 4,5 мільйона доларів). Radiant Capital — це децентралізований міжланцюговий протокол кредитування, який дозволяє користувачам вносити та позичати різні активи на різних блокчейнах, усуваючи резерви ліквідності.
Згідно з даними в ланцюжку, хакер скористався часовим вікном для активації нового ринку та проблемою округлення в кодовій базі Compound/Aave, щоб здійснити атаку флеш-позики. Цей метод атаки передбачає запозичення великої суми коштів, виконання серії операцій у межах блоку, а потім повернення коштів до кінця блоку для отримання прибутку.
Коротка атака на вразливість
Згідно зі звітами PeckShield і PeckShield, зловмисники скористалися обчислювальною вразливістю в Radiant Capital, що дозволило їм виводити великі суми USDC за низькими цінами, контролюючи точність і округлення. USDC — це стабільна валюта, вартість якої прив’язана до долара США і є одним із активів, які зазвичай використовуються в децентралізованих фінансових протоколах.
Процес атаки зловмисника виглядає наступним чином:
1. Зловмисник спочатку позичив 3 мільйони доларів США через флеш-позику AAVE, щоб використати їх як стартові кошти для атаки. Флеш-позика означає запозичення великої суми коштів, виконання серії операцій у межах блоку, а потім повернення коштів до закінчення блоку для отримання прибутку.
2. Зловмисник пообіцяв 2 мільйони USDC під контракт Radiant і отримав 2 мільйони токенів сертифікатів rUSDCn.
3. Зловмисник здійснює швидку позику через контракт Radiant, позичає 2 мільйони USDC, повертає 2 мільйони USDC у функції зворотного виклику та витягує USDC, заставлену на другому кроці, функція швидкої позики викличе функцію transferfrom Перевести USDC зловмисника в контракт. У цей час буде стягнуто комісію за обробку в розмірі 9/10000, а зібрана плата за обробку стане ліквідністю пулу.
4. Повторюючи крок 3 багато разів, зловмисник контролює, щоб індекс ліквідності був дуже великим, ліквідністьІндекс=271800000000999999999999998631966035920. LiquidityIndex — це змінна, яка використовується в контракті Radiant для реєстрації зростання ліквідності. Вона буде збільшуватися з накопиченням часу та відсотків.
5. Далі зловмисник створює новий контракт і вкладає в нього 543 600 USDC, тому що 5436 (значення USDC) точно вдвічі перевищує 2718 (значення liquidityIndex) на кроці 4, яке можна легко контролювати шляхом округлення.
6. Зловмисник заклав усі 543 600 USDC у контракт Radiant і отримав таку ж суму rUSDCn.
7. Зловмисник видобув 407 700 USDCn, які мали знищити 407 700 rUSDCn, але, як згадувалося вище, функція запису виконувала точні обчислення розширення та округлення. 4077000000000000000000000000000000000000000099999999999998631966035920=1,49999999, і результат округлення дорівнює 1, в результаті чого результат буде на 1/3 меншим. Як показано на малюнку нижче, 407 700 USDC мало бути знищено, але залишилося 271 800, тобто лише 271 800 було знищено, а зловмисник вилучив 407 700 USDC.
8. Зловмисник використовує вразливість на кроці 7, щоб повторити операцію зняття застави, і зняття завжди на 1/3 перевищує заставлену суму, і нарешті обмінює весь USDC у пулі.
Зараз кошти не під загрозою
Radiant Capital визнав проблему у своїй офіційній публікації та повідомив, що призупинив свій ринок кредитування на Arbitrum і розслідує причини та наслідки інциденту. Arbitrum — це рішення для масштабування другого рівня, яке збільшує швидкість транзакцій і знижує витрати на Ethereum. Radiant Capital також заявив, що наразі жодні кошти користувачів не знаходяться під загрозою, і планує випустити звіт про виявлення та відновити роботу після вирішення проблеми.
висновок:
Цей інцидент ще раз нагадує нам, що безпека децентралізованих фінансових протоколів має вирішальне значення та потребує постійного аудиту та тестування, щоб запобігти потенційній вразливості та атакам. Користувачі також повинні знати про ризики та брати участь у кредитуванні та інвестуванні лише на перевірених платформах. Хоча Radiant Capital зазнав серйозних втрат, він також продемонстрував позитивне ставлення та почуття відповідальності, сподіваючись, що зможе якомога швидше відновитися та покращити безпеку та стабільність свого протоколу. У той же час я також сподіваюся, що інші децентралізовані фінансові протоколи зможуть навчитися на цьому інциденті, посилити власні заходи безпеки та надати користувачам кращі послуги та досвід. #RadiantCapital #黑客攻击