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

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

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

2 лютого 2023 року вдень проект OrionProtocol на Ethereum та Binance Smart Chain зазнав повторного нападу через вразливість контракту. Зловмисники вкрали близько 2,84 мільйона USDT з мережі Ethereum та близько 190 тисяч BUSD з Binance Smart Chain, загальні збитки становлять приблизно 2,9 мільйона доларів.

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

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

У процесі обміну зловмисник скористався функцією зворотного виклику кастомного контракту Token, багаторазово викликавши метод ExchangeWithAtomic.depositAsset, що призвело до багаторазового накопичення суми депозиту. Врешті-решт, зловмисник завершив отримання прибутку шляхом операції зняття.

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

Напрямок коштів

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

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

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

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

Відтворення атаки

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

! [Аналіз атаки повторного входу 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 про те, що, прагнучи інновацій, необхідно приділяти увагу безпеці смарт-контрактів. Тільки побудувавши більш безпечну та надійну інфраструктуру, можна сприяти здоровому розвитку всієї індустрії.

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 8
  • Поділіться
Прокоментувати
0/400
ShadowStakervip
· 07-08 21:29
ще один день, ще одна експлуатація defi... коли ж розробники навчаться перевіряти повторні виклики, смх
Переглянути оригіналвідповісти на0
TokenTherapistvip
· 07-07 15:54
Ще один впав.
Переглянути оригіналвідповісти на0
GasWastervip
· 07-06 14:26
Знову вкрали
Переглянути оригіналвідповісти на0
SigmaBrainvip
· 07-05 22:13
Знову атака повторного входу. Ситуація виглядає так, ніби захист зламано.
Переглянути оригіналвідповісти на0
ponzi_poetvip
· 07-05 22:13
А де ж безпека?
Переглянути оригіналвідповісти на0
GetRichLeekvip
· 07-05 22:13
Передній ряд їсть кавуни. Аудит контрактів не може бути проведений належним чином, втрата жахлива.
Переглянути оригіналвідповісти на0
BearMarketGardenervip
· 07-05 22:07
Контракт знову вибухнув, эх.
Переглянути оригіналвідповісти на0
DaoGovernanceOfficervip
· 07-05 22:00
*зітхання* з емпіричної точки зору, 99% цих зломів походять від основних недоліків управління станом...
Переглянути оригіналвідповісти на0
  • Закріпити