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 менше, ніж фактичне значення.
Давайте подивимося на процес хакерської атаки:






4077000000000000000000000000000000000000000099999999999998631966035920=1,49999999, і результат округлення дорівнює 1, в результаті чого результат буде на 1/3 меншим.
Як показано на малюнку нижче, 407 700 USDC мало бути знищено, але залишилося 271 800, тобто лише 271 800 було знищено, а зловмисник вилучив 407 700 USDC.


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

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