Аналіз інциденту атаки повторного входу OrionProtocol
2 лютого 2023 року OrionProtocol зазнав атаки з повторного входу в мережі Ethereum та Binance Smart Chain, внаслідок чого було втрачено приблизно 2,9 мільйона доларів США. Зловмисники скористалися вразливістю в контракті, вкрали 2 844 766 USDT в мережі Ethereum та 191 606 BUSD в мережі Binance Smart Chain.
Процес атаки
Зловмисник спочатку розгорнув контракт на користувацький токен і виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник позичив кошти через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів.
Налаштування шляху обміну на [USDC, Токен атакуючого, USDT]. Ключовим є те, що токен-контракт, створений атакуючим, містить функцію зворотного виклику. Під час обміну атакуючий використовує метод 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 контракту ExchangeWithAtomic. Ця функція під час виконання операції _doSwapTokens спочатку здійснює переказ, а потім оновлює змінну curBalance. Зловмисник, додавши логіку зворотного виклику у функцію transfer свого користувацького токена, призвів до помилкового оновлення 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(
Рекомендації щодо запобігання
Проектування контракту повинно дотримуватись моделі "Перевірки-Ефекти-Взаємодії" (Checks-Effects-Interactions), спочатку оновити змінні стану, а потім виконати зовнішні виклики.
Реалізувати механізми захисту від повторного входу, такі як повторний замок.
Щодо функцій, пов'язаних з обміном токенів, слід повністю врахувати потенційні ризики безпеки, які можуть виникнути через різні типи токенів та шляхи обміну.
Посилити аудит коду, зокрема звертаючи увагу на ключові функції, що стосуються операцій з фінансами.
Розгляньте можливість впровадження додаткових заходів безпеки, таких як обмеження на суму угоди або таймлок.
Регулярно проводити оцінку безпеки та пенетраційне тестування, вчасно виявляти та виправляти потенційні вразливості.
Ця подія знову підкреслила важливість безпеки смарт-контрактів. Команди проекту повинні постійно звертати увагу на безпеку контрактів, вживаючи багаторазових заходів захисту, щоб максимально знизити ризики безпеки.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
OrionProtocol зазнав атаки повторного входу, втративши 2900000 USDT та BUSD
Аналіз інциденту атаки повторного входу OrionProtocol
2 лютого 2023 року OrionProtocol зазнав атаки з повторного входу в мережі Ethereum та Binance Smart Chain, внаслідок чого було втрачено приблизно 2,9 мільйона доларів США. Зловмисники скористалися вразливістю в контракті, вкрали 2 844 766 USDT в мережі Ethereum та 191 606 BUSD в мережі Binance Smart Chain.
Процес атаки
Зловмисник спочатку розгорнув контракт на користувацький токен і виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник позичив кошти через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів.
Налаштування шляху обміну на [USDC, Токен атакуючого, USDT]. Ключовим є те, що токен-контракт, створений атакуючим, містить функцію зворотного виклику. Під час обміну атакуючий використовує метод 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 контракту ExchangeWithAtomic. Ця функція під час виконання операції _doSwapTokens спочатку здійснює переказ, а потім оновлює змінну curBalance. Зловмисник, додавши логіку зворотного виклику у функцію transfer свого користувацького токена, призвів до помилкового оновлення 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(
Рекомендації щодо запобігання
Проектування контракту повинно дотримуватись моделі "Перевірки-Ефекти-Взаємодії" (Checks-Effects-Interactions), спочатку оновити змінні стану, а потім виконати зовнішні виклики.
Реалізувати механізми захисту від повторного входу, такі як повторний замок.
Щодо функцій, пов'язаних з обміном токенів, слід повністю врахувати потенційні ризики безпеки, які можуть виникнути через різні типи токенів та шляхи обміну.
Посилити аудит коду, зокрема звертаючи увагу на ключові функції, що стосуються операцій з фінансами.
Розгляньте можливість впровадження додаткових заходів безпеки, таких як обмеження на суму угоди або таймлок.
Регулярно проводити оцінку безпеки та пенетраційне тестування, вчасно виявляти та виправляти потенційні вразливості.
Ця подія знову підкреслила важливість безпеки смарт-контрактів. Команди проекту повинні постійно звертати увагу на безпеку контрактів, вживаючи багаторазових заходів захисту, щоб максимально знизити ризики безпеки.