2 лютого 2023 року о 15:40:20 UTC Orion Protocol на Ethereum та Binance Smart Chain зазнав атаки повторного входу через вразливість контракту. Зловмисник отримав прибуток у розмірі 2,844,766 USDT з мережі Ethereum та 191,606 BUSD з Binance Smart Chain, загальні збитки склали близько 2,9 мільйона доларів.
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт на кастомний токен і здійснив низку підготовчих заходів. Потім зловмисник за допомогою функції swap певного DEX позичив кошти і викликав метод ExchangeWithAtomic.swapThroughOrionPool протоколу OrionProtocol для обміну токенів. Шлях обміну містить адресу контракту токена, створеного зловмисником, що закладає основу для подальшої атаки зворотного виклику.
У процесі обміну, через те, що в контракті токенів зловмисника міститься логіка зворотного виклику, кожен переказ викликає повторний виклик методу 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 та _doSwapTokens контракту ExchangeWithAtomic. Ці функції оновлюють змінну curBalance лише після виконання передачі токенів, що надає зловмисникові можливість використати атаку повторного входу. Зловмисник додає логіку зворотного виклику у функцію transfer свого власного токена, що призводить до неправильного оновлення curBalance, внаслідок чого після погашення флеш-кредиту він все ще може вилучити додаткові кошти.
! [Аналіз атаки повторного входу 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(
Відтворення атаки
Дослідники надали частину коду POC, яка моделює процес атаки. Тестові результати показали, що атакуючий успішно використав вразливість контракту для отримання додаткових USDT.
! [Аналіз атаки повторного входу 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, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
20 лайків
Нагородити
20
10
Репост
Поділіться
Прокоментувати
0/400
ColdWalletGuardian
· 08-14 12:21
Уразливості важко уникнути.
Переглянути оригіналвідповісти на0
NestedFox
· 08-14 11:36
Це вибухнуло, так?
Переглянути оригіналвідповісти на0
ImpermanentLossEnjoyer
· 08-14 11:01
Непостійні втрати的日常啦
Переглянути оригіналвідповісти на0
rug_connoisseur
· 08-12 04:38
Ще один смартконтракт провалився
Переглянути оригіналвідповісти на0
SchroedingerGas
· 08-11 18:57
знову обдерли кого
Переглянути оригіналвідповісти на0
DAOTruant
· 08-11 18:57
Ще один контракт був зірваний.
Переглянути оригіналвідповісти на0
MainnetDelayedAgain
· 08-11 18:56
Ще один випадок внесення в статистичну базу даних, це справді не повинно бути.
Переглянути оригіналвідповісти на0
GateUser-5854de8b
· 08-11 18:51
Знову угоду вкрали...
Переглянути оригіналвідповісти на0
MEV_Whisperer
· 08-11 18:51
Знову реінтрія, тікаю, тікаю
Переглянути оригіналвідповісти на0
SignatureVerifier
· 08-11 18:37
*с sigh* ще один провал повторного входу в підручнику. статистично неминучий з недостатніми перевірками валідації. чесно кажучи, я це передбачав.
OrionProtocol зазнав атаки повторного входу, втратили близько 2,9 мільйона доларів.
Аналіз події повторного входу OrionProtocol
2 лютого 2023 року о 15:40:20 UTC Orion Protocol на Ethereum та Binance Smart Chain зазнав атаки повторного входу через вразливість контракту. Зловмисник отримав прибуток у розмірі 2,844,766 USDT з мережі Ethereum та 191,606 BUSD з Binance Smart Chain, загальні збитки склали близько 2,9 мільйона доларів.
Аналіз процесу атаки
Зловмисник спочатку розгорнув контракт на кастомний токен і здійснив низку підготовчих заходів. Потім зловмисник за допомогою функції swap певного DEX позичив кошти і викликав метод ExchangeWithAtomic.swapThroughOrionPool протоколу OrionProtocol для обміну токенів. Шлях обміну містить адресу контракту токена, створеного зловмисником, що закладає основу для подальшої атаки зворотного виклику.
У процесі обміну, через те, що в контракті токенів зловмисника міститься логіка зворотного виклику, кожен переказ викликає повторний виклик методу 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 та _doSwapTokens контракту ExchangeWithAtomic. Ці функції оновлюють змінну curBalance лише після виконання передачі токенів, що надає зловмисникові можливість використати атаку повторного входу. Зловмисник додає логіку зворотного виклику у функцію transfer свого власного токена, що призводить до неправильного оновлення curBalance, внаслідок чого після погашення флеш-кредиту він все ще може вилучити додаткові кошти.
! [Аналіз атаки повторного входу 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(
Відтворення атаки
Дослідники надали частину коду POC, яка моделює процес атаки. Тестові результати показали, що атакуючий успішно використав вразливість контракту для отримання додаткових USDT.
! [Аналіз атаки повторного входу 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(
Рекомендації з безпеки
Щодо таких атак, рекомендуємо проектам:
Ця подія ще раз підкреслила важливість безпеки смарт-контрактів. Команда проекту повинна постійно звертати увагу на проблеми безпеки, вживати комплексних заходів захисту, щоб забезпечити безпеку активів користувачів і довгострокову стабільність розвитку проекту.