Аналіз інциденту з повторним атакою на OrionProtocol
2 лютого 2023 року о 15:40 OrionProtocol на Ethereum та Binance Smart Chain зазнав повторного атаки через уразливість контракту, загальні збитки склали близько 2,9 мільйона доларів США, з яких на Ethereum було втрачено 2,844,766 USDT, а на Binance Smart Chain - 191,606 BUSD.
Аналіз процесу атаки
Зловмисник спочатку розгорнув власний токен-контракт та виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник отримав кредит через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів. Шлях обміну було налаштовано на [USDC, токен зловмисника, USDT].
Під час процесу обміну, через те, що в контракті токена атакуючого є функція зворотного виклику, стало можливим повторне викликання методу 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 в контракті ExchangeWithAtomic та її виклик функції _doSwapTokens. Ці функції оновлюють змінну curBalance лише після виконання переказу Token, що надає можливість зловмисникам скористатися атакою повторного входу.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Зловмисник, додавши логіку зворотного виклику в функцію transfer власного токена, змушує її знову викликати функцію depositAsset під час процесу переказу. Це призводить до помилкового оновлення змінної curBalance, що дозволяє зловмиснику вилучати надмірні кошти через функцію withdraw після погашення миттєвого кредиту.
! [Аналіз атаки повторного входу 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, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
15 лайків
Нагородити
15
4
Поділіться
Прокоментувати
0/400
CryptoSurvivor
· 07-09 04:25
Досить вже, ще одна пухлина
Переглянути оригіналвідповісти на0
GateUser-5854de8b
· 07-06 19:22
Ай, знову мене обдурили з кліповими купонами.
Переглянути оригіналвідповісти на0
SurvivorshipBias
· 07-06 19:21
Знову вразливість контракту...
Переглянути оригіналвідповісти на0
CoconutWaterBoy
· 07-06 19:08
Якщо ви не проводите аудит коду, то заслужено втрачаєте гроші.
OrionProtocol зазнав повторної атаки, втративши близько 2,9 мільйона доларів
Аналіз інциденту з повторним атакою на OrionProtocol
2 лютого 2023 року о 15:40 OrionProtocol на Ethereum та Binance Smart Chain зазнав повторного атаки через уразливість контракту, загальні збитки склали близько 2,9 мільйона доларів США, з яких на Ethereum було втрачено 2,844,766 USDT, а на Binance Smart Chain - 191,606 BUSD.
Аналіз процесу атаки
Зловмисник спочатку розгорнув власний токен-контракт та виконав відповідні операції з передачі та авторизації, готуючи ґрунт для подальшої атаки. Потім зловмисник отримав кредит через метод swap UNI-V2 і викликав метод swapThroughOrionPool контракту ExchangeWithAtomic для обміну токенів. Шлях обміну було налаштовано на [USDC, токен зловмисника, USDT].
Під час процесу обміну, через те, що в контракті токена атакуючого є функція зворотного виклику, стало можливим повторне викликання методу 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 в контракті ExchangeWithAtomic та її виклик функції _doSwapTokens. Ці функції оновлюють змінну curBalance лише після виконання переказу Token, що надає можливість зловмисникам скористатися атакою повторного входу.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Зловмисник, додавши логіку зворотного виклику в функцію transfer власного токена, змушує її знову викликати функцію depositAsset під час процесу переказу. Це призводить до помилкового оновлення змінної curBalance, що дозволяє зловмиснику вилучати надмірні кошти через функцію withdraw після погашення миттєвого кредиту.
! [Аналіз атаки повторного входу 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(
Рекомендації з безпеки
Для проектів з функцією обміну токенів слід врахувати такі моменти:
Завдяки вжиттю цих заходів проект може значно знизити ризик піддавання подібним атакам, підвищивши безпеку та стабільність контракту.