La vulnerabilidad de software de Bitcoin, corregida este miércoles con el anuncio de la versión 0.16.3 de Bitcoin Core, tenía un efecto colateral más desastroso que el bloqueo de los nodos que intentasen validar un bloque con doble gasto, lo cual podía usarse para un ataque de denegación de servicio. También existía la posibilidad de que un minero inflara el suministro de Bitcoin, pues en ciertas circunstancias se podía generar un registro erróneo que le permitía a este minero malicioso adjudicarse el segundo gasto realizado, se informó este jueves a través de la página bitcoincore.org.
En el boletín publicado este jueves, se retoma el tema de la vulnerabilidad corregida el día anterior con el anuncio de la versión 0.16.3 de Bitcoin Core, el software cliente de Bitcoin, pero introduce un nuevo e importante elemento: el error corregido no sólo implicaba la posibilidad de un ataque de denegación de servicio (DoS), como habían informado previamente, sino que existía una «vulnerabilidad crítica de inflación» relacionada con la misma falla.
Según señala el boletín mencionado, tanto el equipo a cargo del cliente Bitcoin Core, como los del cliente Bitcoin ABC (Bitcoin Cash) y los de otras criptomonedas con software similar al de Bitcoin, recibieron el reporte de parte de un desarrollador aún no identificado. Sin embargo, esas notificaciones hablaban en un primer momento sólo del riesgo de un ataque de DoS.
Sin embargo, rápidamente determinamos que el asunto también implicaba una vulnerabilidad de inflación, proveniente de la misma causa y prevenible con la corrección planteada.
BitcoinCore.org
Resumiendo las dos facetas de esta vulnerabilidad, la primera, que ocasionaba el bloqueo de un nodo cuando se intentaba validar un bloque ilegal -con doble gasto en la misma transacción- se introdujo en la versión 0.14 de Bitcoin Core en 2012 y se transmitió a todas las versiones sucesivas 0.14.x, 0.15.x y las dos primeras instancias de las versiones 0.16.
Lo curioso de este error, fue que se introdujo en una rutina que era justamente concebida para evitar el doble gasto. Si hubiese sido utilizada de forma maliciosa, esta vulnerabilidad pudo haber representado una disrupción importante de la red Bitcoin, pues en vez de desechar el bloque ilegal, el nodo se bloqueaba.
El segundo aspecto de la vulnerabilidad era un poco más elaborado. Como se explica en el boletín de este jueves, el bloqueo descrito ocurría si el doble gasto implicaba la salida de una transacción del mismo bloque, pero si se intentaba el gasto de la salida de una transacción del bloque anterior, la entrada en el bloque actual seguiría marcada como gastada, generando una incongruencia semántica y permitiendo que el minero reclamara bitcoins para sí luego de gastarlos dos veces.
Esta última información fue retenida dos días por el equipo responsable de Bitcoin Core y en medio de la campaña para que todos los mineros actualicen a la versión 0.16.3, una decisión que ha despertado polémica. Hasta los momentos los reportes sobre los progresos de la actualización no son fáciles de conciliar. Mas de la mitad de la tasa de hash ya migró, dicen los líderes de Bitcoin Core, aunque según el desarrollador LukeDashJr, el 94% de los nodos de Bitcoin siguen vulnerables.
Esta no es la primera vulnerabilidad importante descubierta y corregida en la red Bitcoin, cuyo protocolo ha superado por lo menos 15 incidentes en casi diez años de existencia. Indudablemente, el más llamativo de los casos de vulnerabilidades (corregidas en tiempo récord) que demostraron que este protocolo no es infalible, es el caso del bloque 74638, que contenía una transacción que creó más de 184 millardos de bitcoins distribuidos en tres direcciones, dos de las cuales recibieron 92,2 millardos de BTC y una tercera recibió 0,01 BTC (la comisión del astuto minero). Cuando se descubrió el bloque irregular, se reescribió el cliente en cinco horas y se produjo una bifurcación blanda, que se hizo efectiva en su totalidad a partir del bloque 74691.
Imagen destacada por TheDigitalWay / stock.adobe.com