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

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

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

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

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

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

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

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

Напрямок руху капіталу

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

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

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

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

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

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

Дослідники надали частину POC-коду, що демонструє, як використовувати цю вразливість для атаки. Результати тестування показали, що зловмисник успішно отримав додаткові USDT.

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

  3. Впровадження механізмів безпеки, таких як замок повторного входу, для запобігання атакам повторного входу.

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

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

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

TOKEN-2.9%
ETH-0.14%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Репост
  • Поділіться
Прокоментувати
0/400
LadderToolGuyvip
· 16год тому
Безпека контрактів дуже важлива
Переглянути оригіналвідповісти на0
GreenCandleCollectorvip
· 21год тому
Ще один невдах очищено
Переглянути оригіналвідповісти на0
LowCapGemHuntervip
· 08-09 16:52
вечірка проєкту занадто неуважна
Переглянути оригіналвідповісти на0
NeverPresentvip
· 08-07 03:18
Ще одна безглузда уразливість
Переглянути оригіналвідповісти на0
ProposalDetectivevip
· 08-07 03:17
Вразливості контракту шкодять людям
Переглянути оригіналвідповісти на0
GateUser-a606bf0cvip
· 08-07 03:14
Контрактна яма!
Переглянути оригіналвідповісти на0
GateUser-c802f0e8vip
· 08-07 03:13
Активи знову втекли.
Переглянути оригіналвідповісти на0
  • Закріпити