Викрадено понад 1900 ETH і як зламали Radiant Capital, щоб вкрасти 4,5 мільйона доларів

ForesightNews

3 січня 2024 року проект Radiant Capital зазнав атаки зловмисника на отримання кредиту. Зловмисник викрав понад 1900 ETH через 3 транзакції на суму понад 4,5 мільйона доларів США. Викрадені кошти наразі все ще зберігаються за адресою зловмисника .

Автор: Beosin

3 січня 2024 року, згідно з моніторингом платформи моніторингу ризиків безпеки, раннього попередження та блокування Beosin EagleEye, проект **Radiant Capital зазнав атаки зловмисника на отримання кредиту. Зловмисник викрав понад 1900 ETH через 3 транзакції на суму понад 4,5 мільйона доларів США. Викрадені кошти все ще зберігаються за адресою зловмисника.**Команда безпеки Beosin негайно проаналізувала цей інцидент.

Аналіз вразливості

Основна причина цього інциденту полягає в тому, що проект Radiant Capital використовував розширення точності та округлення в процесі обчислення кількості токенів. Це дозволило зловмиснику збільшити прибуток, контролюючи точність і поєднуючи її з округленням. Натисніть, щоб атакувати. **

Дотримуючись наведеного вище коду, функція rayDiv передає два дані uint256 a і b. Весь процес можна скоротити як (a*RAY+b/2)/b, де RAY — це точні розширені дані, які дорівнюють 10^27 , тож результат досить При a*RAY/b+0,5 реалізовано функцію округлення, і похибка цього методу обчислення в основному походить від b. Якщо b надзвичайно мале відносно a, тоді похибка буде незначною, але якщо b має той самий порядок величини, що й a, тоді помилка може сягати самої a.

Наприклад: якщо a*RAY=10000, b=3, то обчислений результат дорівнює 3333, що на 1/10000 менше за фактичне значення; а якщо a*RAY=10000, b=3000, обчислений результат дорівнює 3, на 1/10 менше фактичного значення.

У цьому інциденті зловмисник маніпулював значенням b так, щоб значення b і значення a мали однаковий порядок величини, зробивши обчислення еквівалентним 3/2,0001=1, а обчислене значення на 1/3 менше, ніж фактичне значення.

Процес атаки

Давайте подивимося на процес хакерської атаки:

  1. Зловмисник спочатку позичив 3 мільйони доларів США через флеш-позику AAVE, яка була використана для фінансування атаки.

  1. Зловмисник пообіцяв 2 мільйони USDC під контракт Radiant і отримав 2 мільйони токенів сертифікатів rUSDCn.

  1. Зловмисник здійснює швидку позику через контракт Radiant, позичає 2 мільйони USDC, повертає 2 мільйони USDC у функції зворотного виклику та витягує USDC, закладений на другому кроці. Нарешті, функція швидкої позики викличе функцію transferfrom за допомогою Перенести USDC зловмисника в контракт. **Наразі стягуватиметься комісія за обробку в розмірі 9/10000, а зібрана плата за обробку стає ліквідністю пулу. **

  1. Повторюючи крок 3 багато разів, зловмисник контролює, щоб індекс ліквідності був дуже великим, ліквідністьІндекс=271800000000999999999999998631966035920.

  1. Далі зловмисник створює новий контракт і вкладає в нього 543 600 USDC, **оскільки 5436 (значення USDC) точно вдвічі перевищує 2718 (значення liquidityIndex) на кроці 4, яке можна легко контролювати шляхом округлення. **

  1. Зловмисник заклав усі 543 600 доларів США в контракт Radiant і отримав таку ж суму rUSDCn.

  1. Зловмисник видобув 407 700 USDCn, які мали знищити 407 700 rUSDCn, але, як згадувалося вище, функція запису виконувала точні обчислення розширення та округлення.

4077000000000000000000000000000000000000000099999999999998631966035920=1,49999999, і результат округлення дорівнює 1, в результаті чого результат буде на 1/3 меншим.

Як показано на малюнку нижче, 407 700 USDC мало бути знищено, але залишилося 271 800, тобто лише 271 800 було знищено, а зловмисник вилучив 407 700 USDC.

  1. Зловмисник використовує вразливість на кроці 7, щоб повторити операцію зняття застави, і зняття завжди на 1/3 перевищує суму застави, і нарешті обмінює весь USDC у пулі. **

Відстеження коштів

Станом на момент публікації викрадених 1902 ETH зберігалися на адресі хакера та не були переміщені. Beosin Trace продовжить контролювати кошти. **

На початку 2024 року ми вже стали свідками двох випадків масштабних крадіжок. (Огляд вчорашніх інцидентів безпеки: що сталося з першим випадком цього року, інцидентом Orbit Chain, вкраденим на 80 мільйонів доларів?) Ця серія подій ще раз нагадує нам, що в екосистемі Web3 запобіжні заходи все ще є дуже важливими! **

Застереження: Інформація на цій сторінці може походити від третіх осіб і не відображає погляди або думки Gate. Вміст, що відображається на цій сторінці, є лише довідковим і не є фінансовою, інвестиційною або юридичною порадою. Gate не гарантує точність або повноту інформації і не несе відповідальності за будь-які збитки, що виникли в результаті використання цієї інформації. Інвестиції у віртуальні активи пов'язані з високим ризиком і піддаються значній ціновій волатильності. Ви можете втратити весь вкладений капітал. Будь ласка, повністю усвідомлюйте відповідні ризики та приймайте обережні рішення, виходячи з вашого фінансового становища та толерантності до ризику. Для отримання детальної інформації, будь ласка, зверніться до Застереження.
Прокоментувати
0/400
Немає коментарів