OrionProtocol зазнав повторного нападу, втратили близько 2,9 мільйона доларів

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

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

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

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

Зловмисник спочатку розгорнув кастомний токен-контракт і провів низку операцій з переказу та авторизації для підготовки до подальшої атаки. Потім зловмисник взяв позику через функцію swap певного DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool протоколу OrionProtocol для обміну токенів. Шлях обміну встановлено на [USDC, токен зловмисника, USDT].

Під час виконання методу swapThroughOrionPool, через те, що в контракті токена зловмисника міститься функція зворотного виклику, під час процесу передачі коштів відбулась атака повторного входу. Зловмисник використав метод Token.Transfer для багаторазового виклику функції 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. Ця функція має логічний дефект під час виконання операції _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(

! [Аналіз атаки повторного входу 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. Використовуйте зрілі бібліотеки безпеки та найкращі практики, такі як SafeERC20 від OpenZeppelin.

Вжиття цих заходів може значно знизити ризик атаки на смарт-контракти та підвищити загальну безпеку проекту.

TOKEN1.47%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Репост
  • Поділіться
Прокоментувати
0/400
ser_ngmivip
· 21год тому
Знову немає грошей
Переглянути оригіналвідповісти на0
PretendingToReadDocsvip
· 21год тому
Щодня щось трапляється, навіщо це робити?
Переглянути оригіналвідповісти на0
LiquidityWizardvip
· 21год тому
Шахрайство预定~
Переглянути оригіналвідповісти на0
degenonymousvip
· 21год тому
невдахи знову обдурюють людей, як лохів
Переглянути оригіналвідповісти на0
CountdownToBrokevip
· 21год тому
Ще один вибухнув
Переглянути оригіналвідповісти на0
BoredApeResistancevip
· 21год тому
Знову вразливість контракту, наївся до сита.
Переглянути оригіналвідповісти на0
  • Закріпити