El domingo por la noche, los investigadores descubrieron un error de validación crítico en LND, una popular implementación de Lightning Network respaldada por Lightning Labs.
Específicamente, la implementación completa del nodo Bitcoin de LND, BTCD, tenía un error en su implementación Taproot. BTCD es una implementación de nodo completo para Bitcoin que es popular entre los usuarios de Lightning Network.
El error afecta a las versiones de LND 0.15.1 y anteriores. LND ha pedido a todos sus usuarios que lo actualicen a la versión 0.15.2.
Durante la noche del domingo, el desarrollador de Bitcoin, Jameson Lopp, recomendó a los operadores de nodos LND que no hicieran nada hasta que se lanzara una nueva versión. “Espero que los pagos y el enrutamiento [de los pagos] sigan funcionando. Lo que no funciona es abrir y cerrar canales porque la sincronización de blockchain está atascada”.
Notes for lnd node operators:
— Jameson Lopp (@lopp) October 10, 2022
Your node is currently safe. I wouldn't touch it until the new version is released.
I expect payments and routing still work. What won't work is channel opens / closes because the blockchain sync is stuck.
Update in the next 2 weeks if you can.
Sin la capacidad de cerrar canales, los bitcoins en Lightning Network (de quienquiera que opere esta implementación de LN en particular) esencialmente se congelaron allí durante algunas horas, sin posibilidad de trasladarse a la red de primer nivel.
La transacción multi-sig de Taproot reveló el error
Los investigadores descubrieron el error mientras probaban los límites de Bitcoin Scripting Language, un lenguaje de programación para Bitcoin. Querían probar un contrato inteligente extremadamente avanzado que requería la autenticación conjunta de numerosas partes.
Para realizar esta prueba, un investigador, Burak, creó una gran transacción multifirma en Taproot. Esto requirió 998 firmas de clave privada para autenticar el envío de bitcoin, una cantidad extraordinaria de co-firmantes.
I just did a 998-of-999 tapscript multisig, and it only cost $4.90 in transaction fees.https://t.co/CvBHaRAqPu
— Burak (@brqgoo) October 9, 2022
Para poner este número en contexto, considere que los usuarios de Lightning Network generalmente abren canales usando solo 2 de 2 transacciones multi-sig.
Los productores de bloques de prueba aceptaron la transacción 998-of-999. Posteriormente, la transacción se extrajo en un bloque de Bitcoin de la red principal. Entonces la transacción rompió la LND.
Esta transacción confundió el método utilizado por LND para calcular cuál era el bloque más reciente. Específicamente, LND no pudo analizar un nuevo bloque debido a su biblioteca defectuosa.
El siguiente mensaje apareció en los registros de errores: “No se puede completar el cambio de tamaño de la cadena: readScript: el elemento del script es más grande que el tamaño máximo permitido”.
Lightning Labs inmediatamente comenzó a trabajar para corregir el error, actualizar la biblioteca de análisis de cables BTCD y anunció el lanzamiento de la versión 0.15.2.
how was lnd affected?
— Olaoluwa Osuntokun (@roasbeef) October 10, 2022
lnd uses this library to parse blocks we get from either the full node backend or p2p network, due to this bug lnd wasn't able to parse a new block, but was able to continue to forward as normal (synced_to_chain: false)
Necesidad de servicios de vigilancia de implementación cruzada
Después del proceso de corrección de errores, los investigadores comenzaron a expresar la necesidad de servicios de observación, que se implementan de forma independiente.
Este error solo afectó a LND, una implementación popular de Lightning Network. Otras implementaciones incluyen Éclair y Core Lightning.
El servicio de torre de vigilancia es un tercero que monitorea Lightning Network visible públicamente y permite a los usuarios buscar restitución por mala conducta y puede monitorear todas las implementaciones para proteger a los usuarios durante las interrupciones de cualquier implementación en particular.
Por ejemplo, dado que la mayoría de los usuarios se adhieren a Lightning como una transacción de múltiples firmas 2 de 2, a menudo confían en que una contraparte no mienta sobre el saldo final de bitcoin que tienen entre sí cuando cierran el canal y salen de la red a la red principal Bitcoin.
Si alguien miente sobre el bitcoin que tiene en su poder cuando intenta cerrar un canal Lightning, un usuario que pueda probar esta mentira puede publicar una llamada Transacción de justicia y recibir el 100% de los bitcoins en su canal como recompensa por descubrir la mentira.
Una torre de vigilancia que monitorea todas las implementaciones (LND, Core Lightning, Éclair, etc.) puede proteger a un usuario durante errores o ataques, lo que le permite publicar Justice Transaction si alguien intenta robar su dinero durante las interrupciones del servicio.