Было украдено более 1900 ETH и как взломали Radiant Capital и украли 4,5 миллиона долларов

ForesightNews

3 января 2024 года проект Radiant Capital подвергся атаке с использованием флэш-кредита со стороны злоумышленника. Злоумышленник посредством 3 транзакций похитил более 1900 ETH на сумму более 4,5 миллионов долларов США. Украденные средства в настоящее время все еще хранятся по адресу злоумышленника. .

Автор: Беосин

3 января 2024 года, по данным мониторинга, проведенного платформой мониторинга рисков безопасности EagleEye компании Beosin, раннего предупреждения и блокировки, проект **Radiant Capital подвергся атаке злоумышленника с использованием мгновенного кредита. Злоумышленник посредством 3 транзакций похитил более 1900 ETH на сумму более 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 миллиона долларов США в контракт Radiant и получил 2 миллиона токенов сертификата rUSDCn.

  1. Злоумышленник предоставляет мгновенный кредит через контракт Radiant, занимает 2 миллиона долларов США, возвращает 2 миллиона долларов США в функции обратного вызова и извлекает обещанные доллары США на втором этапе. Наконец, функция мгновенного кредита вызывает функцию Transferfrom с помощью Перевести USDC злоумышленника в контракт. **В настоящее время взимается комиссия за обработку в размере 9/10 000, и собранная плата за обработку становится ликвидностью пула. **

  1. Многократно повторяя шаг 3, злоумышленник устанавливает очень большое значение LiquidityIndex: LiquidityIndex=271800000009999999999999998631966035920.

  1. Далее злоумышленник создает новый контракт и вкладывает в него 543 600 долларов США, **поскольку 5436 (значение USDC) ровно в два раза превышает 2718 (значение LiquidityIndex) на шаге 4, которое можно легко контролировать путем округления. **

  1. Злоумышленник заложил все 543 600 долларов США в контракт Radiant и получил такую же сумму в rUSDCn.

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

4077000000000000000000000000000000000/2718000000009999999999999998631966035920=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
Нет комментариев