Принциповий аналіз події атаки BNO

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

20230718161919783image.png

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

1. Аналіз подій

Адреса зловмисника:

0xa6566574edc60d7b2adbacedb71d5142cf2677fb

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

0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd

Атакований договір:

0xdCA503449899d5649D32175a255A8835A03E4006

Атакуючі транзакції:

0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9

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

(1) Зловмисник (0xa6566574) позичив 286 449 BNO через флеш-позику pancakeSwap.

20230718161449018image.png

(2) Потім викличте функцію stakeNft атакованого контракту (0xdCA50344), щоб заставити два nft.

20230718161457306image.png

(3) Потім викличте функцію застави атакованого контракту (0xdCA50344), щоб заставити 277856 монет BNO.

20230718161633397image.png

(4) Викликати функцію аварійного відкликання атакованого контракту (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 для екстреного вилучення токенів і очищає зловмисника загальну іпотеку allstake і rewardDebt загальний борг, але не очищає змінну 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
Немає коментарів
  • Закріпити