2 лютого 2023 року OrionProtocol зазнав атаки повторного входу на Ethereum та Binance Smart Chain, що призвело до збитків приблизно в 2,9 мільйона доларів. Зловмисники використали вразливість контракту, викравши 2,844,766 USDT на Ethereum та 191,606 BUSD на Binance Smart Chain.
Процес атаки
Зловмисник спочатку створив власний контракт токена і виконав відповідні операції з передачі та авторизації. Потім зловмисник взяв позичку через метод swap на певному DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool для обміну токенів. Шлях обміну містить адресу контракту токена, створеного зловмисником.
Під час процесу обміну, через наявність механізму зворотного виклику в контракті токена атакуючого, атакуючий зміг продовжити виклик методу ExchangeWithAtomic.depositAsset через Token.Transfer, що призвело до атаки повторного входу. Це призвело до того, що сума депозиту повторно накопичувалася, в результаті чого атакуючий отримав прибуток через операцію виведення.
! [Аналіз атаки повторного входу 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, що призвело до неправильного оновлення 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), тобто спочатку виконуйте перевірку умов, потім оновлюйте змінні стану, а вже потім виконуйте зовнішні виклики.
Використовуйте блокування повторного входу перед і після критичних операцій, щоб запобігти атакам повторного входу.
Провести перевірку безпеки токен-контракту для зовнішніх викликів.
Регулярно проводити аудит коду та тестування безпеки, своєчасно виявляти та усувати потенційні вразливості.
Вживаючи ці заходи, проект може суттєво підвищити безпеку та стабільність контракту, мінімізуючи ризик піддавання атакам.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
17 лайків
Нагородити
17
7
Поділіться
Прокоментувати
0/400
AirdropHunterXiao
· 9год тому
Блокчейн проект знову був обдертий.
Переглянути оригіналвідповісти на0
MemecoinResearcher
· 9год тому
ngmi... здається, прокляття повторного входу знову вражає fr fr
OrionProtocol зазнав повторної атаки на 2,9 мільйона доларів: детальний аналіз процесу атаки та рекомендації щодо запобігання.
Аналіз інциденту повторного входу OrionProtocol
2 лютого 2023 року OrionProtocol зазнав атаки повторного входу на Ethereum та Binance Smart Chain, що призвело до збитків приблизно в 2,9 мільйона доларів. Зловмисники використали вразливість контракту, викравши 2,844,766 USDT на Ethereum та 191,606 BUSD на Binance Smart Chain.
Процес атаки
Зловмисник спочатку створив власний контракт токена і виконав відповідні операції з передачі та авторизації. Потім зловмисник взяв позичку через метод swap на певному DEX і викликав метод ExchangeWithAtomic.swapThroughOrionPool для обміну токенів. Шлях обміну містить адресу контракту токена, створеного зловмисником.
Під час процесу обміну, через наявність механізму зворотного виклику в контракті токена атакуючого, атакуючий зміг продовжити виклик методу ExchangeWithAtomic.depositAsset через Token.Transfer, що призвело до атаки повторного входу. Це призвело до того, що сума депозиту повторно накопичувалася, в результаті чого атакуючий отримав прибуток через операцію виведення.
! [Аналіз атаки повторного входу 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, що призвело до неправильного оновлення 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(
Рекомендації щодо запобігання
Щоб запобігти подібним атакам, рекомендується командам проекту звернути увагу на наступні пункти при розробці контракту:
Вживаючи ці заходи, проект може суттєво підвищити безпеку та стабільність контракту, мінімізуючи ризик піддавання атакам.