-
Las carteras afectadas podrรญan reflejar un balance superior al real.ย
-
ZenGo notificรณ a las compaรฑรญas afectadas sobre la vulnerabilidad hace tres meses.ย
Desarrolladores de la cartera de criptomonedas ZenGo revelaron este jueves 2 de julio una vulnerabilidad que exponรญa a varias carteras de Bitcoin a ataques de doble gasto. Esto pues las carteras reflejaban un incremento de balance por transacciones no confirmadas, que no decrecรญa cuando las transacciones eran canceladas.
ZenGo seรฑala en su reporte que se trata de un conjunto de vulnerabilidades a las que denomina ยซBigSpenderยป y que afecta a carteras de Bitcoin conocidas, entre las cuales menciona a Ledger Live, BRD y Edge. Estas vulnerabilidades ยซpueden exponer a los usuarios a ataques de gastos dobles y mรบltiples (de allรญ el nombre BigSpender) y potencialmente impedir que gasten su balanceยป, dice el reporte.
El riesgo de doble gasto
La principal vulnerabilidad que aprovecha BigSpender, segรบn ZenGO, es que las carteras vulnerables no estaban preparadas para la opciรณn de que una transacciรณn pueda ser cancelada a travรฉs de la funcionalidad Replace by Fee (RBF) -explicada mรกs abajo- e implรญcitamente asumรญan que serรญa finalmente confirmada.
Una de las consecuencias de esta falla es que el balance de la cartera aumenta con una transacciรณn entrante no confirmada. Aรบn si la transacciรณn es cancelada, en la cartera vulnerable no se refleja la cancelaciรณn y el balance queda falsamente aumentado.
Aprovechando esta falla, los potenciales atacantes pueden enviar a la vรญctima potencial una transacciรณn con comisiones mรญnimas, para retrasar la confirmaciรณn de esta. Solicitarรญan bienes o servicios a cambio de los fondos enviados y cancelarรญan inmediatamente la transacciรณn. Las carteras vulnerables no restituirรญan el balance de acuerdo a la cancelaciรณn y este quedarรญa reflejando un valor mayor que el real.
Si el receptor de la transacciรณn entrega el producto correspondiente, habrรญa sido robado sin advertirlo, por la falla de su cartera.
Cancelaciรณn de transacciones
Para que el atacante pueda cancelar una transacciรณn, la envรญa con comisiones mรญnimas y la marca como reemplazable. La primera condiciรณn garantiza que dicha transacciรณn demorarรก en ser confirmada, mientras que la segunda condiciรณn permite reemplazar la primera transacciรณn por otra que envรญe las mismas monedas, pero con comisiรณn mayor โpara acelerar su confirmaciรณn-. Este mรฉtodo es posible gracias al protocolo Replace by Fee o RBF.
El atacante coloca como salida de esa segunda transacciรณn, otra direcciรณn diferente a la de la cartera de la vรญctima potencial. Al ser confirmada esta, la primera transacciรณn enviada queda anulada. Usando RBF, se envรญan los fondos a una direcciรณn diferente de la original, pero que estรฉ bajo control del atacante.
Tanto los desarrolladores de carteras como los usuarios deben asegurarse de que su cartera haga un manejo adecuado de las transacciones RBF, seรฑala ZenGo. Los usuarios deben comprobar que una transacciรณn estรก confirmada antes de entregar cualquier producto o servicio, mientras que los desarrolladores deben asegurarse de que las transacciones pendientes no incrementen el balance de la cartera antes de que estรฉn confirmadas.
Otras modalidades de los ataques
Una segunda modalidad de este ataque consistรญa en hacerlo repetitivo para inflar artificialmente el balance que refleja la cartera vulnerable y poder reclamar mรกs bienes o servicios. Un atacante podrรญa, con 10 dรณlares en saldo, realizar un gasto por un producto de hasta mil dรณlares.
Aun si la vรญctima advierte que estรก siendo atacada y no entrega ningรบn producto a cambio de los supuestos fondos recibidos, aรบn puede ser vรญctima de un tercer tipo de ataque, similar a una denegaciรณn de servicio.
En este escenario, como la cartera tiene el balance incorrecto fallarรญa en algunas acciones, por ejemplo, en la funciรณn โEnviar todos los fondosโ. Tambiรฉn habrรญa fallas cuando la cartera intente extraer fondos de una transacciรณn no existente, refiere ZenGo.
Protecciรณn ante el ataque
Como protecciรณn y mitigaciรณn, desde ZenGo recomiendan a los usuarios utilizar solo carteras que manejen las transacciones marcadas con RBF de manera correcta, es decir, sin reflejar el saldo antes de la confirmaciรณn.
En caso de usar una cartera vulnerable, el usuario debe verificar en un explorador de bloques que la transacciรณn haya sido confirmada antes de entregar cualquier bien o servicio.
Los desarrolladores, por su parte, deben verificar el comportamiento de sus aplicaciones respecto a cancelaciones y transacciones con RBF. Un correctivo podrรญa ser colocar las transacciones pendientes aparte de las confirmadas y no sumarlas al balance total antes de que todo estรฉ en orden. Si la transacciรณn es cancelada, esto debe reflejarse en el historial de transacciones del usuario.
Para contribuir a la correcciรณn de la soluciรณn, ZenGo puso a disposiciรณn de los desarrolladores una herramienta en su GitHub.
En la tabla siguiente aparecen los detalles de las carteras vulnerables respecto a los tres ataques y las nuevas versiones de las mismas que corrigen la vulnerabilidad.
Como se aprecia en la tabla, las carteras BRD y Ledger Live cuentan con nuevas versiones que resuelven las fallas detectadas, mientras que la cartera Edge continรบa con la vulnerabilidad bรกsica, si bien se encuentra en proceso de correcciรณn. Se recomienda a los usuarios actualizar a las รบltimas versiones para protegerse de la vulnerabilidad.
CriptoNoticias reportรณ que en diciembre pasado el equipo de Kraken Security Labs encontrรณ una vulnerabilidad grave en las carteras frรญas de criptomonedas KeepKey, que les permitiรณ extraer semillas, con solo tener acceso fรญsico a la billetera durante aproximadamente 15 minutos. Los analistas de Kraken Security Labs seรฑalaron que, para identificar la vulnerabilidad,โฏrealizaron un ataque de falla de voltaje oโฏvoltage glitchingโฏmediante el cual lograron extraer la semilla encriptada.