OrionProtocol подвергся атаке повторного входа, что привело к убыткам в почти 3 миллиона долларов
2 февраля 2023 года контракт Orion Protocol на Ethereum и Binance Chain подвергся атаке повторного входа из-за существующей уязвимости безопасности. Злоумышленники успешно похитили около 2,9 миллиона долларов криптоактивов, включая 2,844,766 USDT на Ethereum и 191,606 BUSD на BSC.
Анализ процесса атаки
Атакующий сначала развернул пользовательский токен-контракт и провел необходимые подготовительные работы. Затем атакующий занял средства через метод swap UNI-V2 и вызвал метод swapThroughOrionPool контракта ExchangeWithAtomic для обмена токенов. Путь обмена включает адрес токен-контракта, созданного атакующим, что открывает путь для последующей атаки обратного вызова.
В процессе обмена, из-за того что в токен-контракте злоумышленника содержится логика обратного вызова, каждая операция перевода вызывает повторный вызов метода depositAsset контракта ExchangeWithAtomic. Это приводит к неправильному накоплению суммы депозита, что в конечном итоге позволяет злоумышленнику извлекать средства, превышающие фактическую сумму, которую он внес.
! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
! [Анализ атак на повторный вход OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [Анализ атаки на ре-энтерназии OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Источник уязвимости
Основная проблема заключается в функциях doSwapThroughOrionPool и _doSwapTokens контракта ExchangeWithAtomic. Эти функции обновляют переменную curBalance после выполнения перевода токенов, но не имеют мер по предотвращению повторных атак. Злоумышленник использует обратный вызов метода depositAsset функции transfer пользовательского токена, что приводит к неправильному обновлению 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(
Направление денежных потоков
Начальный капитал злоумышленника поступил из горячего кошелька одной из торговых платформ. Из 1,651 ETH, полученных в результате атаки, 657,5 ETH все еще находятся на кошельке злоумышленника, а оставшаяся часть была переведена через сервис смешивания.
! [Анализ атак на повторный вход 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) при написании кода контракта, то есть сначала выполняйте проверку условий, затем обновляйте переменные состояния, и только потом взаимодействуйте с внешними контрактами.
Используйте замки повторного входа или подобные механизмы в ключевых функциях, чтобы предотвратить атаки повторного входа.
При внешних вызовах, особенно касающихся операций с переводом средств, следует проявлять особую осторожность и рассмотреть возможность использования модели pull payment вместо push payment.
Регулярно проводить аудит безопасности, своевременно выявлять и исправлять потенциальные уязвимости.
Принятие этих мер может значительно повысить безопасность смарт-контрактов и снизить риск атак. В экосистеме Web3 безопасность всегда должна быть приоритетом.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
4
Поделиться
комментарий
0/400
TokenTherapist
· 6ч назад
Снова кто-то не может справиться с собой?
Посмотреть ОригиналОтветить0
LiquidatorFlash
· 6ч назад
Уязвимость повторного входа действительно является главным убийцей потерь в DeFi...
Посмотреть ОригиналОтветить0
0xLuckbox
· 6ч назад
Как это снова украли в этом году?
Посмотреть ОригиналОтветить0
TokenSherpa
· 6ч назад
*вздох* еще один протокол не проходит базовые проверки на повторный вход... исторически это было предотвратимо
OrionProtocol подвергся атаке повторного входа, украдено почти 3 миллиона долларов активов.
OrionProtocol подвергся атаке повторного входа, что привело к убыткам в почти 3 миллиона долларов
2 февраля 2023 года контракт Orion Protocol на Ethereum и Binance Chain подвергся атаке повторного входа из-за существующей уязвимости безопасности. Злоумышленники успешно похитили около 2,9 миллиона долларов криптоактивов, включая 2,844,766 USDT на Ethereum и 191,606 BUSD на BSC.
Анализ процесса атаки
Атакующий сначала развернул пользовательский токен-контракт и провел необходимые подготовительные работы. Затем атакующий занял средства через метод swap UNI-V2 и вызвал метод swapThroughOrionPool контракта ExchangeWithAtomic для обмена токенов. Путь обмена включает адрес токен-контракта, созданного атакующим, что открывает путь для последующей атаки обратного вызова.
В процессе обмена, из-за того что в токен-контракте злоумышленника содержится логика обратного вызова, каждая операция перевода вызывает повторный вызов метода depositAsset контракта ExchangeWithAtomic. Это приводит к неправильному накоплению суммы депозита, что в конечном итоге позволяет злоумышленнику извлекать средства, превышающие фактическую сумму, которую он внес.
! [Анализ атаки повторного входа OrionProtocol с PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
! [Анализ атак на повторный вход OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [Анализ атаки на ре-энтерназии OrionProtocol с PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
Источник уязвимости
Основная проблема заключается в функциях doSwapThroughOrionPool и _doSwapTokens контракта ExchangeWithAtomic. Эти функции обновляют переменную curBalance после выполнения перевода токенов, но не имеют мер по предотвращению повторных атак. Злоумышленник использует обратный вызов метода depositAsset функции transfer пользовательского токена, что приводит к неправильному обновлению 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(
Направление денежных потоков
Начальный капитал злоумышленника поступил из горячего кошелька одной из торговых платформ. Из 1,651 ETH, полученных в результате атаки, 657,5 ETH все еще находятся на кошельке злоумышленника, а оставшаяся часть была переведена через сервис смешивания.
! [Анализ атак на повторный вход 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) при написании кода контракта, то есть сначала выполняйте проверку условий, затем обновляйте переменные состояния, и только потом взаимодействуйте с внешними контрактами.
Используйте замки повторного входа или подобные механизмы в ключевых функциях, чтобы предотвратить атаки повторного входа.
При внешних вызовах, особенно касающихся операций с переводом средств, следует проявлять особую осторожность и рассмотреть возможность использования модели pull payment вместо push payment.
Регулярно проводить аудит безопасности, своевременно выявлять и исправлять потенциальные уязвимости.
Принятие этих мер может значительно повысить безопасность смарт-контрактов и снизить риск атак. В экосистеме Web3 безопасность всегда должна быть приоритетом.