2 февраля 2023 года после полудня контракты 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
Анализ процесса атаки
Атакующий сначала развернул пользовательский контракт Token и выполнил соответствующую подготовку. Затем атакующий использовал функцию swap на некоторой DEX для займа и вызвал метод swapThroughOrionPool протокола Orion для обмена токенов. В пути обмена был адрес контракта Token, созданного атакующим, что подготовило почву для последующей атаки через обратный вызов.
При выполнении метода swapThroughOrionPool, из-за того что в контракте токена злоумышленника содержится логика обратного вызова, во время трансакции произошло срабатывание атаки повторного входа. Злоумышленник использовал метод Token.Transfer для многократного вызова функции ExchangeWithAtomic.depositAsset, что привело к постоянному увеличению суммы депозита. В конечном итоге злоумышленник закончил свою прибыльную операцию путем вывода средств.
! [Анализ атак на повторный вход OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Направление средств
Исходные средства злоумышленника поступили из горячего кошелька одной из торговых платформ. Из 1,651 ETH, полученных в результате атаки, 657.5 ETH все еще находятся в кошельке злоумышленника, а остальная часть была переведена через сервис смешивания.
![Анализ повторного использования атак OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Анализ уязвимостей
Основная проблема заключается в функции doSwapThroughOrionPool. Эта функция имеет логический дефект при выполнении операции _doSwapTokens. В частности, контракт обновляет переменную curBalance только после завершения перевода, что предоставляет возможность для атаки. Атакующий добавляет логику обратного вызова в функцию transfer пользовательского токена и многократно вызывает функцию depositAsset, что приводит к ошибочному обновлению curBalance. В конечном итоге, после погашения флеш-кредита, атакующий успешно извлекает избыточные средства.
! [Анализ атак на ре-энтерназии 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(
! [Анализ реэнтронансной атаки 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), то есть сначала выполняйте проверку состояния, затем обновляйте состояние контракта, и только после этого выполняйте внешние вызовы.
Внедрить замок повторного входа в ключевых операциях, чтобы предотвратить атаки повторного входа.
Регулярно проводить аудит кода для своевременного выявления и устранения потенциальных уязвимостей безопасности.
Рассмотрите возможность введения механизма задержки вывода средств, чтобы предоставить возможность ручного вмешательства в случае аномальных транзакций.
Принятие этих мер может значительно повысить безопасность смарт-контрактов и снизить риск атак. В экосистеме Web3 безопасность всегда является первоочередным фактором.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
16 Лайков
Награда
16
8
Поделиться
комментарий
0/400
LidoStakeAddict
· 07-17 03:22
Еще один свинья принадлежит
Посмотреть ОригиналОтветить0
NervousFingers
· 07-14 05:42
Еще один проект被 Клиповые купоны...
Посмотреть ОригиналОтветить0
TokenUnlocker
· 07-14 04:00
Еще одна уязвимость повторного входа без блокировки?
Посмотреть ОригиналОтветить0
GasSavingMaster
· 07-14 03:59
Текущие технологии тоже не очень-то хороши.
Посмотреть ОригиналОтветить0
PanicSeller69
· 07-14 03:58
Снова взорвалось, а хорошая работа!
Посмотреть ОригиналОтветить0
PortfolioAlert
· 07-14 03:37
Еще одна жертва уязвимости контракта...
Посмотреть ОригиналОтветить0
SerumSqueezer
· 07-14 03:36
Сколько раз это уже было с дырами и щелями?
Посмотреть ОригиналОтветить0
ForkTongue
· 07-14 03:33
Снова атака повторного входа, эти проекты все еще не извлекают уроки?
OrionProtocol подвергся атаке повторного входа, 2,9 миллиона долларов были украдены.
Анализ атаки повторного входа на OrionProtocol
2 февраля 2023 года после полудня контракты 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
Анализ процесса атаки
Атакующий сначала развернул пользовательский контракт Token и выполнил соответствующую подготовку. Затем атакующий использовал функцию swap на некоторой DEX для займа и вызвал метод swapThroughOrionPool протокола Orion для обмена токенов. В пути обмена был адрес контракта Token, созданного атакующим, что подготовило почву для последующей атаки через обратный вызов.
При выполнении метода swapThroughOrionPool, из-за того что в контракте токена злоумышленника содержится логика обратного вызова, во время трансакции произошло срабатывание атаки повторного входа. Злоумышленник использовал метод Token.Transfer для многократного вызова функции ExchangeWithAtomic.depositAsset, что привело к постоянному увеличению суммы депозита. В конечном итоге злоумышленник закончил свою прибыльную операцию путем вывода средств.
! [Анализ атак на повторный вход OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
Направление средств
Исходные средства злоумышленника поступили из горячего кошелька одной из торговых платформ. Из 1,651 ETH, полученных в результате атаки, 657.5 ETH все еще находятся в кошельке злоумышленника, а остальная часть была переведена через сервис смешивания.
![Анализ повторного использования атак OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Анализ уязвимостей
Основная проблема заключается в функции doSwapThroughOrionPool. Эта функция имеет логический дефект при выполнении операции _doSwapTokens. В частности, контракт обновляет переменную curBalance только после завершения перевода, что предоставляет возможность для атаки. Атакующий добавляет логику обратного вызова в функцию transfer пользовательского токена и многократно вызывает функцию depositAsset, что приводит к ошибочному обновлению curBalance. В конечном итоге, после погашения флеш-кредита, атакующий успешно извлекает избыточные средства.
! [Анализ атак на ре-энтерназии 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(
! [Анализ реэнтронансной атаки 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), то есть сначала выполняйте проверку состояния, затем обновляйте состояние контракта, и только после этого выполняйте внешние вызовы.
Внедрить замок повторного входа в ключевых операциях, чтобы предотвратить атаки повторного входа.
Регулярно проводить аудит кода для своевременного выявления и устранения потенциальных уязвимостей безопасности.
Рассмотрите возможность введения механизма задержки вывода средств, чтобы предоставить возможность ручного вмешательства в случае аномальных транзакций.
Принятие этих мер может значительно повысить безопасность смарт-контрактов и снизить риск атак. В экосистеме Web3 безопасность всегда является первоочередным фактором.