Протокол Voltage Finance - REKT



Voltage Finance подвергся эксплоиту на ~$4M через своего партнера по “Lending-as-a-Service” (кредитованию как услуге), Ola Finance в сети Fuse Network.

Вместо того, чтобы называть себя форком Compound, Ola описывают себя как “провайдера технологии, которая дает другим возможность создавать Compound-подобные инстанции”.

Ранее в этом месяце аналогичный инцидент в чейне Gnosis / xDAI вызвал достаточно беспокойства среди команд, использующих код Compound.

Но почему-то ни Voltage, ни Ola не знали об этом.

Если бы только был источник, в котором разработчики могли бы отслеживать эксплойты, происходящие в DeFi...

Как и в случае с Agave DAO и Hundred Finance, этот эксплоит произошел по причине уязвимости повторного входа в стандарте ERC 677, который сеть Fuse использует для переводимых через мост токенов.

Этот тип токенов включает в себя функцию callAfterTransfer(), которой воспользовались, чтобы провести дополнительные трансферы до того, как балансы были обновлены (учитывая то, что соответствующий код не следует рекомендованной схеме исполнения checks-effects-interactions).

Оригинальный код Compound не следует этой схеме, однако все предлагаемые коллатеральные токены проходят проверку на эту уязвимость до того, как их включают в протокол.

Источник: BlockSecTeam

Адрес атакующего на Fuse: 0x371D7C9e4464576D45f11b27Cf88578983D63d75

Пример транзакции (BUSD): 0x1b3e06b6b310886dfd90a5df8ddbaf515750eda7126cf5f69874e92761b1dc90

Контракт атаки А: 0x632942c9BeF1a1127353E1b99e817651e2390CFF

Контракт атаки В: 0x9E5b7da68e2aE8aB1835428E6E0c83a7153f6112

1: Контракт A переводит 550 WETH в контракт B

2: Контракт B депонирует 500 WETH, чеканя 27,284 oWETH

3: Контракт B берет в долг 507,216 BUSD

4: Контракт BUSD отвечает Контракту B через callAfterTransfer()

5: Контракт B переводит 507,216 BUSD и 27,284 oWETH Контракту A.

6: Контракт A возвращает 27,284 oWETH, чтобы освободить 550 WETH из первоначального депозита и остаться с 507,216 BUSD прибыли.

Как объяснила команда BlockSecTeam:

"В логике кода функции borrow() после внешнего вызова обновляются соответствующие внутренние состояния. В частности, функция doTransferOut() будет вызывать функцию transfer() токена на базе ERC677, что в конечном итоге приведет к внешнему вызову."

Описанный выше процесс был использован многократно, чтобы присвоить $USDC, $FUSD, $WBTC, $WETH & $FUSE.

Полученные в результате фонды были сначала переведены через мост в Ethereum (изначально пополненный через Tornado Cash), и затем были посланы на этот адрес, где они и остаются в форме ETH, WBTC, USDC (будет ли Circle замораживать эти фонды?) и FUSE, стоимостью приблизительно $3.1M.

Когда Agave и Hundred стали жертвой атаки с таким же вектором , мы сказали:

Когда падает один форк, все остальные должны проверить свои фундаменты.

Voltage Finance этого не сделали, и вот почему они занимают свое место (#64) в рейтинге.


Поделиться

REKT представляет собой общественную площадку для анонимных авторов. Мы не несём ответственность за выражаемые точки зрения или контент на этом веб-сайте.

Пожертвование (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

Дисклеймер:

REKT не несет никакой ответственности за любое содержание, размещенное на нашем Веб-сайте или имеющее какое-либо отношение к оказываемым нами Услугам, независимо от того, было ли оно опубликовано или создано Анонимным Автором нашего Веб-сайта или REKT. Не смотря на то, что мы устанавливаем правила поведения и нормы публикаций для Анонимных Авторов, мы не контролируем и не несем ответственность за содержание публикаций Анонимных Авторов, а также за то, чем делятся и что передают Авторы с помощью нашего Сайта и наших Сервисов, и не несем ответственность за любое оскорбительное, неуместное, непристойное, незаконное или спорное содержание, с которым вы можете столкнуться на нашем Веб-сайте и на наших Сервисах. REKT не несет ответственность за поведение, будь то онлайн или офлайн, любого пользователя нашего Веб-сайта или наших Сервисов.