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

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

Анализ инцидента с повторным входом OrionProtocol

2 февраля 2023 года в послеобеденное время проект OrionProtocol на Ethereum и Binance Smart Chain подвергся атаке повторного входа из-за уязвимости контракта, в результате чего было потеряно около 2,9 миллиона долларов активов, включая 2 844 766 USDT на Ethereum и 191 606 BUSD на Binance Smart Chain.

! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201

Анализ процесса атаки

Атакующий сначала развернул специальный токен-контракт и провел ряд подготовительных работ. Затем атакующий взял в долг средства через функцию обмена某DEX и вызвал метод ExchangeWithAtomic.swapThroughOrionPool протокола OrionProtocol для обмена токенов. В маршруте обмена присутствует адрес токен-контракта, созданного атакующим, что подготовило почву для последующей атаки через обратный вызов.

В процессе обмена, из-за того, что в контракте токена злоумышленника содержится логика обратного вызова, при выполнении операции перевода произошло повторное вызов метода 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 контракта ExchangeWithAtomic. Эта функция при выполнении обмена токенов неправильно обрабатывает возможные ситуации повторного входа. В частности, в функции _doSwapTokens переменная curBalance обновляется только после операции перевода токенов, что предоставляет злоумышленникам возможность для атаки.

Атакующий добавил логику обратного вызова в функцию transfer собственного токена, что привело к вызову функции depositAsset при каждом переводе, что привело к неправильному обновлению переменной curBalance. В конечном итоге, после возврата флеш-кредита, атакующий вывел избыточные средства через функцию withdraw.

! [Анализ атак на ре-энтерназии 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(

Воспроизведение уязвимости

Исследователи предоставили часть кода POC, демонстрирующего, как использовать уязвимость для атаки. Код в основном имитирует действия атакующего, включая создание поддельного токена, настройку ликвидного пула, проведение мгновенного кредита и атаки повторного входа.

! [Анализ атак на повторный вход 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 безопасность всегда должна быть первоочередным фактором.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 4
  • Поделиться
комментарий
0/400
SleepTradervip
· 8ч назад
Еще один новичок по контракту получил пощечину
Посмотреть ОригиналОтветить0
StablecoinEnjoyervip
· 8ч назад
Снова сбежал, не учится на ошибках.
Посмотреть ОригиналОтветить0
GetRichLeekvip
· 9ч назад
Повседневно обманывают с контрактами Клиповые купоны хахахаха
Посмотреть ОригиналОтветить0
MemeEchoervip
· 9ч назад
Опять легли, похоже, смарт-контракты все-таки надо писать серьезно.
Посмотреть ОригиналОтветить0
  • Закрепить