2 февраля 2023 года контракт OrionProtocol на Ethereum и Binance Smart Chain подвергся повторным атакам из-за уязвимости. Злоумышленники успешно похитили около 2,9 миллиона долларов, включая 2,844,766 USDT на цепочке Ethereum и 191,606 BUSD на Binance Smart Chain.
Анализ процесса атаки
Злоумышленник сначала развернул контракт на кастомный токен и выполнил операции по передаче и авторизации этого токена, подготавливаясь к последующим атакам. Затем злоумышленник использовал функцию обмена Uniswap V2 для заимствования средств и вызвал метод ExchangeWithAtomic.swapThroughOrionPool от OrionProtocol для обмена токенов.
! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Путь обмена установлен как: USDC → Кастомный токен нападающего → USDT
В процессе обмена, из-за того что пользовательский токен контракта атакующего содержит функцию обратного вызова, при переводе токена можно снова вызвать метод 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. Эта функция обновляет переменную 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) при написании смарт-контрактов.
Используйте замки повторного входа или аналогичные механизмы для предотвращения атак повторного входа.
При использовании функции обмена токенами необходимо учитывать потенциальные риски безопасности, связанные с различными типами токенов и возможными путями обмена.
Проведение комплексного аудита безопасности, включая статический анализ, динамическое тестирование и ручную проверку.
Постоянно мониторить активность контрактов и установить механизм быстрой реакции.
Это событие еще раз подчеркивает, что безопасность всегда должна быть первоочередным фактором при разработке и развертывании смарт-контрактов. Проектные команды должны постоянно совершенствовать меры безопасности, чтобы защитить активы пользователей и поддерживать репутацию платформы.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
13 Лайков
Награда
13
7
Репост
Поделиться
комментарий
0/400
CryptoCrazyGF
· 08-16 01:00
Снова украли токены, не зря Медвежий рынок влияет на результаты.
Посмотреть ОригиналОтветить0
FUD_Vaccinated
· 08-14 03:57
Снова будут играть для лохов
Посмотреть ОригиналОтветить0
GateUser-aa7df71e
· 08-13 22:35
Еще один неудачник с косой. Смотрите мой анализ на заднем плане.
Посмотреть ОригиналОтветить0
CoinBasedThinking
· 08-13 22:34
Снова этот старый трюк с повторным входом
Посмотреть ОригиналОтветить0
HalfBuddhaMoney
· 08-13 22:29
Ещё один классический провал смарт-контрактов, деньги неудачников не защищены.
Посмотреть ОригиналОтветить0
NewPumpamentals
· 08-13 22:26
Снова атака повторного входа. Когда это закончится?
OrionProtocol подвергся атаке повторного входа на сумму 2,9 миллиона долларов: анализ кражи средств и рекомендации по предотвращению
Анализ инцидента с повторным входом OrionProtocol
2 февраля 2023 года контракт OrionProtocol на Ethereum и Binance Smart Chain подвергся повторным атакам из-за уязвимости. Злоумышленники успешно похитили около 2,9 миллиона долларов, включая 2,844,766 USDT на цепочке Ethereum и 191,606 BUSD на Binance Smart Chain.
Анализ процесса атаки
Злоумышленник сначала развернул контракт на кастомный токен и выполнил операции по передаче и авторизации этого токена, подготавливаясь к последующим атакам. Затем злоумышленник использовал функцию обмена Uniswap V2 для заимствования средств и вызвал метод ExchangeWithAtomic.swapThroughOrionPool от OrionProtocol для обмена токенов.
! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
Путь обмена установлен как: USDC → Кастомный токен нападающего → USDT
В процессе обмена, из-за того что пользовательский токен контракта атакующего содержит функцию обратного вызова, при переводе токена можно снова вызвать метод 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. Эта функция обновляет переменную 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(
Рекомендации по предотвращению
Чтобы предотвратить подобные атаки, команде проекта следует обратить внимание на следующие моменты:
Это событие еще раз подчеркивает, что безопасность всегда должна быть первоочередным фактором при разработке и развертывании смарт-контрактов. Проектные команды должны постоянно совершенствовать меры безопасности, чтобы защитить активы пользователей и поддерживать репутацию платформы.