Bitcoinjs-lib corrige dos fallos que ocultaban comisiones de minería muy altas
Bitcoinjs-lib, una librería de JavaScript para crear aplicaciones de Bitcoin, corrigió dos fallos que podían hacer que un programa subestimara la comisión de minería.
Los avisos se publicaron el 26 de octubre y las versiones recomendadas para actualizar son 5.2.3, 6.1.10 y 7.0.5.
En una demostración sobre la versión 7.0.1, la comisión real era de 900.000.000 satoshis1 y la librería informó de 200 satoshis. El riesgo afecta a las aplicaciones que importan transacciones parcialmente firmadas (PSBT2) y se fían del cálculo de la librería sin comprobar las entradas. Quien mantenga una app debe actualizar; si no puede, ha de verificar esos valores y rechazar registros conflictivos o incompletos antes de firmar o confiar en las tarifas.
Para entenderlo: la comisión es la diferencia entre lo que entra y lo que sale en una transacción; subestimar el valor de una entrada hace que la comisión parezca menor.
¿Qué fallos concretos se corrigieron?
El primer fallo afectaba a las versiones 5.2.0 a 5.2.1, 6.0.0 a 6.1.8 (incluida 6.1.0-rc.0) y 7.0.0-rc.0 a 7.0.3. El segundo afectaba a las mismas versiones v6 y v7, más 5.1.0 a 5.2.1 en la línea v5.
La corrección da a la firma y la contabilidad un método compartido para resolver salidas anteriores, rechaza valores o scripts conflictivos y exige un monto para cada entrada durante el cálculo de tarifas.
¿Cómo se produce el riesgo en la práctica?
El formato afectado es una transacción de Bitcoin parcialmente firmada (PSBT), definida por BIP3 174 como una forma de pasar información de transacción y firmas entre clientes. El riesgo afecta a las aplicaciones que importan estos paquetes y confían en el cálculo de tarifas o la salvaguarda de tarifas excesivas de bitcoinjs-lib sin verificar de forma independiente los outputs4 que se gastan.
En un ejemplo hipotético del segundo fallo, la tarifa real era de 91.000 satoshis pero la reportada era de 1.000 satoshis. La pérdida real requiere que se transmita y acepte una transacción válida y autorizada; estos defectos no crean firmas.
Por qué importa
La pérdida solo ocurre si se firma, se transmite y se acepta la transacción: los fallos no crean firmas.
🐥 Revisa importes y comisión antes de firmar.
Notas
- Satoshi: Unidad más pequeña utilizada habitualmente en Bitcoin. Un bitcoin equivale a 100.000.000 de satoshis. Ver en el glosario ↩
- PSBT: Siglas de Partially Signed Bitcoin Transaction. Es un formato para intercambiar una transacción incompleta junto con la información necesaria para que distintos participantes puedan revisarla o firmarla. Ver en el glosario ↩
- BIP: Siglas de Bitcoin Improvement Proposal. Es un documento que propone o describe mejoras, estándares y procesos relacionados con Bitcoin. Ver en el glosario ↩
- Output: Salida de una transacción que asigna una cantidad de bitcoin a unas condiciones de gasto determinadas. Ver en el glosario ↩
Para entenderlo
Fuentes
Enlaces utilizados para verificar y contextualizar esta pieza. Priorizamos fuentes primarias cuando están disponibles.
Actualizaciones
- Publicación inicial
