Атака повторного воспроизведения в блокчейне: что это такое, реальные примеры и как ее предотвратить.

Содержание

Повторная атака

Поделиться

В 1993 году криптографы назвали это «простейшей атакой из всех существующих»: взять корректное сообщение, подождать и отправить его снова. Никто не строит хранилище, рассчитывая на повторное использование ключа.

Но именно это и произошло, когда Ethereum и Ethereum Classic разделились: одна и та же подписанная транзакция, переданная по двум блокчейнам, дважды переместила реальные средства. Никакого взлома, никакого украденного пароля, никакой фишинговой ссылки.

Повторная атака, делающая то, что она всегда делала, используя легитимность в качестве оружия.

Присоединяйтесь к UEEx

Познакомьтесь с ведущей в мире платформой цифрового управления капиталом

Регистрация

Читайте также: Основные проблемы безопасности в сфере криптовалют

Что такое атака повторного воспроизведения (Replay Attack)?

Повторить последовательность атаки

Атака с повторным воспроизведением — это тип нарушения безопасности сети, при котором злоумышленник перехватывает допустимые передачи данных и злонамеренно повторно использует или повторно отправляет их, чтобы обмануть систему. 

В отличие от атак, которые изменяют или подделывают данные, атака с повторным воспроизведением просто повторно передает ранее захваченную информацию, такую ​​как учетные данные для входа, токены аутентификации или запросы на транзакции, чтобы обмануть систему и заставить ее поверить, что она получает новую, законную команду.

Пожалуйста, обратите внимание: Атака повторного воспроизведения (атака повторного воспроизведения) может произойти в рамках одной и той же цепочки или между цепочками.

Читайте также: Что означает 5x в криптовалюте?

В чём разница между атакой повторного воспроизведения в рамках одной цепочки и атакой повторного воспроизведения между цепочками?

Атака повторного воспроизведения в пределах одной цепочки происходит внутри одного блокчейна: одна и та же подписанная транзакция или сообщение отправляется несколько раз в одну и ту же сеть.

Механизм nonce предотвращает это для стандартных транзакций Ethereum; как только nonce (число, использованное один раз) израсходовано, та же транзакция отклоняется.

Атаки с использованием повторного воспроизведения данных между двумя блокчейнами происходят между ними, поскольку они используют общие форматы адресов и логику подписи — чаще всего после хардфорка.

Использование одноразового числа (nonce) здесь не помогает, поскольку обе блокчейн-сети отслеживают nonce независимо друг от друга. Транзакция с nonce 5 в Ethereum и транзакция с nonce 5 в Ethereum Classic представляют собой разные записи в разных системах, но подписанные данные транзакции идентичны.

Идентификатор цепочки EIP-155 — это специальное решение для защиты от повторного воспроизведения транзакций в разных цепочках. Для проверки подписи смарт-контракта разделитель доменов EIP-712 обрабатывает как варианты внутри одной цепочки, так и варианты между цепочками.

Присоединяйтесь к UEEx

Познакомьтесь с ведущей в мире платформой цифрового управления капиталом

Регистрация

Когда атаки с использованием повторного воспроизведения действительно имели место: три задокументированных случая.

Атаки повторного воспроизведения в блокчейне — это не теория. Они уже неоднократно приводили к задокументированным финансовым потерям.

Форк Ethereum/Ethereum Classic — 2016 год

После взлома DAO сеть Ethereum разделилась на Ethereum (ETH) и Ethereum Classic (ETC), и все транзакции, подписанные до разделения, были действительны в обеих цепочках.

Обе цепочки использовали идентичные адресные пространства, форматы транзакций и логику проверки подписи.

Транзакция, подписанная любым кошельком, одновременно являлась действительной транзакцией как в ETH, так и в ETC.

Биржи, на которых хранились средства пользователей в ETH и ETC, немедленно стали мишенью.

Злоумышленники перехватили действительные транзакции по выводу ETH и воспроизвели их в блокчейне ETC, опустошив балансы ETC, к которым пользователи не собирались прикасаться.

В период после форка, до широкого внедрения защиты от повторного воспроизведения транзакций, со счетов бирж было выведено более 40 000 ETC.

Это событие непосредственно послужило толчком к созданию EIP-155.

Слияние Ethereum — 2022 год

Когда Ethereum перешёл от Proof of Work к Proof of Stake (слияние), образовалась форкнутая цепочка, получившая название Ethereum. PoW (ETHW) был создан.

В течение нескольких дней злоумышленник воспользовался уязвимостью кроссчейн-контракта Omni Bridge, который не имел защиты от повторного воспроизведения транзакций, специфичной для ETHW, и воспроизвел транзакции, в результате которых из контракта моста было переведено 200 ETHW.

В рамках эксплойта злоумышленник использовал устаревшие и доступные для манипулирования данные о ценах оракулов ETH в основной сети ETH на блокчейне ETHW.

Кража токенов Optimism OP — 2022

В результате инцидента с воспроизведением транзакций в нескольких блокчейнах, из сети Optimism было украдено 20 миллионов долларов в токенах OP во время спорной последовательности транзакций с мультиподписью.

Атака использовала разрыв между контекстами блокчейнов L1 (Ethereum) и L2 (Optimism), где повторное воспроизведение определенного подписанного сообщения в неправильном блокчейне перемещало токены без авторизации.

Это не единичные случаи. Они представляют собой задокументированную закономерность: каждый раз, когда новый форк или развертывание L2 создает две среды, которые используют общие форматы адресов или подписей без привязки, специфичной для цепочки, возникает риск повторного воспроизведения.

Вспомните, когда в последний раз запускалась новая цепочка, использующая ваш Ethereum-адрес. Проверяли ли вы, действительны ли ваши существующие подписанные авторизации в этой новой цепочке? Уверяли ли вы, что схема подписи вашего кошелька включает EIP-155? Большинство этого не делали. Большинство остались довольны. Но те, кто остался недоволен, потеряли реальные средства, и никто из них этого не ожидал.

Читайте также: Как пассивно зарабатывать криптовалюту?

Присоединяйтесь к UEEx

Познакомьтесь с ведущей в мире платформой цифрового управления капиталом

Регистрация

EIP-155: Решение, появившееся после форка 2016 года.

Протокол EIP-155, представленный сооснователем Ethereum Виталиком Бутериным в 2016 году, был создан специально для предотвращения повторного воспроизведения транзакций в форкнутых блокчейнах.

Решение было в принципе простым: внедрить уникальный идентификатор цепочки (chainId) в каждую подпись транзакции.

До принятия EIP-155 подпись транзакции включала шесть полей данных: одноразовый код (nonce), цена газа, лимит газа, адрес получателя, стоимость и данные.

Подпись была действительна в любой цепочке, совместимой с EVM, при использовании той же логики проверки, поскольку ни одно из этих полей не указывало, для какой именно цепочки предназначалась транзакция.

После принятия стандарта EIP-155 в хэш подписи добавляются три новых поля: chainId и два пустых значения-заполнителя.

Сделка подписана для Эфириум (chainId = 1) не является допустимой подписью в Optimism (chainId = 10), Polygon (chainId = 137) или любой другой цепочке EVM.

Узел, получающий транзакцию, проверяет chainId на соответствие своему собственному и отклоняет любое несоответствие.

Это единственное изменение значительно снизило количество атак повторного воспроизведения между блокчейнами для стандартных транзакций.

Важное ограничение: EIP-155 защищает только необработанные транзакции Ethereum.

Она не защищает подписи на уровне приложений, то есть подписанные сообщения, которые смарт-контракты проверяют внутри себя с помощью функции ecrecover.

Контракт, проверяющий подписи вне блокчейна без проверки chainId, по-прежнему уязвим для атак повторного воспроизведения, даже если EIP-155 полностью реализован на уровне транзакций. Вот тут-то и вступает в игру EIP-712.

Nonce — как он предотвращает повторное воспроизведение в рамках одной цепочки.

nonce (число, используемое один раз) — это механизм, предотвращающий атаки повторного воспроизведения в рамках одного блокчейна. Каждый аккаунт Ethereum поддерживает счетчик, который начинается с 0 и увеличивается на 1 с каждой отправленной транзакцией.

При отправке транзакции с nonce = 5 сеть принимает её только в том случае, если значение nonce вашего текущего счёта равно ровно 5.

После обработки значение nonce вашей учетной записи станет равным 6, и любая попытка повторного выполнения транзакции с nonce-5 завершится неудачей, поскольку сеть теперь ожидает значение nonce равное 6.

Вот почему нельзя отправить одну и ту же транзакцию Ethereum дважды в одной и той же цепочке: этому препятствует nonce. Подвох, выявленный в анализе Gate.io от марта 2026 года: nonce сам по себе предотвращает повторное воспроизведение в одной и той же цепочке, но не между ними, поскольку разные цепочки поддерживают отдельные счетчики nonce.

Ваш одноразовый код учетной записи в основной сети Ethereum и ваш одноразовый код учетной записи в Ethereum Classic отслеживаются независимо друг от друга.

Транзакция с nonce = 5 в Ethereum также может иметь nonce = 5 в Ethereum Classic, если вы совершили одинаковое количество транзакций в обеих цепочках. EIP-155 устраняет этот пробел, делая chainId частью самой подписи.

Присоединяйтесь к UEEx

Познакомьтесь с ведущей в мире платформой цифрового управления капиталом

Регистрация

EIP-712 — слой, который не был охвачен EIP-155.

EIP-155 решает проблему атак повторного воспроизведения на уровне транзакций. Он не помогает в проверке подписи смарт-контрактов.

Когда смарт-контракт использует ecrecover для проверки внесетевой подписи, он проверяет сообщение, а не транзакцию. Защита chainId в рамках EIP-155 применяется к транзакции Ethereum, которая содержит сообщение, а не к самому содержимому сообщения.

Если разработчик создаст контракт, который проверяет подписи, не включая в подписанные данные идентификатор цепочки (chainId), адрес контракта и nonce, то эти подписи могут быть воспроизведены любым, кто их перехватит.

Стандарт EIP-712 (Typed Structured Data Signing) решает эту проблему. Он определяет стандартный способ структурирования подписанных сообщений, включающий разделитель доменов, хеш, содержащий chainId, адрес проверяющего контракта, а также имя и версию контракта.

Подпись, созданная в соответствии с EIP-712, привязана к конкретному контракту по конкретному адресу в конкретной цепочке.

Его невозможно воспроизвести в другой цепочке или другом контракте, даже если байт-код идентичен.

Для разработчиков: перед развертыванием любого контракта, проверяющего подписи вне блокчейна, убедитесь, что ваша схема подписи включает все три параметра: nonce (предотвращает повторное использование одного и того же сообщения), chainId (предотвращает воспроизведение между блокчейнами) и адрес контракта (предотвращает воспроизведение между контрактами). Библиотека ECDSA OpenZeppelin версии 4.7.3 и выше корректно реализует все три параметра.

Читайте также: Как работает оплата в USDT?

Как работает атака с повторным воспроизведением

Как работает атака с повторным воспроизведением
ШагЭкшн
1. подслушиваниеПрослушивание незашифрованных сетей с помощью программ для перехвата пакетов (например, Wireshark).
2. ЗахватитьЗаписывает действительные пакеты данных (учетные данные, токены или запросы на транзакции).
3. АнализПодготавливает захваченные пакеты для повторного использования без необходимости их расшифровки.
4. ПовторПовторно отправляет действительный пакет обратно в целевую систему.
5. ИсполнениеСистема обрабатывает дублирующий запрос как легитимный, если в нем отсутствуют проверки на актуальность.

Как предотвратить атаки повторного воспроизведения

Инфографика, показывающая, как предотвратить атаку повторного воспроизведения
Метод защитыКак это работаетЛучше всего использовать для
TimestampsОтклоняет запросы, время выполнения которых выходит за пределы допустимого диапазона (например, 30 секунд – 1 минута).Транзакции, требующие оперативного выполнения, и вызовы API
Уникальные идентификаторы / токеныПрикрепляет к запросу одноразовый случайный идентификатор и помечает его после использования для блокировки повторных запросов.Финансовые транзакции и идентификаторы сессий
Шифрование (TLS / SSL / HTTPS)Зашифровывает данные во время передачи, чтобы заблокировать перехват открытого текста инструментами для анализа сетевых пакетов.Веб-приложения, защищенный FTP и серверные службы.
Нонсы (числа, используемые один раз)Использует случайное или последовательное значение, которое мгновенно становится недействительным после использования.Безопасность API и двухфакторная аутентификация: одноразовые пароли на основе времени (TOTP)

Присоединяйтесь к UEEx

Познакомьтесь с ведущей в мире платформой цифрового управления капиталом

Регистрация

Системы и протоколы, уязвимые для атак повторного воспроизведения

Целевая система / ПротоколПочему оно уязвимоТипичные примеры и недостатки
Беспроводная сетьПередача данных по открытому воздуху упрощает их перехват и повторную отправку.Устаревшая сеть Wi-Fi (WEP/слабая WPA) с отсутствием последовательности пакетов; устройства Bluetooth, у которых отсутствует проверка одноразового кода или сопряжение сеансов.
Криптографические протоколыИспользует статические ключи или не имеет контекстно-зависимых проверок актуальности.Используйте Kerberos или OAuth, если токены сессии или учетные данные не содержат строгих временных меток и правил истечения срока действия.
Интернет вещей (IoT)Приоритет отдается низкому энергопотреблению и удобству использования, а не надежной безопасности.«Умные» замки и камеры, использующие протоколы IoT (MQTT, CoAP), без встроенной защиты от повторного воспроизведения из-за ограниченной вычислительной мощности.
Платежные системыУязвимость возникает, если в транзакциях отсутствуют динамические одноразовые коды аутентификации.Более старые бесконтактные карты и POS-терминалы, не имеющие криптограмм EMV или токенов для каждой транзакции.

Читайте также: 10 лучших рекомендаций по безопасности криптовалют для новичков

Как обнаружить атаки повторного воспроизведения

1. Проверка временных меток и мониторинг журналов.

Атаки с использованием повторного воспроизведения часто приводят к повторному использованию данных без изменения их исходной метки времени.

Путем мониторинга и проверки временных меток системы могут обнаруживать неожиданные задержки сообщений или их выход за пределы допустимого временного окна.

  • Реализуйте строгие проверки валидности токенов, транзакций и вызовов API по времени.
  • Отмечайте сообщения, которые, по-видимому, задерживаются или обрабатываются за пределами обычной продолжительности сеанса.
  • Сверяйте системные журналы для выявления запросов с одинаковыми временными метками, которые встречаются более одного раза.

2. Обнаружение дубликатов сообщений

Ключевым признаком атак повторного воспроизведения является повторение идентичных сообщений или пакетов.

Системы должны отслеживать подобные закономерности, особенно в критически важных областях, таких как аутентификация, финансовые транзакции и управление сессиями.

  • Используйте хеширование или дактилоскопирование для обнаружения дубликатов пакетов или запросов.
  • Сравните входящие данные с недавно обработанными записями, чтобы проверить наличие повторяющегося контента.
  • Регистрируйте и исследуйте повторяющиеся токены сеансов, вызовы API или зашифрованные полезные данные.

3. Отслеживание порядкового номера и одноразового кода (Nonce).

В защищенных системах для отслеживания и проверки уникальности данных часто используются порядковые номера или одноразовые числа (числа, используемые один раз).

В повторно воспроизводимых сообщениях обычно используется один и тот же одноразовый код или порядковый номер, что может быть расценено как подозрительное действие.

  • Сохраняйте кратковременную память (кэш или базу данных) недавно использованных одноразовых кодов или порядковых номеров.
  • Удалять или регистрировать запросы, содержащие повторно используемые значения.
  • Оповещение о токенах сеанса или идентификаторах запроса, которые уже были обработаны.

4. Выявление поведенческих аномалий

Атаки с использованием повторного воспроизведения не всегда приводят к техническим дубликатам; иногда угрозу может выявить контекст поведения.

Например, если пользователь совершит одну и ту же транзакцию дважды за считанные секунды, это может вызвать подозрения.

  • Контролируйте поведение пользователей и создавайте базовые профили для нормальной активности.
  • Отмечайте аномальные закономерности, такие как часто повторяющиеся действия, идентичные запросы с разных IP-адресов или многократные входы в систему с использованием одного и того же токена.
  • Интегрируйте системы обнаружения аномалий, которые могут обучаться и адаптироваться к типичным схемам дорожного движения.

5. Анализ сетевого трафика

Расширенные инструменты обнаружения позволяют анализировать сетевой трафик в режиме реального времени для поиска подозрительных закономерностей, особенно в беспроводных или IoT-средах, где атаки с повторным воспроизведением являются обычным явлением.

  • Используйте системы обнаружения вторжений (IDS) или системы предотвращения беспроводных вторжений (WIPS) для обнаружения подозрительных повторных передач пакетов.
  • Анализируйте заголовки пакетов на предмет повторного использования идентификаторов, одноразовых кодов или параметров шифрования.
  • Обратите внимание на повторяющиеся зашифрованные полезные данные, которые не меняются от сеанса к сеансу.

6. Анализ токенов сессии и журналов аутентификации.

Атаки с повторным воспроизведением часто связаны с повторным использованием токенов аутентификации. Системы должны проводить аудит и анализ журналов выпуска и использования токенов, чтобы выявлять токены, которые, по всей видимости, используются повторно или не по назначению.

  • Отслеживайте продолжительность жизни токенов сеансов и связанную с ними информацию об IP-адресах/устройствах.
  • Регистрируйте попытки повторного использования просроченных или уже использованных учетных данных аутентификации.
  • Расследуйте попытки входа в систему, которые повторно используют заголовки, метаданные или сведения о сеансе.

Читайте также: Объяснение аппаратных модулей безопасности криптовалют (HSM)

Часто задаваемые вопросы

В чем разница между атакой повторного воспроизведения и атакой MITM?

Атака с повторным воспроизведением подразумевает захват и повторную отправку действительных данных для обмана системы, в то время как атака «человек посередине» (MitM) активно перехватывает и изменяет связь между двумя сторонами в режиме реального времени.

Какие типы пакетов чаще всего перехватываются при атаке повторного воспроизведения?

Наиболее распространенные типы пакетов, перехватываемых при атаке воспроизведения, включают запросы на аутентификацию, токены сеансов, сообщения о транзакциях и команды управления, используемые в беспроводной или сетевой связи.

Как TLS предотвращает атаку повторного воспроизведения?

TLS предотвращает атаки повторного воспроизведения, используя уникальные сеансовые ключи, порядковые номера и коды аутентификации сообщений (MAC), чтобы гарантировать актуальность каждого сообщения и невозможность его повторной отправки или изменения без обнаружения.

Что такое атака повторного воспроизведения Kerberos?

Атака с повторным воспроизведением Kerberos происходит, когда злоумышленник перехватывает и повторно отправляет действительное сообщение аутентификации Kerberos, чтобы обмануть систему и заставить ее предоставить несанкционированный доступ без повторной аутентификации.

Присоединяйтесь к UEEx

Познакомьтесь с ведущей в мире платформой цифрового управления капиталом

Регистрация

Заключение

Атаки с использованием повторного воспроизведения могут показаться простыми, но их последствия могут быть серьезными, начиная от несанкционированного доступа и заканчивая финансовыми потерями и сбоями в работе сервисов.

Распознавание уязвимых систем, понимание принципов работы этих атак и применение многоуровневой защиты, такой как одноразовые числа, временные метки и шифрование, имеют решающее значение. 

Поскольку угрозы продолжают затрагивать слабые места в процессах проверки, раннее обнаружение и предотвращение становятся критически важными. 

Укрепление систем против атак повторного воспроизведения — это не просто защита; это обеспечение доверия, целостности данных и стабильного обслуживания в цифровых средах, где безопасность не может быть скомпрометирована.

Условия использования: Эта статья предназначена исключительно для информационных целей и не должна рассматриваться как совет по торговле или инвестированию. Ничто в настоящем документе не должно толковаться как финансовая, юридическая или налоговая консультация. Торговля или инвестирование в криптовалюты сопряжены со значительным риском финансовых потерь. Всегда проявляйте должную осмотрительность перед принятием любых торговых или инвестиционных решений.