Причина полягає в тому, що на новому ринку USDC математична проблема округлення у функції “пропалювання” посилюється та використовується, дозволяючи хакерам витягувати додаткові USDC.
Упорядник Деніел Тан
3 січня 2024 року за пекінським часом протокол Radiant на Arbitrum був атакований швидкими позиками. Хакери здійснили 3 атаки на протокол #Radiant, що призвело до загальної втрати 1902 ETH (на суму 4,5 мільйона доларів). Основна причина полягає в тому, що на новому ринку $USDC проблема математичних округлень у функції «спалювання» була посилена та використана, дозволяючи хакерам вилучати додаткові $USDC.
MetaTrust Labs провела поглиблене дослідження та аналіз цієї атаки, виявивши, як хакери використовували вразливість.
Radiant — це децентралізований протокол кредитування без зберігання, який працює в кількох мережах, включаючи Arbitrum, BNBChain і Ethereum.

Після атаки загальна вартість, заблокована в протоколі Radiant, все ще становила $313 млн. Це сталося через те, що команда проекту швидко призупинила протокол після атаки, щоб запобігти подальшим втратам.


0xc5c4bbddec70edb58efba60c1f27bce6515a45ffcab4236026a5eeb3e877fc6d
0x2af556386c023f7ebe7c662fd5d1c6cc5ed7fba4723cbd75e00faaa98cd14243
0x1ce7e9a9e3b6dd3293c9067221ac3260858ce119ecb7ca860eac28b2474c7c9b
Три транзакції атаки призвели до загальної втрати понад 1902 ETH на суму понад 4,5 мільйона доларів США. На момент написання статті 1902 $ETH все ще зберігалися в гаманці хакера (0x826d5f4d8084980366f975e10db6c4cf1f9dde6d).
нападник
0x826d5f4d8084980366f975e10db6c4cf1f9dde6d
Контракт на атаку
0x39519c027b503f40867548fb0c890b11728faa8f
Контракт під ударом
Radiant: Кредитний пул:
0xf4b1486dd74d07706052a33d31d7c0aafd0659e1
rUSDCn:
0x3a2d44e354f2d88ef6da7a5a4646fd70182a7f55
За п’ятнадцять секунд до атаки сторона проекту щойно створила новий ринок USDC на Arbitrum, і хакер був першою людиною, яка взаємодіяла з новим ринком USDC.

Візьмемо як приклад першу транзакцію атаки 0x1ce7e9a9e3b6dd3293c9067221ac3260858ce119ecb7ca860eac28b2474c7c9b.
Позичити 3 мільйони доларів США в USDC від AAVE через функцію швидкої позики;
Внесіть 2 мільйони доларів USDC у Radiant Pool. Наразі індекс ліквідності становить 1e27.

Отримайте швидку позику на 2 мільйони доларів у Radiant Lending Pool і збільште індекс ліквідності до 1,8e36.
Повторіть крок 3 151 раз, щоб збільшити liauidityIndex до 2,7e38, що в 270000000000 разів перевищує початкове значення.

Позичте 90,6 $ETH у Radiant Pool на суму $215 тис. Це прибуток від цієї атаки;
Створіть новий договір (0xd8b591);
Схвалити необмежений USDC для нового контракту, перерахувати 543 тис. доларів США в новий контракт і використовувати новий контракт для виконання наступних кроків; перевести 543 тис. доларів США в новий контракт і використовувати новий контракт для виконання наступних кроків ;
Внесіть 543 тис. доларів США в пул Radiant і викарбуйте 2 токени wei. Оскільки сума Scaled становить 2 токени, 543600000002*1e27/271800000000999999999999998631966035920=2;




Внесіть 271 тис. доларів США в пул Radiant і монетний двір зі значенням 1, оскільки 271800000001*1e27/271800000000999999999999998631966035920=1
Витягніть 407 тис. доларів США з пулу Radiant і знищуйте лише токени із сумаScaled 1.
Повторіть кроки 10 і 11 до 18 разів і злийте $USDC з нового ринку, який хакер раніше вніс на новий ринок.
Конвертуйте 2 $WETH в 4,73 тис. $USDC і 3,23 тис. $USDC в 1,36 $WETH.
Використайте 3,5 мільйона доларів США як основну суму та 15 000 доларів США як комісію для погашення термінової позики AAVE.
Прибуток $90 ETH.
Фундаментальна причина полягає в тому, що хакер був першим, хто взаємодіяв із нещодавно створеним рідним ринком USDC, використав функцію флеш-позики протоколу Radiant для збільшення індексу ліквідності та використав проблеми математичних округлень, щоб викрасти активи з пулу кредитування.

