El Ataque de Vector 76, es un tipo de ataque de doble gasto que aprovecha un pequeño error en el sistema de consenso de Bitcoin para ejecutarse. Como resultado de esto, el atacante puede hacerse de fondos de forma maliciosa y generar perdidas a sus víctimas.
Todas las tecnologías desarrolladas, incluida la blockchain, cuentan con vectores de ataque que los ciberdelincuentes pueden aprovechar para su propio beneficio. En el mundo criptográfico, uno de los ataques menos conocidos es el Vector 76 Attack o Ataque de Vector 76.
La llegada de las monedas digitales y las criptomonedas trajo consigo un grave problema, el doble gasto. En monedas digitales centralizadas, este problema se resuelve fácilmente al estar todo el control en un mismo núcleo. Pero en las monedas descentralizadas como Bitcoin, el problema es mucho mayor. De hecho, el diseño de Bitcoin consigue minimizar el problema del doble gasto. Incluso, podemos decir que lo «elimina», pero debido a la naturaleza descentralizada de Bitcoin, siempre existirá algún punto de fallo que puede usarse para realizar un doble gasto.
Es allí donde el Ataque de Vector 76 o Ataque de Confirmación, entra en acción. Este ataque de doble gasto permite que el atacante pueda incluir una transacción con un doble gasto en un bloque y usarla para su beneficio. Esto lo logra, al enviar un bloque autoconstruido para que la red le de una confirmación pensando que el bloque es válido. De esta forma, el atacante puede hacerse con una cierta cantidad de fondos antes de que la red pueda darse cuenta del problema. Este ataque fue descrito por primera vez por el usuario vector76 en el foro de Bitcointalk.
Pero, para entender la naturaleza de este ataque es necesario profundizar la forma en cómo funciona, y eso es lo que haremos a continuación.
¿Cómo funciona el Ataque de Vector 76?
Este ataque es en realidad una combinación entre el Ataque de Carrera y el Ataque Finney. Su objetivo principal son los exchanges o casas de intercambio, donde los atacantes pueden comprar y vender, sus criptomonedas y tokens sin ser rápidamente detectados.
Pero ¿Cómo es posible esto? Pues bien examinemos un poco más de cerca la anatomía de este ataque.
¿Cómo se ejecuta este ataque?
Un Ataque de Vector 76 es ejecutable cuando un minero deshonesto, que tiene el control sobre 2 nodos completos de la red, conecta uno de estos (nodo A) directamente con el servicio de un exchange. Luego, el segundo nodo completo (nodo B), lo interconecta con otros nodos que están bien posicionados dentro de la red de la blockchain. Para conocer a cuáles nodos debe conectar, el minero debe vigilar el instante en que los nodos transmiten las transacciones, y cómo éstos luego las propagan a los demás nodos en la red. Así, podrá conocer qué nodos son los primeros en transmitir las operaciones y podrá conectarse con el servicio objetivo y con nodos bien posicionados.
Luego de que establece las conexiones necesarias, el minero genera un bloque válido de forma privada. En ese momento, crea un par de transacciones, las cuales tendrán valores distintos, siendo una transacción de alto valor y otra de bajo valor. Por ejemplo, la primera transacción puede ser de 25 BTC o más, y la segunda de tan solo 0.1 BTC. Posteriormente, el minero mantiene retenido el bloque minado y asigna al nodo A la transacción de alto valor, es decir la de 25 BTC. Esta será la transacción que será dirigida para realizar un depósito dentro del servicio del exchange.
Cuando el minero detecta un anuncio de bloque en la red, transmite de forma inmediata el bloque preminado por él, directamente hacia el servicio de intercambio, junto al bloque generado recientemente en la red. Esto con la esperanza de que el resto de los nodos consideren a su bloque como válido y los asuman como parte de la cadena principal. Así, dicho bloque quedará confirmado, y por tanto, se valida la transacción de 25 BTC que está incluida en él.
Una vez que el servicio del exchange confirma la transacción de 25 BTC, el atacante realiza un retiro del exchange por la misma cantidad de criptomonedas que depositó en la transacción anterior (25 BTC). Luego, el atacante envía la segunda transacción creada, la de 0.1 BTC, a la red desde el nodo B. Con el objetivo de crear una bifurcación que haga que la red rechace e invalide la primera transacción. Si esta bifurcación sobrevive, la primera transacción con el depósito de 25 BTC quedará invalidada, pero el retiro si se habrá realizado. Por lo tanto, el atacante habrá tenido éxito y el exchange perderá 25 BTC.
Probabilidad de éxito del ataque
Todos estos procesos ocurren de forma inmediata y simultánea, por lo que es muy probable que la transacción de 0.1 BTC sea tomada como la cadena principal. Pero, un par de bloques después, la transacción de depósito con 25 BTC quede invalidada. Esto debido a que el nodo B, que transmite la transacción de 0.1 BTC, está conectado a nodos bien posicionados que retransmitirán esa transacción de forma mucho más rápida en la red. Mientras que el nodo A, que contiene la transacción depósito de 25 BTC, está conectado directamente sólo con el servicio del exchange. Este nodo, tendrá que retransmitir dicha transacción a otros nodos, por lo que es mucho más lento que el nodo B.
En caso contrario, en el que el bloque aceptado en la cadena principal contenga la transacción de 25 BTC, el atacante sólo retirará los 25 BTC que depositó en el exchange. Por lo que, el Ataque de Vector 76 no tendría éxito. Aún así, en este escenario no hay pérdidas ni ganancias, ni para el atacante ni para el exchange.
Explicado esto, se puede detectar que existe una alta probabilidad de éxito en la ejecución de este tipo de ataque. Pero, aún así, no es común realizarlo debido a que se requiere de un exchange que acepte realizar los pagos de retiro después de tan sólo una confirmación, y la gran mayoría de los exchanges suelen requerir de 2 a 6 confirmaciones.
No obstante, también un negocio que ofrezca bienes o servicios digitales podría ser víctima de este tipo de ataque.
¿Cuánto sabes, criptonauta?
¿La existencia del Ataque de Vector 76 es una muestra de la falta de seguridad de la blockchain?¡FALSO!
Todos los sistemas tienen vulnerabilidades debido a su infraestructura, pero conocer esos errores y darle solución es fundamental para aumentar la seguridad del mismo. Bitcoin es la mejor muestra de esto, el Ataque de Vector 76 es algo estructural, pero solo es posible si dicha estructura no es lo suficiente extensa y descentralizada, algo que la comunidad sabe y les da una razón para extenderse más y más con el fin de hacerla más segura.
¿Cómo protegerse de un Ataque de Vector 76?
Para protegerse de este tipo de ataques se debe tener en cuenta algunas recomendaciones:
- Usar sistemas que no acepten transacciones con una sola confirmación. El Ataque de Vector 76 requiere que esto sea posible para llevar el ataque con éxito. En su lugar, lo mínimo que deberíamos esperar es a tener 2 confirmaciones, o incluso 6, como se recomienda ampliamente.
- El nodo que usemos debe evitar tener habilitadas las conexiones entrantes, o en su defecto, definir conexiones entrantes desde equipos bien reconocidos. Esto evita que el atacante puede inyectar información falsa sobre la cadena de bloques a nuestro nodo.
- Las conexiones salientes del nodo también deben ser monitoreadas y solo permitidas a nodos bien conocidos. Con esto se evita que nuestros nodos puedan dar información sobre el estado de la cadena que manejamos.
Con estas medidas podemos protegernos de este tipo de ataque sin mayores problemas.