O que é Replay Attack?
Uma Replay Attack ocorre quando alguém captura uma ação criptográfica válida e a envia de novo, fazendo com que a rede a trate como nova. A assinatura é legítima e o momento é sorrateiro. Pense nisso como alguém reutilizando o seu cheque assinado num outro guichet que ainda aplica as mesmas regras.
Replay Attack significa que a sua chave privada foi roubada. Nem sempre. O atacante pode reutilizar a sua mensagem já assinada se dois locais a aceitarem da mesma forma, mesmo sem conhecer a sua chave.
Como funciona a Replay Attack
Resumo rápido para fixar.
- Etapa 1: Você transmite uma transação assinada.
- Etapa 2: Um atacante copia exatamente esses dados assinados.
- Etapa 3: Ele reenvia onde ainda é verificada, por exemplo após um hard fork ou numa cadeia que aceite as mesmas regras de assinatura.
- Etapa 4: A rede vê uma assinatura válida e volta a processar, fazendo com que o valor seja transferido duas vezes.
- Etapa 5: Só verificações anti replay o impedem, como IDs de cadeia, nonces ou autorizações de uso único a nível de aplicação.
Esse é o truque todo. Irritante e facilmente evitável.
Porque é que a Replay Attack importa
Por que se deve preocupar com uma Replay Attack? Porque pode duplicar uma ação real que pretendia fazer uma vez e transformar essa ação em duas ocorrências.
- Vantagem: Conhecer o risco poupa dinheiro e stress ao ajudá-lo a planear movimentos mais seguros.
- Perspectiva: Hoje é comum operar em várias cadeias, por isso mensagens copiadas a aterrar no local errado acontecem com mais frequência do que se pensa.
- Relevância: Verá este termo ao mover fundos através de uma rede blockchain, durante divisões de cadeias, ou ao assinar mensagens fora de cadeia para aplicações.
Use uma carteira que mostre claramente a cadeia ativa e defina corretamente os IDs de cadeia. Em caso de dúvida, envie primeiro um teste pequeno e depois o restante.
Principais características da Replay Attack
Identifique o padrão rapidamente com estes sinais:
- Cópia: Reutiliza exatamente a mesma mensagem assinada, byte por byte.
- Validade: A assinatura é legítima, por isso os nós a aceitam, a menos que existam guardiões anti replay.
- Momento: Ocorre com mais frequência em divisões de cadeias, pontes ou quando aplicações omitem verificações de nonce.
Variações
Mesma abordagem, cenários diferentes:
- Fork: Replays entre duas cadeias que se dividiram e continuam a aceitar as mesmas assinaturas.
- Crosschain: Replays entre cadeias que partilham parâmetros ou aceitam os mesmos formatos de mensagem.
- Contract: Replays de permissões assinadas ou meta transações dentro de aplicações que esqueceram um nonce de uso único.
Após grandes atualizações ou divisões, verifique o seu histórico de transações em ambas as cadeias. Se algo parecer duplicado, pare antes de enviar mais.
Exemplo
Após o fork do DAO, algumas retiradas assinadas na Ethereum foram aceites novamente na Ethereum Classic até que uma proteção contra Replay Attack mais forte fosse introduzida.
Curiosidade
A Ethereum introduziu IDs de cadeia em 2016 através do EIP155 precisamente para travar truques de Replay Attack, e essa decisão de projeto influenciou como carteiras modernas pedem que escolha a cadeia desde o início.
Resumo
Replay Attack em uma frase: uma assinatura real reutilizada onde ou quando não devia ser. Trate-a como uma cobrança dupla e conseguirá detetá‑la mais rapidamente.
