Аналіз події атаки повторного входу на OrionProtocol
2 лютого 2023 року вдень проект OrionProtocol на Ethereum та Binance Smart Chain зазнав атаки повторного входу через вразливість контракту, внаслідок чого було втрачено близько 2,9 мільйона доларів США в криптоактивах, зокрема 2,844,766 USDT (Ethereum) та 191,606 BUSD (BSC).
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт на власний токен і виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник позичив кошти через функцію swap певної децентралізованої біржі та викликав метод OrionProtocol ExchangeWithAtomic.swapThroughOrionPool для обміну токенів. Шлях обміну налаштовано на USDC → власний токен зловмисника → USDT.
Під час обміну зловмисник використовував функцію зворотного виклику в контракті кастомного токена, неодноразово викликаючи метод ExchangeWithAtomic.depositAsset, що призвело до накопичення суми депозиту. Врешті-решт, зловмисник завершив отримання прибутку за допомогою операції виведення.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Напрямок фінансів
Початкове фінансування атакуючого походить з гарячого гаманця великої торгової платформи. З 1,651 ETH, отриманих у результаті прибутку, 657,5 все ще залишаються на гаманці атакуючого, решта була переміщена за допомогою інструментів змішування.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Аналіз вразливостей
Основна проблема полягає в функції doSwapThroughOrionPool контракту ExchangeWithAtomic. Ця функція оновлює змінну 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(
! [Аналіз атаки повторного входу 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
6
Репост
Поділіться
Прокоментувати
0/400
ShamedApeSeller
· 07-24 12:02
Ще один охолоджений.
Переглянути оригіналвідповісти на0
CoffeeOnChain
· 07-24 09:46
Контрактний аудит не проводиться? Самі винні, що вас обдеруть.
Переглянути оригіналвідповісти на0
FlippedSignal
· 07-23 09:34
Знову обдурили
Переглянути оригіналвідповісти на0
SchrodingersFOMO
· 07-23 09:26
Ще не закінчили торгувати монетою, а монета вже вибухнула?
Переглянути оригіналвідповісти на0
ETHReserveBank
· 07-23 09:25
Знову онлайн-навчання від майстрів 0day
Переглянути оригіналвідповісти на0
FlatlineTrader
· 07-23 09:15
Ще не вмієш захищатися від атак повторного входу? Хочеш померти?
OrionProtocol зазнав повторного нападу, втративши 2.9 мільйона доларів США шифрування активів
Аналіз події атаки повторного входу на OrionProtocol
2 лютого 2023 року вдень проект OrionProtocol на Ethereum та Binance Smart Chain зазнав атаки повторного входу через вразливість контракту, внаслідок чого було втрачено близько 2,9 мільйона доларів США в криптоактивах, зокрема 2,844,766 USDT (Ethereum) та 191,606 BUSD (BSC).
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт на власний токен і виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник позичив кошти через функцію swap певної децентралізованої біржі та викликав метод OrionProtocol ExchangeWithAtomic.swapThroughOrionPool для обміну токенів. Шлях обміну налаштовано на USDC → власний токен зловмисника → USDT.
Під час обміну зловмисник використовував функцію зворотного виклику в контракті кастомного токена, неодноразово викликаючи метод ExchangeWithAtomic.depositAsset, що призвело до накопичення суми депозиту. Врешті-решт, зловмисник завершив отримання прибутку за допомогою операції виведення.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Напрямок фінансів
Початкове фінансування атакуючого походить з гарячого гаманця великої торгової платформи. З 1,651 ETH, отриманих у результаті прибутку, 657,5 все ще залишаються на гаманці атакуючого, решта була переміщена за допомогою інструментів змішування.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Аналіз вразливостей
Основна проблема полягає в функції doSwapThroughOrionPool контракту ExchangeWithAtomic. Ця функція оновлює змінну 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(
! [Аналіз атаки повторного входу 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), уникаючи зовнішніх викликів перед оновленням стану.
Під час реалізації функції обміну токенів необхідно врахувати різні типи токенів і потенційні ризики безпеки, пов'язані з шляхами обміну.
Додати механізми безпеки, такі як повторний замок, щоб запобігти атакам повторного входу.
Впровадження контролю доступу та обмежень для ключових операцій.
Провести всебічний аудит безпеки, зокрема звертаючи увагу на основні функції, пов'язані з операціями з коштами.
Ця подія ще раз підкреслює важливість безпеки смарт-контрактів. Проектним командам слід постійно звертати увагу на безпеку контрактів, регулярно проводити аудит коду та виправлення вразливостей, щоб забезпечити безпеку активів користувачів. Водночас користувачі повинні залишатися насторожі під час участі в нових проектах, звертаючи увагу на стан безпеки проекту та звіти про аудит.