Аналіз інциденту з реінвазійною атакою на OrionProtocol
2 лютого 2023 року в післяобідній час контракти OrionProtocol на Ethereum та Binance Chain зазнали повторної атаки через наявність вразливості. Зловмисник успішно викрав близько 2,9 мільйона доларів, зокрема 2,844,766 USDT на Ethereum та 191,606 BUSD на BSC.
Аналіз процесу атаки
Атакуючий спочатку створив спеціальний токен-контракт і виконав операції з його передачі та авторизації, готуючи все для подальшої атаки. Після цього атакуючий здійснює позичку за допомогою методу swap UNI-V2 та викликає метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів.
Налаштування маршруту обміну на [USDC, токен, створений атакаючим, USDT]. Під час процесу обміну, через те, що контракт токена, створеного атакаючим, містить функцію зворотного виклику, це призвело до активації атаки повторного входу під час виконання методу ExchangeWithAtomic.swapThroughOrionPool. Атакаючий продовжував викликати метод ExchangeWithAtomic.depositAsset через Token.Transfer, що призвело до безперервного накопичення суми депозиту і, врешті-решт, через операцію виведення завершив отримання прибутку.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Напрямок коштів
Початкові кошти зловмисника походять з гарячого гаманця певної торгової платформи. З 1,651 ефірів, отриманих у результаті атаки, 657,5 залишилися на гаманці зловмисника, а решта була переміщена через послугу змішування.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Аналіз вразливостей
Основна проблема у вразливості виникає в функції doSwapThroughOrionPool. Ця функція оновлює змінну curBalance після виконання передачі токенів, що створює можливість для атаки. Атакуючий додав функцію зворотного виклику у функцію transfer свого створеного контракту Token, яка знову викликає функцію 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(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/social/moments-7c4bde9d6a35da4304844a3bb934fae(
Відтворення атаки
Дослідники надали частину POC-коду, що симулює процес атаки. Результати тестування показали, що атакуючий успішно використав вразливість контракту для отримання додаткових USDT.
! [Аналіз атаки повторного входу 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).
При реалізації функції обміну токенів особливо звертайте увагу на запобігання атакам повторного входу.
Регулярно проводити аудит коду, своєчасно виявляти та виправляти потенційні вразливості.
Розгляньте можливість впровадження обмежень на суму угоди або інших заходів контролю ризиків.
Ця подія ще раз підкреслила важливість безпеки смарт-контрактів. Команди проєктів повинні постійно звертати увагу на безпеку контрактів, вживаючи активних заходів для захисту активів користувачів, щоб підтримувати здоровий розвиток всієї екосистеми Web3.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
16 лайків
Нагородити
16
6
Поділіться
Прокоментувати
0/400
SybilSlayer
· 07-28 15:34
Знову повторне входження, справді нудно.
Переглянути оригіналвідповісти на0
CantAffordPancake
· 07-28 11:05
Знову вразливість у контракті, вражає.
Переглянути оригіналвідповісти на0
GateUser-26d7f434
· 07-25 18:03
Мабуть, настане час шахрайства~
Переглянути оригіналвідповісти на0
OvertimeSquid
· 07-25 17:55
Знову контракт було Кліпові купони, дивись, як це дратує.
Переглянути оригіналвідповісти на0
BrokenYield
· 07-25 17:55
інший день, ще один хак в defi... вразливості протоколу ніколи не сплять
OrionProtocol зазнав повторного нападу, було вкрадено близько 3 мільйонів доларів.
Аналіз інциденту з реінвазійною атакою на OrionProtocol
2 лютого 2023 року в післяобідній час контракти OrionProtocol на Ethereum та Binance Chain зазнали повторної атаки через наявність вразливості. Зловмисник успішно викрав близько 2,9 мільйона доларів, зокрема 2,844,766 USDT на Ethereum та 191,606 BUSD на BSC.
Аналіз процесу атаки
Атакуючий спочатку створив спеціальний токен-контракт і виконав операції з його передачі та авторизації, готуючи все для подальшої атаки. Після цього атакуючий здійснює позичку за допомогою методу swap UNI-V2 та викликає метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів.
Налаштування маршруту обміну на [USDC, токен, створений атакаючим, USDT]. Під час процесу обміну, через те, що контракт токена, створеного атакаючим, містить функцію зворотного виклику, це призвело до активації атаки повторного входу під час виконання методу ExchangeWithAtomic.swapThroughOrionPool. Атакаючий продовжував викликати метод ExchangeWithAtomic.depositAsset через Token.Transfer, що призвело до безперервного накопичення суми депозиту і, врешті-решт, через операцію виведення завершив отримання прибутку.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Напрямок коштів
Початкові кошти зловмисника походять з гарячого гаманця певної торгової платформи. З 1,651 ефірів, отриманих у результаті атаки, 657,5 залишилися на гаманці зловмисника, а решта була переміщена через послугу змішування.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Аналіз вразливостей
Основна проблема у вразливості виникає в функції doSwapThroughOrionPool. Ця функція оновлює змінну curBalance після виконання передачі токенів, що створює можливість для атаки. Атакуючий додав функцію зворотного виклику у функцію transfer свого створеного контракту Token, яка знову викликає функцію 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(
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/social/moments-7c4bde9d6a35da4304844a3bb934fae(
Відтворення атаки
Дослідники надали частину POC-коду, що симулює процес атаки. Результати тестування показали, що атакуючий успішно використав вразливість контракту для отримання додаткових USDT.
! [Аналіз атаки повторного входу 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(
Рекомендації щодо безпеки
Щодо таких атак, рекомендується, щоб проектні сторони врахували наступні моменти при розробці контракту:
Ця подія ще раз підкреслила важливість безпеки смарт-контрактів. Команди проєктів повинні постійно звертати увагу на безпеку контрактів, вживаючи активних заходів для захисту активів користувачів, щоб підтримувати здоровий розвиток всієї екосистеми Web3.