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

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

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

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

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

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

Атакуючи спочатку розгорнули власний контракт токенів та провели відповідну підготовку. Потім атакуючий здійснив позичання через функцію обміну певного DEX та викликав метод swapThroughOrionPool протоколу Orion для обміну токенів. У маршруті обміну було включено адресу контракту токенів, створеного атакуючим, що підготувало ґрунт для подальшої атаки через зворотний виклик.

При виконанні методу swapThroughOrionPool, через те, що в контракті токена атакуючого міститься логіка зворотного виклику, це призвело до того, що під час переказу спровокувався повторний напад. Атакуючий використовував метод Token.Transfer для багаторазового виклику функції ExchangeWithAtomic.depositAsset, в результаті чого сума депозиту постійно накопичувалася. Врешті-решт, атакуючий завершив отримання прибутку через операцію виведення.

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

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

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

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

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

Головна проблема полягає у функції doSwapThroughOrionPool. Ця функція має логічний дефект під час виконання операції _doSwapTokens. Зокрема, контракт оновлює змінну curBalance лише після завершення переказу, що дає можливість зловмиснику. Зловмисник, додаючи логіку зворотного виклику у функцію transfer свого користувацького токена, багаторазово викликав функцію depositAsset, що призвело до неправильного оновлення curBalance. В результаті, після повернення миттєвого кредиту, зловмисник успішно вилучив надмірні кошти.

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

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

TOKEN-8.51%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 8
  • Поділіться
Прокоментувати
0/400
LidoStakeAddictvip
· 07-17 03:22
Ще одна свиня належить до так
Переглянути оригіналвідповісти на0
NervousFingersvip
· 07-14 05:42
Знову один проект був Кліпові купони...
Переглянути оригіналвідповісти на0
TokenUnlockervip
· 07-14 04:00
Ще одна вразливість повторного входу без блокування?
Переглянути оригіналвідповісти на0
GasSavingMastervip
· 07-14 03:59
Поточні технології теж не дуже.
Переглянути оригіналвідповісти на0
PanicSeller69vip
· 07-14 03:58
Знову вибухнуло, о боже!
Переглянути оригіналвідповісти на0
PortfolioAlertvip
· 07-14 03:37
Ще одна жертва вразливостей контрактів...
Переглянути оригіналвідповісти на0
SerumSqueezervip
· 07-14 03:36
Знову дірки і щілини, це вже який раз?
Переглянути оригіналвідповісти на0
ForkTonguevip
· 07-14 03:33
Знову атака повторного введення, ці проєкти ще не засвоїли урок?
Переглянути оригіналвідповісти на0
  • Закріпити