Аналіз інциденту атаки повторного входу на OrionProtocol
2 лютого 2023 року о 15:40:20 UTC контракти OrionProtocol на Ethereum та Binance Smart Chain зазнали повторного нападу через вразливість. Зловмисники отримали прибуток у розмірі 2,844,766 USDT на Ethereum, а також 191,606 BUSD на Binance Smart Chain, в загальному близько 2,9 мільйона доларів.
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт на власний токен і виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки.
Потім зловмисник здійснив позики через метод swap певного DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool протоколу OrionProtocol для обміну токенів. Шлях обміну встановлено на [USDC, токен зловмисника, USDT].
Під час процесу обміну, через те, що в контракті токена, створеного атакуючим, міститься логіка зворотного виклику, під час операції Transfer буде ініційовано повторний виклик методу ExchangeWithAtomic.depositAsset, що призведе до багаторазового накопичення суми депозиту. Врешті-решт, атакуючий отримує прибуток через операцію виведення.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Рух коштів
Початкові кошти зловмисника походять з гарячого гаманця на певній торговій платформі. З 1,651 ETH прибутку 657,5 ETH все ще залишаються на гаманці зловмисника, а решта була переведена за допомогою служби змішування.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Аналіз вразливостей
Основна проблема полягає в функції doSwapThroughOrionPool контракту ExchangeWithAtomic. Ця функція оновлює змінну curBalance після виконання передачі токенів, що створює умови для атаки повторного входження. Зловмисник використовує зворотний виклик методу depositAsset функції transfer自定义Token, що призводить до неправильного оновлення curBalance. Врешті-решт, зловмисник після повернення флеш-кредиту витягнув надмірні кошти через функцію withdraw.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/social/moments-7c4bde9d6a35da4304844a3bb934fae(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
Рекомендації з безпеки
У дизайні контракту слід враховувати безпекові ризики, які можуть бути пов'язані з використанням різних токенів та шляхів обміну.
Дотримуйтесь моделі "Перевірка-Ефекти-Взаємодії")Checks-Effects-Interactions( при написанні коду контракту, спочатку проводячи перевірку умов, потім оновлюючи змінні стану, а наостанок виконуючи зовнішні виклики.
Реалізуйте повторний замок у ключових функціях, щоб запобігти атакам повторного входу.
Для токен-контрактів, які викликаються зовні, слід проводити строгий аудит безпеки та управління білими списками.
Регулярно проводьте аудит безпеки контрактів, щоб своєчасно виявляти та виправляти потенційні вразливості.
Завдяки вжиттю цих заходів можна ефективно знизити ризик атак на смарт-контракти та підвищити загальну безпеку проєкту.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
13 лайків
Нагородити
13
5
Поділіться
Прокоментувати
0/400
DevChive
· 21год тому
Ще один обдурювач невдах охолонув
Переглянути оригіналвідповісти на0
GasWaster
· 21год тому
Ще один невдаха обдурювати людей, як лохів приречений
OrionProtocol зазнав повторного нападу, втративши 2,9 мільйона доларів
Аналіз інциденту атаки повторного входу на OrionProtocol
2 лютого 2023 року о 15:40:20 UTC контракти OrionProtocol на Ethereum та Binance Smart Chain зазнали повторного нападу через вразливість. Зловмисники отримали прибуток у розмірі 2,844,766 USDT на Ethereum, а також 191,606 BUSD на Binance Smart Chain, в загальному близько 2,9 мільйона доларів.
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт на власний токен і виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки.
Потім зловмисник здійснив позики через метод swap певного DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool протоколу OrionProtocol для обміну токенів. Шлях обміну встановлено на [USDC, токен зловмисника, USDT].
Під час процесу обміну, через те, що в контракті токена, створеного атакуючим, міститься логіка зворотного виклику, під час операції Transfer буде ініційовано повторний виклик методу ExchangeWithAtomic.depositAsset, що призведе до багаторазового накопичення суми депозиту. Врешті-решт, атакуючий отримує прибуток через операцію виведення.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Рух коштів
Початкові кошти зловмисника походять з гарячого гаманця на певній торговій платформі. З 1,651 ETH прибутку 657,5 ETH все ще залишаються на гаманці зловмисника, а решта була переведена за допомогою служби змішування.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Аналіз вразливостей
Основна проблема полягає в функції doSwapThroughOrionPool контракту ExchangeWithAtomic. Ця функція оновлює змінну curBalance після виконання передачі токенів, що створює умови для атаки повторного входження. Зловмисник використовує зворотний виклик методу depositAsset функції transfer自定义Token, що призводить до неправильного оновлення curBalance. Врешті-решт, зловмисник після повернення флеш-кредиту витягнув надмірні кошти через функцію withdraw.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/social/moments-7c4bde9d6a35da4304844a3bb934fae(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
Рекомендації з безпеки
У дизайні контракту слід враховувати безпекові ризики, які можуть бути пов'язані з використанням різних токенів та шляхів обміну.
Дотримуйтесь моделі "Перевірка-Ефекти-Взаємодії")Checks-Effects-Interactions( при написанні коду контракту, спочатку проводячи перевірку умов, потім оновлюючи змінні стану, а наостанок виконуючи зовнішні виклики.
Реалізуйте повторний замок у ключових функціях, щоб запобігти атакам повторного входу.
Для токен-контрактів, які викликаються зовні, слід проводити строгий аудит безпеки та управління білими списками.
Регулярно проводьте аудит безпеки контрактів, щоб своєчасно виявляти та виправляти потенційні вразливості.
Завдяки вжиттю цих заходів можна ефективно знизити ризик атак на смарт-контракти та підвищити загальну безпеку проєкту.