¿Qué es Replay Attack?
Un Replay Attack ocurre cuando alguien captura una acción criptográfica válida y la vuelve a enviar para que la red la trate como nueva. La firma es legítima, el momento es engañoso. Piénsalo como alguien que reutiliza un cheque firmado en otro mostrador que aún sigue las mismas reglas.
Un Replay Attack significa que te robaron la clave privada. No exactamente. El atacante puede reutilizar un mensaje ya firmado si dos lugares lo aceptan de la misma forma, incluso sin conocer tu clave.
Cómo funciona Replay Attack
Breve explicación para que quede claro.
- Paso 1: Difundes una transacción firmada.
- Paso 2: Un atacante copia exactamente esos datos firmados.
- Paso 3: Lo reenvía donde aún se verifica, por ejemplo después de una bifurcación dura o en una cadena que acepta las mismas reglas de firma.
- Paso 4: La red ve una firma válida y la procesa otra vez, por lo que el valor se mueve dos veces.
- Paso 5: Solo las comprobaciones anti replay lo detienen, como los IDs de cadena, nonces o permisos de un solo uso a nivel de la aplicación.
Ese es todo el truco. Molesto, y muy prevenible.
Por qué importa Replay Attack
¿Por qué deberías prestar atención a un Replay Attack? Porque puede duplicar una acción real que querías hacer una sola vez y convertirla en dos.
- Beneficio: Conocer el riesgo ahorra dinero y estrés al ayudarte a estructurar movimientos más seguros.
- Perspectiva: La vida multi cadena es normal ahora, así que mensajes copiados que llegan al lugar equivocado ocurren más de lo que se piensa.
- Relevancia: Verás este término al mover fondos por una cadena de bloques, durante divisiones de cadena o al firmar mensajes fuera de cadena para aplicaciones.
Usa un monedero que muestre la cadena activa con claridad y configure correctamente los IDs de cadena. En caso de duda, envía primero una prueba pequeña y luego el resto.
Características clave de Replay Attack
Identifica el patrón rápido con estas señales:
- Copia: Reutiliza exactamente el mismo mensaje firmado, byte por byte.
- Validez: La firma es real, por lo que los nodos la aceptan a menos que haya protecciones anti replay.
- Momento: Es más frecuente alrededor de divisiones de cadena, puentes o cuando las aplicaciones omiten las comprobaciones de nonce.
Variaciones
Mismo libreto, distintos escenarios:
- Bifurcación: Reproducciones entre dos cadenas que se separan y aún aceptan las mismas firmas.
- Crosschain: Reproducciones entre cadenas que comparten parámetros o aceptan los mismos formatos de mensaje.
- Contrato: Reproducciones de permisos firmados o meta transacciones dentro de aplicaciones que olvidaron un nonce de un solo uso.
Después de grandes actualizaciones o separaciones, revisa tu historial de transacciones en ambas cadenas. Si algo parece duplicado, detente antes de enviar más.
Ejemplo
Después del fork del DAO, algunos retiros firmados en Ethereum fueron aceptados de nuevo en Ethereum Classic hasta que se introdujo una protección contra replays más fuerte.
Dato curioso
Ethereum incorporó IDs de cadena en 2016 mediante EIP155 específicamente para detener trucos de Replay Attack, y esa decisión influyó en cómo los monederos modernos te hacen elegir la cadena desde el inicio.
Resumen
Replay Attack en una línea: una firma real, reutilizada donde o cuando no debería. Trátalo como un cargo doble y lo detectarás antes.
