Принципиальный анализ события атаки BNO

18 июля 2023 года по пекинскому времени компания Ocean BNO подверглась атаке с использованием срочного кредита, и злоумышленник получил прибыль в размере около 500 000 долларов США.

20230718161919783image.png

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

1. Анализ событий

Адрес злоумышленника:

0xa6566574edc60d7b2adbacedb71d5142cf2677fb

Контракт на атаку:

0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd

Атакуемый контракт:

0xdCA503449899d5649D32175a255A8835A03E4006

Атакующие транзакции:

0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9

Процесс атаки:

(1) Злоумышленник (0xa6566574) одолжил 286 449 BNO с помощью флэш-кредита pancakeSwap.

20230718161449018image.png

(2) Затем вызовите функцию StakingNft атакованного контракта (0xdCA50344), чтобы заложить два nft.

20230718161457306image.png

(3) Затем вызовите функцию залога атакованного контракта (0xdCA50344), чтобы заложить 277856 монет BNO.

20230718161633397image.png

(4) Вызовите функцию EmergencyWithdraw атакуемого контракта (0xdCA50344), чтобы извлечь все BNO.

20230718161641122image.png

(5) Затем вызовите функцию unstakeNft атакованного контракта (0xdCA50344), извлеките два заложенных nft и получите дополнительные токены BNO.

20230718161732948image.png

(6) Повторяйте описанный выше процесс, чтобы постоянно получать дополнительные токены BNO.

20230718161752651image.png

(7) После погашения мгновенного кредита обменяйте все токены BNO на 50,5 Вт BUSD и покиньте рынок с прибылью.

20230718161800166image.png

Во-вторых, анализ уязвимостей

Основная причина этой атаки: проблема с механизмом расчета вознаграждения и логикой взаимодействия функции экстренного вывода в атакуемом контракте (0xdCA50344), из-за чего пользователь получает дополнительный токен вознаграждения после вывода принципала.

20230718161812689image.png

20230718161820027image.png

В контракте предусмотрена функция EmergencyWithdraw для экстренного вывода токенов, а также сбрасывается общая сумма ипотечного кредита злоумышленника и общий долг вознаграждения Debt, но не сбрасывается переменная nftAddition злоумышленника, а переменная nftAddition также вычисляется через переменную allstake.

20230718161834850image.png

В функции unstakeNft текущее вознаграждение пользователя по-прежнему будет рассчитываться, и если переменная nftAddition не обнулена, функция pendingFit по-прежнему будет возвращать дополнительное значение вознаграждения BNO, в результате чего злоумышленник получит дополнительные токены BNO.

20230718161842539image.png

В-третьих, рекомендации по безопасности

В ответ на эту атаку мы должны соблюдать следующие меры предосторожности в процессе разработки:

(1) При расчете вознаграждения проверьте, снял ли пользователь основную сумму.

(2) Перед запуском проекта в онлайн необходимо обратиться за технической помощью к сторонней команде профессиональных аудиторов.

Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить