Анализ инцидента с атакой повторного входа на OrionProtocol
2 февраля 2023 года в 15:40:20 UTC контракты Orion Protocol на Ethereum и Binance Smart Chain подверглись атакам повторного входа из-за уязвимости. Злоумышленник заработал 2 844 766 USDT на Ethereum и 191 606 BUSD на Binance Smart Chain, в общей сложности около 2,9 миллиона долларов.
Анализ процесса атаки
Атакующий сначала развернул пользовательский контракт токена и выполнил соответствующие операции по передаче и авторизации, готовясь к последующей атаке.
Затем злоумышленник осуществляет заимствование через метод swap какого-то DEX и вызывает метод ExchangeWithAtomic.swapThroughOrionPool от OrionProtocol для обмена токенов. Путь обмена установлен как [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. Эта функция обновляет переменную curBalance после выполнения перевода токена, что создает условия для атаки повторного входа. Злоумышленник использует функцию обратного вызова transfer пользовательского токена для вызова метода depositAsset, что приводит к неправильному обновлению 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( при написании кода контракта, то есть сначала выполните проверку условий, затем обновите переменные состояния, и, наконец, выполните внешние вызовы.
Реализовать замок повторного входа в ключевых функциях, чтобы предотвратить атаки повторного входа.
Для токен-контрактов, вызываемых внешними системами, необходимо провести строгий аудит безопасности и управление белыми списками.
Регулярно проводить аудит безопасности контрактов, своевременно выявляя и устраняя потенциальные уязвимости.
Принятие этих мер может эффективно снизить риск атак на смарт-контракты и повысить общую безопасность проекта.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
OrionProtocol подвергся атаке повторного входа с убытками в 2,9 миллиона долларов
Анализ инцидента с атакой повторного входа на OrionProtocol
2 февраля 2023 года в 15:40:20 UTC контракты Orion Protocol на Ethereum и Binance Smart Chain подверглись атакам повторного входа из-за уязвимости. Злоумышленник заработал 2 844 766 USDT на Ethereum и 191 606 BUSD на Binance Smart Chain, в общей сложности около 2,9 миллиона долларов.
Анализ процесса атаки
Атакующий сначала развернул пользовательский контракт токена и выполнил соответствующие операции по передаче и авторизации, готовясь к последующей атаке.
Затем злоумышленник осуществляет заимствование через метод swap какого-то DEX и вызывает метод ExchangeWithAtomic.swapThroughOrionPool от OrionProtocol для обмена токенов. Путь обмена установлен как [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. Эта функция обновляет переменную curBalance после выполнения перевода токена, что создает условия для атаки повторного входа. Злоумышленник использует функцию обратного вызова transfer пользовательского токена для вызова метода depositAsset, что приводит к неправильному обновлению 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( при написании кода контракта, то есть сначала выполните проверку условий, затем обновите переменные состояния, и, наконец, выполните внешние вызовы.
Реализовать замок повторного входа в ключевых функциях, чтобы предотвратить атаки повторного входа.
Для токен-контрактов, вызываемых внешними системами, необходимо провести строгий аудит безопасности и управление белыми списками.
Регулярно проводить аудит безопасности контрактов, своевременно выявляя и устраняя потенциальные уязвимости.
Принятие этих мер может эффективно снизить риск атак на смарт-контракты и повысить общую безопасность проекта.