La seguridad de las transacciones es más crucial que nunca en la próspera industria de nicho de crypto. Debido al aumento en el uso de la cadena de bloques, crece la cantidad de formas en que los hackers pueden aprovechar las debilidades. El ataque de replay es uno de los peligros graves y poco comprendidos.
¿Qué es un ataque de repetición?
Un ataque de repetición ocurre cuando un atacante retransmite una transacción legítima con el fin de engañar al sistema. El atacante no modifica la firma, sino que la utiliza en otro lugar. Esto puede provocar la repetición de la misma transacción, lo que representa una amenaza para el usuario.
Dado que la firma permanece igual, es posible que la cadena de bloques acepte el mensaje redundante. En casos donde blockchains o aplicaciones no están verificadas, el atacante explota la repetición. Esto puede ser particularmente inseguro en bifurcaciones o entre cadenas de bloques similares.
¿Cuándo ocurren los ataques de repetición?
Los ataques de repetición pueden ocurrir con frecuencia cuando una cadena de bloques se divide o cuando dos cadenas tienen el mismo formato. Una transacción firmada puede utilizarse en ambas cadenas sin protección suficiente. Esto significa que el dinero puede enviarse en una cadena y al mismo tiempo en otra.
La ausencia de límites claros entre cadenas de bloques en los sistemas proporciona una oportunidad para los hackers. También atacan aplicaciones que tienen una validación de mensajes débil. En ambos casos, el atacante busca obtener beneficios repitiendo actividades que parecen válidas.
Un ejemplo de esto fue el caso de Ethereum y Ethereum classic en 2016. Los atacantes repitieron transacciones en ambas redes ya que no tenían protección inicial. Como consecuencia, los usuarios desperdiciaron dinero sin querer al realizar transacciones dos veces.
Cómo los monederos previenen los ataques de repetición
Los monederos cripto cuentan con herramientas de seguridad robustas que se implementan antes de cualquier ataque de repetición. Una de ellas es un ID de cadena asociado a cada mensaje firmado. Esto garantiza que la firma solo pueda validarse en una cadena de bloques y fallar en las demás.
La otra herramienta importante se denomina nonce, y es un número que se incrementa en cada transacción. El monedero rechaza la transacción en caso de que se reutilice el nonce. Esto asegura que los hackers no puedan repetir el mismo mensaje o pago.
Los límites de tiempo también se utilizan en algunos monederos para recibir un pago. Como ejemplo, un mensaje puede durar hasta cinco minutos. Luego, la firma se vuelve inútil y la repetición ya no es posible.
Defensas a nivel de contrato inteligente y aplicación
Aunque los monederos son funcionales, los contratos inteligentes y las aplicaciones también deben asegurarse. La mayoría de los contratos tienen un nonce/usuario, el contador nonce para evitar la duplicación de acciones. Esto permite que el contrato rechace cualquier firma que haya presenciado.
Las aplicaciones que facilitan la firma fuera de la cadena probablemente seguirán el estándar EIP-712. Este formato incluye el ID de la cadena, el nombre de la aplicación y el contrato. Al utilizar este estándar, las aplicaciones vinculan cada mensaje con el propósito para el que está destinado y evitan retransmisiones.
Según QuillAudits, una empresa de seguridad de cadena de bloques, las aplicaciones no deben omitir la separación de dominio en aprobaciones fuera de cadena. La ausencia del contexto adecuado permitirá a los atacantes abusar de la interoperabilidad. Esto indica por qué las auditorías son importantes para asegurar los sistemas Web3.
Componentes clave
La protección contra reproducción depende de herramientas distintas y explícitas para garantizar el contexto correcto. Estas herramientas son los IDs de cadena, los nonces de cuenta y el tiempo de expiración. La combinación de ellas dificulta a los atacantes intentar una reproducción.
Los elementos más significativos son:
- ID de cadena: la transacción es válida en una sola cadena de bloques y rechazada por otras cadenas de bloques.
- Nonce: este es un número utilizado para asegurar que un mensaje firmado no se utilice varias veces.
- Marca de tiempo o límites de tiempo: esto agregará un intervalo de tiempo durante el cual se rechazará un mensaje reproducido después de que transcurra el tiempo.
- Separador de dominio: Tetheriza mensajes fuera de cadena a una aplicación, contrato y cadena específicos mediante los estándares EIP-712.
- Seguimiento de Nonce de Contrato Inteligente – permite que las aplicaciones y contratos bloqueen mensajes utilizados o duplicados a nivel de contrato.
Una combinación de estas herramientas previene la mayoría de las amenazas de repetición. Todas estas técnicas son empleadas por monederos, aplicaciones y protocolos para protegerse contra la duplicación de mensajes. El resultado es una experiencia más segura para desarrolladores y usuarios.
Por qué la protección de repetición es importante para los usuarios
La protección de retransmisión es lo que hace que los usuarios confíen al utilizar monederos, puentes y exchanges. En su ausencia, los usuarios no son conscientes de que han perdido dinero. Los sistemas se vuelven más seguros y confiables al rechazar transacciones repetidas o abusivas.
Las billeteras de nombre de cadena-ID-prompt permiten a los usuarios evitar errores. Cuando los usuarios comprenden claramente hacia dónde se dirige su transacción, pueden tomar el control. Esto también reduce la confusión durante la transición entre cadenas o aplicaciones.
La protección de repetición también se utiliza para realizar retiros y depósitos seguros por parte de exchanges y custodios. Suelen desarrollar herramientas personalizadas que permiten únicamente transacciones en la red adecuada. Esto garantiza la seguridad de los clientes y la estabilidad de las operaciones en caso de bifurcaciones o actualizaciones.
Conclusión
Los ataques de replay representan una amenaza para la seguridad de la cadena de bloques al aprovechar firmas reutilizadas en una o más cadenas o sistemas. Sin embargo, el uso de ID de cadena, nonces y restricciones de tiempo permite que los monederos contribuyan significativamente a prevenirlos. Las aplicaciones y los contratos inteligentes también deben contribuir a esto y monitorear su uso y firmas.
Los sistemas deben colaborar y conocerse entre sí, ya que esta es la única forma de que puedan ser la mejor protección. Los usuarios minimizan el riesgo de replay mediante el uso de monederos confiables, dApps verificados y contratos inteligentes auditados. El espacio de la cadena de bloques está en expansión, y es necesario aumentar los esfuerzos para garantizar su seguridad.

