OrionProtocol зазнав атаки повторного входу, втратив 2,9 мільйона доларів США у шифруванні активів.

robot
Генерація анотацій у процесі

Аналіз інциденту атаки повторного входу OrionProtocol

2 лютого 2023 року вдень Orion Protocol на Ethereum та Binance Smart Chain зазнав повторного нападу через вразливість контракту, втративши приблизно 2,9 мільйона доларів США, з яких 2 844 766 USDT на Ethereum та 191 606 BUSD на Binance Smart Chain.

! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201

Аналіз процесу атаки

Зловмисник спочатку створив контракт токена та провів відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник взяв кредит через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів. Шлях обміну був налаштований на USDC → Токен, створений зловмисником → USDT.

! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(

Під час обміну, через функцію зворотного виклику, яка міститься в контракті токенів, створеному зловмисником, під час виконання методу ExchangeWithAtomic.swapThroughOrionPool, через Token.Transfer продовжується зворотний виклик методу ExchangeWithAtomic.depositAsset, що викликає атаку повторного входу. Це призводить до постійного накопичення суми депозиту, в результаті чого зловмисник отримує прибуток через операцію зняття.

! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(

Рух коштів

Початкові кошти зловмисника походять з гарячого гаманця певної торгової платформи. З 1,651 ETH, отриманих у прибуток, 657.5 залишаються на гаманці зловмисника, решта була переміщена через службу змішування.

! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(

Аналіз вразливостей

Основна проблема вразливості виникає в функції doSwapThroughOrionPool. Ця функція викликає функцію _doSwapTokens, де операція переказу токенів відбувається до оновлення curBalance. Зловмисник використовує функцію зворотного виклику, додану в функцію transfer власного токена, щоб повторно викликати функцію depositAsset до оновлення curBalance, що призводить до неправильного оновлення curBalance. Врешті-решт, зловмисник після погашення миттєвого кредиту викликає функцію 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(

Рекомендації щодо запобігання

  1. При проектуванні контракту слід враховувати потенційні ризики, які можуть виникнути через різні токени та шляхи обміну.

  2. Дотримуючись кодувальної норми "спочатку перевірка, потім оновлення змінних, а зрештою виконання зовнішніх викликів" (модель Checks-Effects-Interactions), можна ефективно підвищити безпеку контракту.

  3. При реалізації функції обміну токенів потрібно особливо звернути увагу на ризик повторних атак, можна розглянути використання механізмів, таких як замки повторного входу, для захисту.

  4. Для ключових функцій, що стосуються операцій з фінансами, рекомендується провести всебічний аудит безпеки та тестування, включаючи моделювання різних граничних випадків та аномальних сценаріїв.

  5. Регулярно проводьте перевірку безпеки контрактів, вчасно оновлюйте та виправляйте потенційні вразливості.

Завдяки вжиттю цих заходів можна значно знизити ризик атаки на смарт-контракти та підвищити загальну безпеку проекту. У екосистемі Web3 безпека завжди є одним із найважливіших факторів.

TOKEN-3.06%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Репост
  • Поділіться
Прокоментувати
0/400
GasFeeCriervip
· 19год тому
Не зробили захист контракту? Самі винні!
Переглянути оригіналвідповісти на0
AirdropBuffetvip
· 08-12 21:06
Ще один смартконтракт помер~
Переглянути оригіналвідповісти на0
ZenMinervip
· 08-12 21:05
Діра така велика, чому ж не запитали мене про аудит?
Переглянути оригіналвідповісти на0
HallucinationGrowervip
· 08-12 21:00
Ще одна можливість для шахрайства
Переглянути оригіналвідповісти на0
TokenStormvip
· 08-12 20:57
Ой, сценарій вже написаний, залишився лише один крок.
Переглянути оригіналвідповісти на0
ZKProofEnthusiastvip
· 08-12 20:36
Ще один випадок шахрайства з пасткою?
Переглянути оригіналвідповісти на0
  • Закріпити