Аналіз випадку атаки повторного входу на OrionProtocol
2 лютого 2023 року в другій половині дня OrionProtocol зазнав атаки повторного входу через вразливість контракту на Ethereum та Binance Smart Chain, загальні збитки склали близько 2,9 мільйона доларів США. Конкретні збитки включають 2 844 766 USDT на ланцюзі Ethereum та 191 606 BUSD на ланцюзі Binance Smart.
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт кастомного токена та провів відповідні операції з переказу та авторизації, готуючись до подальшої атаки. Потім зловмисник здійснив позичку через метод swap певного DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool для обміну токенів. Шлях обміну налаштований на [USDC, токен зловмисника, USDT].
У процесі обміну зловмисники використали функцію зворотного виклику кастомного токен-контракту, повторно викликавши функцію ExchangeWithAtomic.depositAsset через метод Token.Transfer, що призвело до постійного накопичення суми депозиту. Врешті-решт, зловмисники завершили отримання прибутку через операцію виведення.
! [Аналіз атаки повторного входу 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. Ця функція викликає функцію _doSwapTokens, яка оновлює змінну curBalance після переказу токенів. Зловмисник додав логіку зворотного виклику у функції transfer свого власного токена, викликавши функцію depositAsset, що призвело до помилкового оновлення 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(
Відтворення атаки
Зловмисник атакує, створюючи кастомний контракт ERC20 токенів та використовуючи функцію миттєвого кредитування певної DEX для здійснення атаки. Головні кроки включають:
Створення користувацького токена та встановлення торгових пар з USDC, USDT
Підготуйте початковий капітал і забезпечте ліквідність
Викликати функції depositAsset та swapThroughOrionPool контракту ExchangeWithAtomic
Додайте логіку зворотного виклику в функцію transfer власного токена
В кінцевому підсумку витягніть прибуткові кошти за допомогою функції withdraw
! [Аналіз атаки повторного входу 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, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
OrionProtocol зазнав повторної атаки на 2,9 мільйона, кошти частково потрапили до перемикача криптовалюти
Аналіз випадку атаки повторного входу на OrionProtocol
2 лютого 2023 року в другій половині дня OrionProtocol зазнав атаки повторного входу через вразливість контракту на Ethereum та Binance Smart Chain, загальні збитки склали близько 2,9 мільйона доларів США. Конкретні збитки включають 2 844 766 USDT на ланцюзі Ethereum та 191 606 BUSD на ланцюзі Binance Smart.
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт кастомного токена та провів відповідні операції з переказу та авторизації, готуючись до подальшої атаки. Потім зловмисник здійснив позичку через метод swap певного DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool для обміну токенів. Шлях обміну налаштований на [USDC, токен зловмисника, USDT].
У процесі обміну зловмисники використали функцію зворотного виклику кастомного токен-контракту, повторно викликавши функцію ExchangeWithAtomic.depositAsset через метод Token.Transfer, що призвело до постійного накопичення суми депозиту. Врешті-решт, зловмисники завершили отримання прибутку через операцію виведення.
! [Аналіз атаки повторного входу 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. Ця функція викликає функцію _doSwapTokens, яка оновлює змінну curBalance після переказу токенів. Зловмисник додав логіку зворотного виклику у функції transfer свого власного токена, викликавши функцію depositAsset, що призвело до помилкового оновлення 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(
Відтворення атаки
Зловмисник атакує, створюючи кастомний контракт ERC20 токенів та використовуючи функцію миттєвого кредитування певної DEX для здійснення атаки. Головні кроки включають:
! [Аналіз атаки повторного входу 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(
Рекомендації щодо безпеки
Щоб уникнути подібних атак, проектна команда повинна звернути увагу на такі моменти:
Ця подія ще раз підкреслює важливість безпеки смарт-контрактів, команди проекту повинні постійно звертати увагу на покращення своїх заходів безпеки, щоб захистити активи користувачів і підтримувати репутацію платформи.