Error en Bitcoin Core afecta a usuarios con software desactualizado
Un error de programación de Bitcoin Core abre la puerta para que atacantes puedan robar fondos en transacciones entre la red Lightning y la cadena principal. Por esta razón, los desarrolladores de Bitcoin Core instan a usuarios de nodos de Lightning o usuarios de aplicaciones de otras plataformas de transferencias de BTC a que actualicen sus software lo antes posible a las últimas versiones de Bitcoin Core.
De acuerdo con una información suministrada por el desarrollador Eugene Siegel a través de Delving Bitcoin, «si bien la mayor parte de la red se ha actualizado al menos a la versión 22.0, todavía hay algunos miles de rezagados, por lo que se espera que esta divulgación motive a quienes ejecutan nodos Lightning a actualizar a una versión más segura». La divulgación de este error se hizo responsablemente hace casi 3 años, tiempo en el que los ingenieros y desarrolladores trabajaron en la solución sin divulgar la información públicamente para evitar que alguien utilizara la información de manera maliciosa.
En concreto, el error permite que un atacante encuentre un nodo de reenvío de la red Lightning que se conecta con un nodo de retransmisión de Bitcoin que ejecuta una versión de Bitcoin Core anterior a la v22. «El atacante abre muchas conexiones separadas al nodo de Bitcoin de la víctima. Luego, el atacante intenta entregar los bloques recién encontrados a la víctima más rápido que cualquier par honesto, lo que da como resultado que el nodo de la víctima asigne automáticamente pares controlados por el atacante a todas las ranuras de retransmisión de bloques compactos de alto ancho de banda de la víctima», explica el equipo de Bitcoin Optech.
Después de que el atacante obtiene control sobre un gran número pares de ranuras de Bitcoin de la víctima, utiliza los canales que controla en ambos en la red principal y en la red Lightning de la víctima para reenviar los pagos que crea.
En uno de los potenciales casos descritos, el atacante se alía con un minero de Bitcoin para crear un bloque que cierra unilateralmente el canal de pago de Lightning del lado del receptor, sin retransmitir la transacción en un estado no confirmado (esta asistencia del minero solo es necesaria cuando se ataca una implementación de Lightning que monitorea el mempool en busca de transacciones).
Ese bloque de transacciones, u otro bloque creado por el minero, también reclama el pago al liberar la preimagen HTLC (el contrato temporal que se requiere para redimir los fondos que se intercambian en Lightning). Lo que ocurre luego es que el nodo de Bitcoin de la víctima ve el bloque y se lo transmite a su nodo Lightning, para extraer la preimagen, permitiéndole reclamar el monto del pago del lado del gastador.
«Sin embargo, en este caso, el atacante utiliza este ataque de bloqueo de bloques revelado para evitar que el nodo Bitcoin Core conozca los bloques que contienen la preimagen», comenta el equipo de Bitcoin Optech.
El ataque de estancamiento aprovecha que las versiones anteriores de Bitcoin Core están dispuestas a esperar hasta 10 minutos para que un par entregue un bloque que anunció antes de solicitar ese bloque a otro par. Dado un promedio de 10 minutos entre bloques, eso significa que un atacante que controla x conexiones puede retrasar que un nodo de Bitcoin reciba un bloque durante aproximadamente el tiempo que lleva producir x bloques. Si el pago de reenvío debe reclamarse dentro de 40 bloques, un atacante que controle 50 conexiones puede tener una posibilidad razonable de evitar que el nodo Bitcoin vea el bloque que contiene la preimagen hasta que el nodo gastador pueda recibir un reembolso del pago. Si eso sucede, el nodo de gasto del atacante no pagó nada y el nodo receptor del atacante recibió una cantidad extraída del nodo de la víctima.
Bitcoin Optech, sitio de divulgación sobre desarrollos de Bitcoin y Lightning.
Esta no es la primera vez que el equipo de Bitcoin Core realiza una divulgación responsable sobre algún error de programación del principal cliente de la red, que es corregido. Como reportó CriptoNoticias recientemente, en la versión 24 del software se encontraron errores en la wallet y se corrigieron.