
Replay attack é um ataque em que uma transação ou autorização válida é reenviada ao sistema, levando à sua execução novamente. É como se alguém copiasse um documento assinado e o apresentasse em diferentes guichês para obter múltiplos carimbos.
No blockchain, assinaturas são geradas por chaves privadas—funcionam como selos digitais que confirmam: “Eu aprovo esta ação.” Se uma transação assinada puder ser reconhecida em outros contextos, ela fica vulnerável ao replay.
Para evitar duplicações, blockchains adotam um identificador exclusivo chamado nonce. Considere o nonce como um número de série único para cada operação—jamais repetido. O sistema só aceita nonces inéditos.
Em ambientes cross-chain ou após forks, também é necessário o chainId. O chainId funciona como um identificador de rede, vinculando a transação a uma chain específica e impedindo sua execução em outra.
Replay attacks ocorrem, em geral, quando o sistema não define claramente o “contexto” da ação. O contexto inclui a qual blockchain pertence, se há um identificador único, tempo de expiração ou se está vinculado a um domínio ou smart contract específico.
Se a assinatura apenas comprova consentimento para uma ação—sem indicar chain, aplicação ou período—qualquer pessoa com acesso a essa assinatura pode reutilizá-la em outro ambiente.
Quando uma aplicação controla o status “usado ou não usado” apenas localmente ou em cache, e não on-chain, o replay attack se torna mais fácil. Da mesma forma, após um fork, se as chains compartilham formato de transação e nonces, o replay cross-chain é possível.
Em replays na mesma chain, o atacante intercepta uma mensagem de autorização ou transação especial e a reenviada na mesma blockchain. Isso ocorre, por exemplo, quando “autorizações de assinatura offline” não possuem nonces únicos ou timestamp de expiração.
Em replays cross-chain, transações ou mensagens não têm vínculo com chainId, ou após um fork, ambas as chains aceitam o mesmo formato de assinatura. O atacante pode executar uma transação válida da chain A novamente na chain B.
No nível do smart contract, se o contrato não rastreia IDs de mensagens processadas ou não é idempotente (ou seja, chamadas repetidas têm efeitos cumulativos), o atacante pode acionar operações diversas vezes quando só uma execução deveria ocorrer.
Em 2016, o Ethereum passou por um fork, originando ETH e ETC. Como as transações iniciais não diferenciavam as chains, surgiram riscos de replay cross-chain. O EIP-155 foi criado em 2016 para adicionar chainId às transações, reduzindo drasticamente esses ataques (referência: histórico do Ethereum Improvement Proposal).
Em autorizações, se aprovações baseadas em assinatura para transferências ou limites de gastos não possuem expiração e nonces únicos, as assinaturas podem ser reenviadas. O EIP-2612 foi lançado em 2020 para padronizar autorizações por assinatura para tokens ERC-20, exigindo nonce e expiração (referência: Ethereum Improvement Proposal).
Se bridges cross-chain e protocolos de mensagens não atribuem identificadores exclusivos nem rastreiam mensagens consumidas, replay attacks podem resultar em mintagem ou liberação repetida de ativos. Hoje, o setor mitiga esses riscos com IDs de mensagens e rastreamento de estado on-chain.
Primeiro, confira o conteúdo de qualquer solicitação de assinatura. Se sua wallet pedir uma “assinatura cega” (sem detalhes claros da transação, domínio ou chain), o risco de replay é maior.
Depois, verifique se a autorização tem data de expiração e nonce único. Ausência de qualquer um desses aumenta sua exposição.
Cheque se existe contexto explícito de chain. A falta de chainId ou separação de domínio (como em domínios EIP-712) eleva o risco de replay em ambientes diferentes.
Por fim, observe sinais de execuções repetidas incomuns—como a mesma autorização usada várias vezes, ativos transferidos repetidas vezes em curto período ou mensagens idênticas com efeitos em múltiplas chains.
Passo 1: Vincule transações ao contexto da chain. Use o chainId do EIP-155 para restringir cada transação à rede correta e evitar replays cross-chain.
Passo 2: Atribua a cada autorização um nonce exclusivo e tempo de expiração. Padrões como EIP-2612 e Permit2 exigem que toda assinatura tenha nonce e deadline; autorizações expiradas tornam-se inválidas.
Passo 3: Registre mensagens ou nonces utilizados em smart contracts. Cada mensagem deve ter um ID não reutilizável e seu status de consumo salvo on-chain, garantindo processamento idempotente.
Passo 4: Use assinaturas estruturadas conforme EIP-712. Elas devem incluir nome de domínio (verifyingContract, name, version), chainId e conteúdo claro para minimizar riscos de replay e uso indevido.
Passo 5: Implemente validação bidirecional em bridges e canais de mensagens cross-chain. Verifique não só as chains de origem e destino, mas também a unicidade das mensagens, números de lote e status de processamento para evitar execuções repetidas por diferentes rotas.
Passo 1: Só assine em interfaces que exibam detalhes claros. Recuse assinaturas cegas—o prompt deve informar domínio, chain e descrição do propósito.
Passo 2: Defina limites para autorizações. Prefira aprovações com tempo e valor limitado; revogue permissões não utilizadas regularmente por explorers ou ferramentas de gestão. Ao sacar em exchanges como a Gate, sempre confira se a rede e endereço estão corretos para evitar erros entre ambientes.
Passo 3: Separe fundos de wallets operacionais. Guarde ativos principais em hardware wallets ou wallets apenas para visualização; interaja com DApps usando hot wallets menores, minimizando perdas por autorizações repetidas.
Passo 4: Use agendas de endereços e listas brancas. Salve endereços frequentes com observações na agenda da Gate e ative listas brancas de saque para reduzir riscos de erros ou assinaturas de phishing levando a reenvios.
Passo 5: Monitore atividades anormais. Ao notar transações duplicadas ou autorizações recorrentes em pouco tempo, pause operações, revogue autorizações e revise a segurança do dispositivo e extensões.
Replay attack é o reenvio da mesma transação ou autorização válida—o problema central é a execução repetida. Double-spending tenta gastar o mesmo ativo duas vezes, geralmente envolvendo consenso e reorganização de blocos—um cenário diferente em nível de protocolo.
Sybil attack explora múltiplas identidades para simular vários usuários e manipular votações ou distribuições; não se trata de repetir transações, mas de fraude de identidade. Replay attacks atuam na camada de transação ou mensagem.
Além disso, ataques man-in-the-middle costumam alterar dados ou rotas; replay attacks podem simplesmente reenviar dados idênticos, sem modificação de conteúdo.
Após o EIP-155 e o chainId em 2016, ataques de replay cross-chain caíram drasticamente; EIP-2612 (2020) e Permit2 padronizaram nonce e expiração em autorizações por assinatura. Em 2025, com o crescimento de redes multi-chain e Layer 2, canais de mensagens, IDs anti-replay e design idempotente se tornam infraestrutura essencial.
Account abstraction (como ERC-4337) favorece gestão de nonce por domínio—nonces distintos para operações diferentes reduzem risco de replay intra-domínio. Bridges cross-chain agora priorizam verificação de origem e rastreamento único de mensagens para limitar execuções repetidas.
Replay attack é, essencialmente, “conteúdo válido executado no contexto errado.” A solução é definir o contexto: identificadores de chain, nonces exclusivos, expiração, vinculação de domínio—e sempre registrar estados consumidos on-chain. Para desenvolvedores: adote EIP-155, EIP-712, EIP-2612/Permit2 e design idempotente. Para usuários: evite assinaturas cegas, use autorizações com tempo limitado, separe wallets por função e ative listas brancas em exchanges. Se notar repetições anormais envolvendo fundos, interrompa operações e revogue autorizações.
Replay attacks não roubam seus ativos diretamente, mas podem gerar transações repetidas de forma maliciosa. Por exemplo, se você transfere 100 tokens na chain A e um atacante repete essa transação na chain B, pode perder fundos nas duas chains. A melhor defesa é usar wallets que verificam chain ID e redobrar atenção em operações cross-chain.
Exchanges centralizadas como a Gate contam com múltiplas camadas de segurança; o risco de replay attack para quem negocia na plataforma é mínimo. O maior risco está nas transferências cross-chain com wallets de autocustódia. No trading spot ou de derivativos na Gate, os controles de risco da plataforma protegem sua conta.
Mudanças significativas no ecossistema (como fusões ou forks de chain) aumentam o risco de replay attack. Porém, projetos costumam implementar proteções como atualização prévia de chain IDs. Aguarde sempre comunicados oficiais antes de realizar operações cross-chain em períodos de transição para evitar riscos.
O vazamento da private key já é um incidente grave. Replay attacks ampliam o problema, pois o atacante pode movimentar ativos em uma chain e repetir transações em várias outras—podendo drenar todos os ativos semelhantes. Transfira imediatamente seus fundos para uma nova wallet.
O EIP-155 introduziu o chain ID, tornando cada transação vinculada a uma rede específica—impedindo execução em outras chains. As redes Ethereum modernas e chains compatíveis já adotaram esse padrão, tornando replay attacks praticamente inviáveis. Escolha wallets compatíveis com EIP-155 para proteção.


