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.

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

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

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

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

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

Потоки капіталу

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

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

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

Основна проблема атаки полягає у функції doSwapThroughOrionPool контракту ExchangeWithAtomic. Ця функція не обробляє належним чином можливі ситуації повторного входу під час обробки обміну токенів. Конкретно, у функції _doSwapTokens змінна curBalance оновлюється лише після операції переказу токенів, що надає можливість зловмиснику.

Зловмисники, додавши логіку зворотного виклику до функції transfer власного токена, викликали функцію depositAsset під час кожного переказу, що призвело до помилкового оновлення змінної curBalance. Врешті-решт, після повернення швидкозайму, зловмисники витягли надмірні кошти за допомогою функції withdraw.

! [Аналіз атаки повторного входу 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(

Відтворення вразливості

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

! [Аналіз атаки повторного входу 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, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 4
  • Поділіться
Прокоментувати
0/400
SleepTradervip
· 8год тому
Ще один контрактний новачок отримав по заслугах.
Переглянути оригіналвідповісти на0
StablecoinEnjoyervip
· 8год тому
Знову втекли, не вчитеся на своїх помилках.
Переглянути оригіналвідповісти на0
GetRichLeekvip
· 9год тому
Щоденно отримую кліпові купони з контрактів хахахах
Переглянути оригіналвідповісти на0
MemeEchoervip
· 9год тому
Знову ліг, виявляється, смартконтракти все ж потрібно серйозно писати
Переглянути оригіналвідповісти на0
  • Закріпити