• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Посмертный анализ инцидента OneRing

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
21 марта 2022 года, по данным SlowMist Intelligence Zone, OneRing Finance стала жертвой эксплойта, в результате которого были убытки на сумму более 1,4 миллиона долларов. Это наш посмертный анализ инцидента.

Релевантная информация

One Ring — это кросс-стабильная платформа оптимизатора доходности с несколькими цепочками. Инцидент произошел в сети fanthom из-за использования флэш-кредита для завышения цены их токенов Oshare.

Адрес злоумышленника:
0x12efed3512ea7b76f79bcde4a387216c7bce905e
Транзакция атаки: https://ftmscan.com/tx/0xca8dd33850e29cf138c8382e17a19e77d7331b57c7a8451648788bbb26a70145
Контракт злоумышленника:
0x6a6d593ed7458b8213fa71f1adc4a9e5fd0b5a58
Атакуемый контракт:
OneRingVault: 0xc06826f52f29b34c5d8b2c61abf844cebcf78abf

Корень проблемы

OneRing напрямую использует резервы в паре для расчета цены токена OShare. Злоумышленник смог вызвать проскальзывание цены, когда использовал операцию свопа на OneRingValut. Это привело к неожиданному увеличению резервов пары, что привело к повышению цены OShare для создания искусственного обеспечения.

Детальный анализ

1. Злоумышленник сначала создал контракт на заимствование 80 000 000 долларов США у Solidity через срочный кредит.


1655123120300.png


2. Конвертировал USDC в токены miMatic, курс обмена токена был 1:1.001109876698508218.

1655123154400.png


3. DepositSafe , чтобы внести 79 999 997 (80 079 997,00 долларов США) USDC в контракт.

1655123170400.png


1655123209600.png


Как вы можете видеть вфункции depositSafe есть функция _deposit , а она вызывается _doHardWorkAll . В рамках этой функции цикл for используется для конвертации всех депонированных USDC в другие токены.

1655123254800.png


Затем DepositSafe создает около 41 965 509,691846094312718922 токенов OShare для злоумышленника. Мы видим, что цена OSShare равна 1062758591235248117.

1655123298300.png


Курс обмена значительно изменился, когда злоумышленник использовал два USDC для повторного обмена на токены miMATIC после свопа, как показано на изображении ниже.

1655123348100.png


4. Глядя на вывода , мы видим, что она также вызывает getSharePrice из расчета цены OSShare.

1655123377800.png


Давайте пройдем по этому пути и посмотрим, куда он нас приведет:

1655123421900.png



Здесь balanceWithInvested , и мы видим, что она следует за функцией investedBalanceInUSD .

1655123455600.png



В конце концов, на getUSDBalanceFromUnderlyingBalance в конечном итоге влияет функция

1655123487800.png


В getUSDBalanceFromUnderlyingBalance мы видим, что функция использует для расчета значения двух токенов в контракте, _reserves0 и _reserves1 . Из-за предыдущего свопа в пуле осталось большое количество USDC, поэтому в пуле осталось значительное количество USDC. Если количество USDC растет, _amount также будет расти, что приводит к увеличению текущей цены OSShare, полученной getSharePrice .

1655123517100.png



Глядя на рисунок ниже, мы видим, что текущая цена OShare составляет 1136563707735425848.

1655123575700.png



Далее, мы можем видеть из вывода ниже, что окончательная сумма вывода рассчитывается с помощью _withdraw .

1655123621000.png



После дополнительного расследования мы обнаружили, что _toWithdrawl также используется для расчета balanceWithInvested , что также вызывает рост цены.

1655123648100.png


Полученные 41 965 509 OSShare затем обмениваются на 8 153 475 010 1089 долларов США.

5. Наконец, они погасили кредит и сохранили разницу.

МистТрек

Согласно анализу MistTrack , злоумышленник обменял большую часть украденных средств на ETH и FTM. Затем они соединяют его обратно с Ethereum, прежде чем, наконец, внести более 521 ETH в TornadoCash. Первоначальные 0,1 Eth, использованные для финансирования смарт-контракта, также были переведены из TornadoCash.

На данный момент у хакера все еще есть около 45 000 долларов или около 15 ETH на его адрес ETH. Мы продолжим отслеживать и отслеживать любые перемещения с этого адреса.


1655123661100.png


Резюме

Этот инцидент был вызван мгновенным расчетом getUSDBalanceFromUnderlyingBalance в рамках MasterChefBaseStrategy контракта. Хакер использовал флэш-кредит, чтобы воспользоваться эксплойтом в контракте, который позволил им манипулировать ценой OShare. Команда безопасности SlowMist рекомендует проектам не использовать мгновенный расчет цен в будущем, чтобы избежать манипулирования ценами.


Переведена ЭТА статья
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх