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

Статья SlowMist: анализ взлома протокола Fortress

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
1655288758121.png

Утром 9 мая средства Fortress Protocol были украдены из-за злонамеренной атаки. Основная причина атаки на протокол Fortress была связана с недостатком конструкции его контракта на управление и произвольным манипулированием оракулом Umbrella Network.

Fortress Protocol — это протокол кредитования DeFi, который работает в Binance Smart Chain. Адреса, вовлеченные в эту атаку, перечислены ниже:

Адрес злоумышленника:
https://bscscan.com/address/0xA6AF2872176320015f8ddB2ba013B38Cb35d22Ad

Хэш транзакции:
https://bscscan.com/tx/0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf

Адрес контракта токена FTS:
https://bscscan.com/address/0x4437743ac02957068995c48e08465e0ee1769fbe

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

Установлено, что злоумышленники начали готовиться еще за 19 дней до совершения официальной атаки.
29 апреля злоумышленник получил 20 ETIH в сети Ethereum через TornadoCash и подключил 12,4 ETH к Binance Smart Chain с помощью cBridge.
$FTS — это токен управления Fortress Protocol, выпущенный 21 апреля 2022 года с общим количеством 10 000 000.
Из-за низкой цены $FTS злоумышленник потратил всего около 11,4 ETH на покупку примерно 400 000 токенов FTS, что составляет 4% от общего количества.
4 мая злоумышленник создал договор вредоносного предложения:

https://bscscan.com/address/0x0dB3B68c482b04c49cD64728AD5D6d9a7B8E43e6

Затем контракт предложения был добавлен в очередь предложений, Предложение 11.
У предложения был трехдневный период голосования, когда злоумышленники проголосовали за предложение, используя часть своих ранее приобретенных 400 000 токенов FTS за несколько часов до окончания голосования 7 мая.

0xc368afb2afc499e7ebb575ba3e717497385ef962b1f1922561bcb13f85336252;
0x83a4f8f52b8f9e6ff1dd76546a772475824d9aa5b953808dbc34d1f39250f29d

Как показано на рисунке ниже, контракт на управление требует выполнения двух условий для успешного прохождения предложения:

1655289011775.png


  • Количество положительных голосов больше, чем количество отрицательных.
  • Количество положительных голосов больше или равно 4% от общего количества токенов FTS, что составляет 400 000 FTS.
После завершения голосования предложение утверждается с двухдневным периодом ожидания до его реализации.
9 мая, через 2 дня, пользователь создал контракт на атаку и инициировал официальную атаку.
Контракт атаки выполняет вредоносное предложение следующим образом:
Изменить кредитное плечо токенов FTS с 0 до 0,7. Это позволяет злоумышленнику использовать 70% стоимости токенов FTS с кредитным плечом для кредитования активов в протоколе.
Fortress Protocol получает залоговую цену контракта:
https://bscscan.com/address/0x00fcF33BFa9e3fF791b2b819Ab2446861a318285
Как показано на рисунке ниже, цена каждого токена определяется через разные Oracle:

1655289130335.png

Среди них - ФНС, где цена получается от Umbrella Oracle:


Как показано на рисунке ниже, мы видим уязвимость в функции 'submit multi-signature price feed' в Umbrella Oracle:

1655289245912.png


До тех пор, пока количество подписей превышает значение requiredSignatures, проверка того, имеет ли подписавший правильный канал для цены, не выполняется. Это позволяет злоумышленнику создать подпись с любой учетной записью, чтобы указать цену. После атаки Umbrella Network оперативно устранила уязвимость и обновила контракт:

https://bscscan.com/address/0x49D0D57cf6697b6a44050872CDb760945B710Aab

Новая функция отправки теперь проверяет разрешения подписывающей стороны:

1655289334228.png

Вернемся к самой атаке. Злоумышленник смог манипулировать машиной Oracle, чтобы установить очень высокую цену для FTS, чтобы он мог одолжить все токены, такие как BNB, USDC, USDT, BUSD, BTCB, ETH, LTC, XRP, ADA, DAI, DOT и SHIB.
Все эти токены были конвертированы примерно в три миллиона долларов США и подключены к сети Ethereum через Anyswap и cBridge. Затем USDT был конвертирован в ETH и DAI в сети Ethereum и переведен в TornadoCash.

Резюме

Эта атака использовала недостаток в протоколе управления и уязвимость в манипулировании ценами Oracle. При разработке контракта управления важно учитывать логику проектирования модели голосования с помощью токенов, чтобы ее можно было сделать таким образом, чтобы было трудно выполнить злонамеренную атаку. Помимо оценки децентрализованных oracle следует также уделить внимание совместимости внешних oracle с самим протоколом.

Оригинал Атсюдава
 


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