Аналіз інциденту атаки повторного входу OrionProtocol
Огляд події
Згідно з даними моніторингу в блокчейні, 2 лютого 2023 року о 15:40:20 UTC, OrionProtocol зазнав повторної атаки через вразливість контракту на Ethereum та Binance Smart Chain. Зловмисники отримали прибуток у розмірі 2,844,766 USDT з мережі Ethereum та 191,606 BUSD з Binance Smart Chain, що в сумі становить приблизно 2,9 мільйона доларів.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Аналіз процесу атаки
) Деталі атаки на ланцюг Ефіріум
користувацький токен
! [Аналіз атаки повторного входу OriionProtocol з PoC]###https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Під час процесу обміну, через наявність функції зворотного виклику в токен-контракті, створеному зловмисником, під час виконання ExchangeWithAtomic.swapThroughOrionPool зловмисник зміг повторно викликати функцію ExchangeWithAtomic.depositAsset за допомогою методу Token.Transfer. Це призвело до постійного накопичення суми депозиту, в результаті чого зловмисник отримав прибуток через операцію виведення.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Напрямки грошових потоків
Джерелом початкового фінансування зловмисника став гарячий гаманець великої торгової платформи. З 1 651 ETH, отриманих внаслідок атаки, 657,5 ETH все ще залишаються на гаманці зловмисника, а решта була переміщена через послугу змішування.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
Аналіз вразливостей
Основна проблема вразливості виникає у функції doSwapThroughOrionPool. Ця функція оновлює змінну curBalance після виконання переказу токенів, не дотримуючись моделі "Перевірки-Ефекти-Взаємодії" (Checks-Effects-Interactions). Зловмисник використовує механізм зворотного виклику, доданий у функцію transfer власного токена, щоб кілька разів викликати функцію depositAsset до оновлення curBalance, що призводить до помилки в обчисленні балансу.
! [Аналіз атаки повторного входу 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(
Рекомендації щодо запобігання
Команда проекту повинна враховувати різноманітні типи токенів та можливі ризики безпеки, які можуть виникнути внаслідок шляхів обміну, під час розробки контракту, що стосується функцій обміну токенів.
Строго дотримуйтесь кодових стандартів "перевірка - ефект - взаємодія", тобто спочатку проводьте перевірку умов, потім оновлюйте змінні стану, і лише потім виконуйте зовнішні виклики.
Для функцій, які можуть піддаватися ризику повторного входу, використовуйте механізми захисту, такі як замки повторного входу.
Додайте перевірку балансу перед і після ключових операцій, щоб забезпечити атомарність та узгодженість транзакцій.
Регулярно проводити аудит коду та безпекові тести, своєчасно виявляти та усувати потенційні вразливості.
Розгляньте можливість впровадження обмежень на суму угоди або частоту угод, щоб зменшити втрати від одноразових атак.
Завдяки вжиттю цих заходів, проєкт може значно підвищити безпеку контрактів і зменшити ризик зазнати подібних атак. У швидко розвиваючійся екосистемі Web3 безпека завжди повинна бути пріоритетним фактором.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
11 лайків
Нагородити
11
4
Поділіться
Прокоментувати
0/400
BearMarketGardener
· 8год тому
Ще один повторний вхід, всі капустини вже закінчилися.
Переглянути оригіналвідповісти на0
Token_Sherpa
· 17год тому
ех... ще один день, ще одна атака повторного входу. коли ж розробники навчаться перевіряти ефекти-взаємодії, смх
Переглянути оригіналвідповісти на0
SmartContractWorker
· 17год тому
Знову знову знову відбулося повторне входження, все гаразд
OrionProtocol зазнав повторного нападу на 2,9 мільйона доларів США: аналіз уразливостей та рекомендації щодо запобігання
Аналіз інциденту атаки повторного входу OrionProtocol
Огляд події
Згідно з даними моніторингу в блокчейні, 2 лютого 2023 року о 15:40:20 UTC, OrionProtocol зазнав повторної атаки через вразливість контракту на Ethereum та Binance Smart Chain. Зловмисники отримали прибуток у розмірі 2,844,766 USDT з мережі Ethereum та 191,606 BUSD з Binance Smart Chain, що в сумі становить приблизно 2,9 мільйона доларів.
! [Аналіз атаки повторного входу OrionProtocol з PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Аналіз процесу атаки
) Деталі атаки на ланцюг Ефіріум
користувацький токен
! [Аналіз атаки повторного входу OriionProtocol з PoC]###https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Під час процесу обміну, через наявність функції зворотного виклику в токен-контракті, створеному зловмисником, під час виконання ExchangeWithAtomic.swapThroughOrionPool зловмисник зміг повторно викликати функцію ExchangeWithAtomic.depositAsset за допомогою методу Token.Transfer. Це призвело до постійного накопичення суми депозиту, в результаті чого зловмисник отримав прибуток через операцію виведення.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Напрямки грошових потоків
Джерелом початкового фінансування зловмисника став гарячий гаманець великої торгової платформи. З 1 651 ETH, отриманих внаслідок атаки, 657,5 ETH все ще залишаються на гаманці зловмисника, а решта була переміщена через послугу змішування.
! [Аналіз атаки повторного входу OrionProtocol з PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
Аналіз вразливостей
Основна проблема вразливості виникає у функції doSwapThroughOrionPool. Ця функція оновлює змінну curBalance після виконання переказу токенів, не дотримуючись моделі "Перевірки-Ефекти-Взаємодії" (Checks-Effects-Interactions). Зловмисник використовує механізм зворотного виклику, доданий у функцію transfer власного токена, щоб кілька разів викликати функцію depositAsset до оновлення curBalance, що призводить до помилки в обчисленні балансу.
! [Аналіз атаки повторного входу 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(
Рекомендації щодо запобігання
Команда проекту повинна враховувати різноманітні типи токенів та можливі ризики безпеки, які можуть виникнути внаслідок шляхів обміну, під час розробки контракту, що стосується функцій обміну токенів.
Строго дотримуйтесь кодових стандартів "перевірка - ефект - взаємодія", тобто спочатку проводьте перевірку умов, потім оновлюйте змінні стану, і лише потім виконуйте зовнішні виклики.
Для функцій, які можуть піддаватися ризику повторного входу, використовуйте механізми захисту, такі як замки повторного входу.
Додайте перевірку балансу перед і після ключових операцій, щоб забезпечити атомарність та узгодженість транзакцій.
Регулярно проводити аудит коду та безпекові тести, своєчасно виявляти та усувати потенційні вразливості.
Розгляньте можливість впровадження обмежень на суму угоди або частоту угод, щоб зменшити втрати від одноразових атак.
Завдяки вжиттю цих заходів, проєкт може значно підвищити безпеку контрактів і зменшити ризик зазнати подібних атак. У швидко розвиваючійся екосистемі Web3 безпека завжди повинна бути пріоритетним фактором.