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

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

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

2 лютого 2023 року о 15:40:20 (UTC) 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

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

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

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

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

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

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

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

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

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

Основна проблема полягає в функціях doSwapThroughOrionPool та _doSwapTokens в контракті ExchangeWithAtomic. Ці функції оновлюють змінну curBalance тільки після виконання переказу токенів, що створює умови для атаки повторного входу. Зловмисник, додавши логіку зворотного виклику в функцію transfer свого власного токена, успішно викликав функцію depositAsset, що призвело до неправильного оновлення 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. Дотримуйтесь моделі "Перевірки-Ефекти-Взаємодії" (Checks-Effects-Interactions): спочатку оновіть стан контракту перед виконанням зовнішнього виклику.

  2. Використання повторного замка: заблокувати перед початком чутливих операцій, розблокувати після закінчення, щоб запобігти повторному входу.

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

  4. Обмеження суми одноразової угоди: встановіть розумні торгові ліміти, щоб знизити потенційні втрати.

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

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

  7. Оптимізуйте логіку коду: переконайтеся, що зовнішні виклики виконуються лише після оновлення критичних змінних стану.

  8. Запровадження механізму реагування на надзвичайні ситуації: розробити вдосконалений план реагування, щоб швидко реагувати на атаки та мінімізувати втрати.

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

TOKEN-1.77%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 5
  • Поділіться
Прокоментувати
0/400
ZenMinervip
· 07-21 00:33
Безпека контрактів залежить від аудиту.
Переглянути оригіналвідповісти на0
DAOplomacyvip
· 07-21 00:30
ще одна субоптимальна помилка в управлінні, смх...
Переглянути оригіналвідповісти на0
GweiTooHighvip
· 07-21 00:24
Ще один обман для дурнів
Переглянути оригіналвідповісти на0
DeFiAlchemistvip
· 07-21 00:22
*регулює ефірні окуляри* ще одна душа падає під темні мистецтва повторного входу... містичні бар'єри протоколу були занадто слабкими
Переглянути оригіналвідповісти на0
PessimisticLayervip
· 07-21 00:08
Ще 300w? Це дрібниця.
Переглянути оригіналвідповісти на0
  • Закріпити