Анализ инцидента с атакой повторного входа на OrionProtocol
2 февраля 2023 года в 15:40:20 UTC Orion Protocol на Ethereum и Binance Smart Chain подвергся атаке повторного входа из-за уязвимости контракта. Злоумышленник получил прибыль в 2,844,766 USDT из сети Ethereum и 191,606 BUSD из Binance Smart Chain, общие убытки составили около 2,9 миллиона долларов.
Анализ процесса атаки
Атакующий сначала развернул кастомный Token контракт и провел ряд подготовительных работ. Затем атакующий взял в долг средства через функцию swap какого-то DEX и вызвал метод OrionProtocol ExchangeWithAtomic.swapThroughOrionPool для обмена токенов. Путь обмена включал адрес контракта токена, созданного атакующим, что заложило основу для последующей обратной атаки.
В процессе обмена, из-за того, что в контракте Token злоумышленника содержится логика обратного вызова, каждая передача вызывает повторный вызов метода ExchangeWithAtomic.depositAsset. Это приводит к многократному увеличению суммы депозита, и в конечном итоге злоумышленник получает чрезмерную прибыль через операции вывода.
! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Направление денежных средств
Начальный капитал злоумышленника поступил из горячего кошелька одной из торговых платформ. После успешной атаки из прибыли в 1,651 ETH, 657.5 ETH все еще остаются на кошельке злоумышленника, а остальная часть была переведена с помощью сервиса смешивания.
! [Анализ атак на повторный вход OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Анализ уязвимостей
Суть уязвимости заключается в функциях doSwapThroughOrionPool и _doSwapTokens контракта ExchangeWithAtomic. Эти функции обновляют переменную curBalance только после выполнения перевода токенов, что дает возможность злоумышленнику использовать атаку повторного входа. Злоумышленник добавляет логику обратного вызова в функцию transfer своего пользовательского токена, что приводит к неправильному обновлению curBalance, позволяя ему извлекать дополнительные средства даже после погашения кредита.
! [Анализ атаки на ре-энтерназии 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/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
! [Анализ атаки повторного входа OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
Воспроизведение атаки
Исследователи предоставили часть кода POC, смоделировавшего процесс атаки. Результаты тестирования показали, что злоумышленник успешно использовал уязвимость контракта для получения дополнительного USDT.
! [Анализ реэнтронансной атаки 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 или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
20 Лайков
Награда
20
10
Репост
Поделиться
комментарий
0/400
ColdWalletGuardian
· 08-14 12:21
Уязвимости непросто предотвратить.
Посмотреть ОригиналОтветить0
NestedFox
· 08-14 11:36
Это действительно громко грянуло?
Посмотреть ОригиналОтветить0
ImpermanentLossEnjoyer
· 08-14 11:01
Непостоянные потери的日常啦
Посмотреть ОригиналОтветить0
rug_connoisseur
· 08-12 04:38
Еще один смарт-контракт провалился.
Посмотреть ОригиналОтветить0
SchroedingerGas
· 08-11 18:57
Снова кого-то облапошили.
Посмотреть ОригиналОтветить0
DAOTruant
· 08-11 18:57
Еще один контракт был стянут.
Посмотреть ОригиналОтветить0
MainnetDelayedAgain
· 08-11 18:56
Еще один случай попадания в статистическую базу данных, это действительно не должно было произойти.
Посмотреть ОригиналОтветить0
GateUser-5854de8b
· 08-11 18:51
Снова контракт был украден...
Посмотреть ОригиналОтветить0
MEV_Whisperer
· 08-11 18:51
Снова реентри, сваливаю!
Посмотреть ОригиналОтветить0
SignatureVerifier
· 08-11 18:37
*вздох* еще одна ошибка повторного входа в учебнике. статистически неизбежно при недостаточных проверках валидации. если честно, я это предвидел.
OrionProtocol подвергся реентерационному атаке, убытки составили около 2,9 миллиона долларов.
Анализ инцидента с атакой повторного входа на OrionProtocol
2 февраля 2023 года в 15:40:20 UTC Orion Protocol на Ethereum и Binance Smart Chain подвергся атаке повторного входа из-за уязвимости контракта. Злоумышленник получил прибыль в 2,844,766 USDT из сети Ethereum и 191,606 BUSD из Binance Smart Chain, общие убытки составили около 2,9 миллиона долларов.
Анализ процесса атаки
Атакующий сначала развернул кастомный Token контракт и провел ряд подготовительных работ. Затем атакующий взял в долг средства через функцию swap какого-то DEX и вызвал метод OrionProtocol ExchangeWithAtomic.swapThroughOrionPool для обмена токенов. Путь обмена включал адрес контракта токена, созданного атакующим, что заложило основу для последующей обратной атаки.
В процессе обмена, из-за того, что в контракте Token злоумышленника содержится логика обратного вызова, каждая передача вызывает повторный вызов метода ExchangeWithAtomic.depositAsset. Это приводит к многократному увеличению суммы депозита, и в конечном итоге злоумышленник получает чрезмерную прибыль через операции вывода.
! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Направление денежных средств
Начальный капитал злоумышленника поступил из горячего кошелька одной из торговых платформ. После успешной атаки из прибыли в 1,651 ETH, 657.5 ETH все еще остаются на кошельке злоумышленника, а остальная часть была переведена с помощью сервиса смешивания.
! [Анализ атак на повторный вход OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Анализ уязвимостей
Суть уязвимости заключается в функциях doSwapThroughOrionPool и _doSwapTokens контракта ExchangeWithAtomic. Эти функции обновляют переменную curBalance только после выполнения перевода токенов, что дает возможность злоумышленнику использовать атаку повторного входа. Злоумышленник добавляет логику обратного вызова в функцию transfer своего пользовательского токена, что приводит к неправильному обновлению curBalance, позволяя ему извлекать дополнительные средства даже после погашения кредита.
! [Анализ атаки на ре-энтерназии 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/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
! [Анализ атаки повторного входа OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
Воспроизведение атаки
Исследователи предоставили часть кода POC, смоделировавшего процесс атаки. Результаты тестирования показали, что злоумышленник успешно использовал уязвимость контракта для получения дополнительного USDT.
! [Анализ реэнтронансной атаки 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(
Рекомендации по безопасности
В случае таких атак рекомендуется стороне проекта:
Это событие вновь подчеркивает важность безопасности смарт-контрактов. Команды проекта должны постоянно следить за вопросами безопасности, принимать комплексные меры защиты, чтобы обеспечить безопасность активов пользователей и долгосрочную стабильность проекта.