Механика взлома Cream Finance 27 октября 2021 г
Хакер действовал на 2 аккаунтах при помощи flash loan (действие выполняется в рамках 1 транзакции с возвратом заимствованных средств, поэтому цифры займа могут быть астрономическими):
1 Займ ETH и производство залога $500m DAI из Maker, которые затем кладутся в пул Curve и в ответ на 500m DAI - пул выписывает 500m токенов yUSD (токенов, несущих доход)
2 Аккаунт А кладет yUSD в протокол CREAM
3 Флеш лоан 500K ETH из AAVE для аккаунта B
4 Аккаунт B кладет все занятые 500K ETH, чтобы заимствовать все токены yUSD и отправляет их на аккаунт А (здесь думаю и крылась основная ошибка логики протокола - возможность передвижения токенов yUSD в рамках флеш лоан на чужой аккаунт)
5 Аккаунт А кладет yUSD в протокол CREAM
6 Повторяется несколько раз, где аккаунт B кладет эфир, заимствует токены yUSD, отправляет их на аккаунт А
7 В итоге - аккаунт A на конец транзакций имеет 1.5B cyUSD (депозитных расписок, представляющих токен yUSD) и 500М yUSD.
8 Аккаунт А производит запрос на то, чтобы достать из токенов cyUSD - токены yUSD (redeem транзакция)
9 Т к стоимость yUSD рассчитывалась относительно общей эмиссии cyUSD (которая возросла в 2 раза), то Аккаунт B остался глубоко убыточным (в предыдущем посте долг его был более $2B), а токен А удвоил свою залоговую базу, что позволило ему изъять из протокола Cream токены, под залог фантомной залоговой базы.
10 Используя свою залоговую базу аккаунт А опустошил все токены из протокола Cream
11 Аккаунт А использует востребованные из cyYSD токены yUSD для возврата флеш займа и выплаты по долгу 500M DAI в протокол Maker.
https://twitter.com/nomorebear/status/1453413216172740609