Уязвимость контракта OrionProtocol привела к убыткам в 2,9 миллиона долларов
2 февраля 2023 года контракты OrionProtocol на Ethereum и Binance Smart Chain подверглись атаке повторного входа, что привело к убыткам около 2,9 миллиона долларов. Конкретные убытки составили 2,844,766 USDT на Ethereum и 191,606 BUSD на Binance Smart Chain.
Анализ процесса атаки
Атакующий сначала развернул специальный контракт Token и выполнил соответствующие операции по передаче и авторизации. Затем атакующий заимствовал средства через метод swap какого-то DEX и вызвал метод swapThroughOrionPool протокола OrionProtocol для обмена токенов. Путь обмена включает адрес контракта Token, созданного атакующим.
При выполнении метода swapThroughOrionPool, из-за того, что в контракте токена злоумышленника присутствует функция обратного вызова, во время процесса перевода возможно многократное вызов метода 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. Эта функция сначала выполняет операцию перевода, а затем обновляет переменную curBalance при выполнении _doSwapTokens. Злоумышленник использует функцию обратного вызова 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,9 миллиона долларов
2 февраля 2023 года контракты OrionProtocol на Ethereum и Binance Smart Chain подверглись атаке повторного входа, что привело к убыткам около 2,9 миллиона долларов. Конкретные убытки составили 2,844,766 USDT на Ethereum и 191,606 BUSD на Binance Smart Chain.
Анализ процесса атаки
Атакующий сначала развернул специальный контракт Token и выполнил соответствующие операции по передаче и авторизации. Затем атакующий заимствовал средства через метод swap какого-то DEX и вызвал метод swapThroughOrionPool протокола OrionProtocol для обмена токенов. Путь обмена включает адрес контракта Token, созданного атакующим.
При выполнении метода swapThroughOrionPool, из-за того, что в контракте токена злоумышленника присутствует функция обратного вызова, во время процесса перевода возможно многократное вызов метода 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. Эта функция сначала выполняет операцию перевода, а затем обновляет переменную curBalance при выполнении _doSwapTokens. Злоумышленник использует функцию обратного вызова 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(
Рекомендации по безопасности
Для смарт-контрактов с функцией обмена токенов разработчики должны учитывать следующие моменты:
Приняв эти меры, можно значительно снизить риск атак на смарт-контракты и повысить безопасность и стабильность проекта.