OrionProtocol подвергся атаке повторного входа, 2,9 миллиона долларов были украдены.

robot
Генерация тезисов в процессе

Анализ атаки повторного входа на 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(

Рекомендации по предотвращению

Чтобы избежать подобных атак, команде проекта следует обратить внимание на следующие моменты при разработке контракта:

  1. При реализации функции обмена токенами необходимо всесторонне учитывать возможные риски безопасности, связанные с различными типами токенов и путями обмена.

  2. Строго следуйте кодексу "Проверки-Эффекты-Взаимодействия" (Checks-Effects-Interactions), то есть сначала выполняйте проверку состояния, затем обновляйте состояние контракта, и только после этого выполняйте внешние вызовы.

  3. Внедрить замок повторного входа в ключевых операциях, чтобы предотвратить атаки повторного входа.

  4. Регулярно проводить аудит кода для своевременного выявления и устранения потенциальных уязвимостей безопасности.

  5. Рассмотрите возможность введения механизма задержки вывода средств, чтобы предоставить возможность ручного вмешательства в случае аномальных транзакций.

Принятие этих мер может значительно повысить безопасность смарт-контрактов и снизить риск атак. В экосистеме Web3 безопасность всегда является первоочередным фактором.

TOKEN-9.1%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 8
  • Поделиться
комментарий
0/400
LidoStakeAddictvip
· 07-17 03:22
Еще один свинья принадлежит
Посмотреть ОригиналОтветить0
NervousFingersvip
· 07-14 05:42
Еще один проект被 Клиповые купоны...
Посмотреть ОригиналОтветить0
TokenUnlockervip
· 07-14 04:00
Еще одна уязвимость повторного входа без блокировки?
Посмотреть ОригиналОтветить0
GasSavingMastervip
· 07-14 03:59
Текущие технологии тоже не очень-то хороши.
Посмотреть ОригиналОтветить0
PanicSeller69vip
· 07-14 03:58
Снова взорвалось, а хорошая работа!
Посмотреть ОригиналОтветить0
PortfolioAlertvip
· 07-14 03:37
Еще одна жертва уязвимости контракта...
Посмотреть ОригиналОтветить0
SerumSqueezervip
· 07-14 03:36
Сколько раз это уже было с дырами и щелями?
Посмотреть ОригиналОтветить0
ForkTonguevip
· 07-14 03:33
Снова атака повторного входа, эти проекты все еще не извлекают уроки?
Посмотреть ОригиналОтветить0
  • Закрепить