Анализ инцидента с атакой повторного входа OrionProtocol
2 февраля 2023 года OrionProtocol подвергся атаке повторного входа на Ethereum и Binance Smart Chain, в результате чего общие потери составили около 2,9 миллиона долларов. Злоумышленники использовали уязвимость контракта, чтобы украсть 2 844 766 USDT в сети Ethereum и 191 606 BUSD в сети Binance Smart Chain.
Процесс атаки
Атакующий сначала развернул пользовательский токен-контракт и выполнил соответствующие операции по передаче и авторизации, готовя почву для последующей атаки. Затем атакующий взял заем через метод swap UNI-V2 и вызвал метод swapThroughOrionPool контракта ExchangeWithAtomic для обмена токенов.
Настройте путь обмена на [USDC, Токен атакующего, USDT]. Ключевым моментом является то, что смарт-контракт токена, созданного атакующим, содержит функцию обратного вызова. В процессе обмена атакующий использует метод Token.Transfer для вызова функции 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 контракта ExchangeWithAtomic. Эта функция при выполнении операции _doSwapTokens сначала проводит перевод, а затем обновляет переменную curBalance. Злоумышленник добавил обратную логику в функцию transfer своего пользовательского токена, что привело к неправильному обновлению curBalance. Это позволило злоумышленнику извлечь избыточные средства через функцию withdraw после погашения флеш-займа.
! [Анализ атаки на ре-энтерназии 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(
! [Анализ реэнтронансной атаки 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), сначала обновляя переменные состояния, а затем выполняя внешние вызовы.
Реализация механизмов защиты от повторного входа, таких как замки повторного входа.
Для функций, связанных с обменом токенов, необходимо全面 учитывать возможные угрозы безопасности, связанные с различными типами токенов и путями обмена.
Укрепить аудит кода, особенно обратить внимание на ключевые функции, связанные с операциями с финансами.
Рассмотрите возможность введения дополнительных мер безопасности, таких как ограничение суммы сделки или таймлок.
Периодически проводить оценку безопасности и тестирование на проникновение, своевременно выявлять и устранять потенциальные уязвимости.
Данный инцидент еще раз подчеркивает важность безопасности смарт-контрактов. Команды проекта должны постоянно следить за безопасностью контрактов, принимать меры многоуровневой защиты, чтобы минимизировать риски безопасности.
Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
24 Лайков
Награда
24
6
Поделиться
комментарий
0/400
NewPumpamentals
· 07-11 03:48
Каждый день подвергаюсь атакам на мошенничество
Посмотреть ОригиналОтветить0
HodlBeliever
· 07-08 12:16
Типичные риски контрактов
Посмотреть ОригиналОтветить0
0xSoulless
· 07-08 08:06
Реентрация всегда является больной темой
Посмотреть ОригиналОтветить0
PaperHandSister
· 07-08 08:03
упущено сестра сегодня сильно плакала
Посмотреть ОригиналОтветить0
AirdropHunterXM
· 07-08 08:02
Это снова инцидент с повторным входом.
Посмотреть ОригиналОтветить0
ChainWatcher
· 07-08 07:55
Еще одна компания, которую обманули с помощью Клиповые купоны
OrionProtocol подвергся атаке повторного входа, потеряв 2,9 миллиона долларов USDT и BUSD.
Анализ инцидента с атакой повторного входа OrionProtocol
2 февраля 2023 года OrionProtocol подвергся атаке повторного входа на Ethereum и Binance Smart Chain, в результате чего общие потери составили около 2,9 миллиона долларов. Злоумышленники использовали уязвимость контракта, чтобы украсть 2 844 766 USDT в сети Ethereum и 191 606 BUSD в сети Binance Smart Chain.
Процесс атаки
Атакующий сначала развернул пользовательский токен-контракт и выполнил соответствующие операции по передаче и авторизации, готовя почву для последующей атаки. Затем атакующий взял заем через метод swap UNI-V2 и вызвал метод swapThroughOrionPool контракта ExchangeWithAtomic для обмена токенов.
Настройте путь обмена на [USDC, Токен атакующего, USDT]. Ключевым моментом является то, что смарт-контракт токена, созданного атакующим, содержит функцию обратного вызова. В процессе обмена атакующий использует метод Token.Transfer для вызова функции 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 контракта ExchangeWithAtomic. Эта функция при выполнении операции _doSwapTokens сначала проводит перевод, а затем обновляет переменную curBalance. Злоумышленник добавил обратную логику в функцию transfer своего пользовательского токена, что привело к неправильному обновлению curBalance. Это позволило злоумышленнику извлечь избыточные средства через функцию withdraw после погашения флеш-займа.
! [Анализ атаки на ре-энтерназии 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(
! [Анализ реэнтронансной атаки 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), сначала обновляя переменные состояния, а затем выполняя внешние вызовы.
Реализация механизмов защиты от повторного входа, таких как замки повторного входа.
Для функций, связанных с обменом токенов, необходимо全面 учитывать возможные угрозы безопасности, связанные с различными типами токенов и путями обмена.
Укрепить аудит кода, особенно обратить внимание на ключевые функции, связанные с операциями с финансами.
Рассмотрите возможность введения дополнительных мер безопасности, таких как ограничение суммы сделки или таймлок.
Периодически проводить оценку безопасности и тестирование на проникновение, своевременно выявлять и устранять потенциальные уязвимости.
Данный инцидент еще раз подчеркивает важность безопасности смарт-контрактов. Команды проекта должны постоянно следить за безопасностью контрактов, принимать меры многоуровневой защиты, чтобы минимизировать риски безопасности.