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.

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

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

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

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

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

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

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

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

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

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

! [Аналіз атаки повторного входу 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 безпека завжди повинна бути основним фактором.

TOKEN3.4%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 5
  • Поділіться
Прокоментувати
0/400
EntryPositionAnalystvip
· 6год тому
Знову команда неуважна, заплатить за це і запам'ятає.
Переглянути оригіналвідповісти на0
BearMarketSurvivorvip
· 6год тому
Головний фронт знову піддався атакі, втрати 290w
Переглянути оригіналвідповісти на0
PaperHandSistervip
· 6год тому
Знову Рект Чому постійно витягуєте з контрактів дірки?
Переглянути оригіналвідповісти на0
NeverVoteOnDAOvip
· 6год тому
Знову вразливість контракту, без кінця.
Переглянути оригіналвідповісти на0
BearMarketSurvivorvip
· 6год тому
Знову темно? Які ще гаманці є безпечними?
Переглянути оригіналвідповісти на0
  • Закріпити