Аналіз інциденту атаки повторного входу OrionProtocol
2 лютого 2023 року вдень Orion Protocol на Ethereum та Binance Chain зазнав атак з повторним входом через вразливість контракту, що призвело до втрат приблизно в 2,9 мільйона доларів. Конкретні втрати включають 2,844,766 USDT на Ethereum та 191,606 BUSD на Binance Chain.
Аналіз процесу атаки
Зловмисник спочатку створив токен-контракт і виконав операції з його передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник здійснив запозичення через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів.
Налаштування шляху обміну: [USDC, токен, створений атакуючим, USDT]. Під час процесу обміну, завдяки наявності функції зворотного виклику в контракті токена, атакуючий зміг продовжувати зворотний виклик методу depositAsset контракту ExchangeWithAtomic за допомогою методу Transfer токена, що призвело до атаки з повторним входом, внаслідок чого сума депозиту постійно накопичувалася. Врешті-решт, атакуючий завершив отримання прибутку через операцію зняття.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Аналіз вразливостей
Ядро вразливості полягає у функції doSwapThroughOrionPool контракту ExchangeWithAtomic. При виконанні _doSwapTokens існує наступна проблема:
Змінюйте змінну curBalance тільки після операції переказу.
Не дотримано моделі "Перевірки-Ефекти-Взаємодії" (Checks-Effects-Interactions).
Зловмисники використали цю уразливість, додавши функцію зворотного виклику в функцію transfer підробленого контракту Token, щоб вона викликала функцію depositAsset під час переказу. Це призвело до неправильного оновлення змінної curBalance, і зловмисники змогли вивести надмірні кошти через функцію withdraw після повернення миттєвого кредиту.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [Аналіз атаки повторного входу 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,651 ETH, 657.5 ETH все ще залишаються на гаманці зловмисника, а решта була переведена через сервіс змішування.
Рекомендації щодо запобігання
Щоб уникнути подібних атак, команді проекту слід звернути увагу на такі моменти:
При проектуванні контракту необхідно враховувати можливі непередбачені ситуації, пов'язані з різними токенами та шляхами обміну.
Строго дотримуйтесь кодування "перевірка-ефект-взаємодія", щоб спочатку здійснити перевірку, потім оновити змінні стану, а потім виконати зовнішній виклик.
Для ключових операцій, що стосуються переказу коштів, впроваджуються більш жорсткі перевірки безпеки та обмеження.
Регулярно проводити аудит безпеки контрактів, своєчасно виявляти та виправляти потенційні вразливості.
Ця подія ще раз нагадує нам, що безпека є надзвичайно важливою у розробці смарт-контрактів. Команди проекту повинні завжди бути насторожі, вживаючи кілька заходів захисту, щоб звести до мінімуму ризики контракту.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
OrionProtocol зазнав повторного атаки, втративши 2900000 доларів США USDT та BUSD
Аналіз інциденту атаки повторного входу OrionProtocol
2 лютого 2023 року вдень Orion Protocol на Ethereum та Binance Chain зазнав атак з повторним входом через вразливість контракту, що призвело до втрат приблизно в 2,9 мільйона доларів. Конкретні втрати включають 2,844,766 USDT на Ethereum та 191,606 BUSD на Binance Chain.
Аналіз процесу атаки
Зловмисник спочатку створив токен-контракт і виконав операції з його передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник здійснив запозичення через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів.
Налаштування шляху обміну: [USDC, токен, створений атакуючим, USDT]. Під час процесу обміну, завдяки наявності функції зворотного виклику в контракті токена, атакуючий зміг продовжувати зворотний виклик методу depositAsset контракту ExchangeWithAtomic за допомогою методу Transfer токена, що призвело до атаки з повторним входом, внаслідок чого сума депозиту постійно накопичувалася. Врешті-решт, атакуючий завершив отримання прибутку через операцію зняття.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Аналіз вразливостей
Ядро вразливості полягає у функції doSwapThroughOrionPool контракту ExchangeWithAtomic. При виконанні _doSwapTokens існує наступна проблема:
Зловмисники використали цю уразливість, додавши функцію зворотного виклику в функцію transfer підробленого контракту Token, щоб вона викликала функцію depositAsset під час переказу. Це призвело до неправильного оновлення змінної curBalance, і зловмисники змогли вивести надмірні кошти через функцію withdraw після повернення миттєвого кредиту.
! [Аналіз атаки повторного входу OriionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [Аналіз атаки повторного входу 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,651 ETH, 657.5 ETH все ще залишаються на гаманці зловмисника, а решта була переведена через сервіс змішування.
Рекомендації щодо запобігання
Щоб уникнути подібних атак, команді проекту слід звернути увагу на такі моменти:
Ця подія ще раз нагадує нам, що безпека є надзвичайно важливою у розробці смарт-контрактів. Команди проекту повинні завжди бути насторожі, вживаючи кілька заходів захисту, щоб звести до мінімуму ризики контракту.