Servidores Electrum maliciosos reemplazaron pagos transmitidos por transacciones bitcoin falsas de tarifa cero; la corrección llegó en la 4.8.3
Puntos clave
- •Electrum lanzó la versión 4.8.3 para corregir una falla de gravedad alta relacionada con servidores maliciosos que intercambiaban pagos transmitidos; el mantenedor SomberNight publicó el aviso GHSA-6jp4-8v48-cc5v el 24 de octubre e instó a los usuarios a actualizar.
- •El ataque funcionaba porque las versiones anteriores no verificaban las firmas de las transacciones del mempool, por lo que una transacción falsa de tarifa cero aparecía como pendiente y una subida de tarifa mediante Replace-By-Fee hacía que la wallet de la víctima firmara la versión del atacante con una firma válida.
- •Una víctima documentada que usaba un multisig legacy P2SH 2-de-3 con dos Trezor recibió una transacción falsa con scriptSigs idénticos byte a byte en 31 entradas, cuya dirección de destino imitaba los últimos cuatro caracteres de la genuina, terminando en GyQ3.
- •La corrección, introducida en el commit 90fe308, verifica las firmas en las entradas propiedad del wallet antes de añadir transacciones del mempool al historial local, pero los pagos entrantes sin confirmar todavía no pueden verificarse por completo con la wallet hasta que se confirman en la blockchain.
- •Electrum recomienda a quienes no puedan actualizar verificar las direcciones y montos de las salidas antes de firmar cualquier cosa, incluidas las subidas de tarifa, y los usuarios que se conectaron solo a sus propios servidores nunca se vieron afectados.

Servidores Electrum maliciosos han estado reemplazando los pagos bitcoin recién transmitidos por los usuarios con transacciones falsas de tarifa cero que pagan a direcciones similares, apostando a que las víctimas subirían la tarifa y firmarían la versión del atacante. Electrum lanzó la versión 4.8.3 el 24 de octubre para corregir la falla de gravedad alta. El mantenedor SomberNight publicó el aviso GHSA-6jp4-8v48-cc5v el mismo día y pidió a los usuarios actualizar.
Cómo funciona el ataque
Electrum es un cliente ligero: no ejecuta un nodo completo de bitcoin y depende de su servidor para obtener información sobre las transacciones sin confirmar en el mempool, tal como explica la documentación del propio proyecto. Cuando un usuario firma y envía una transacción (tx1), un servidor malicioso puede detenerla y entregar a la wallet una transacción distinta (tx2) que envía el dinero a una dirección del atacante.
Tx2 lleva firmas inválidas. Las versiones anteriores de Electrum no verificaban las firmas de las transacciones del mempool, por lo que la wallet mostraba tx2 como pendiente y ocultaba tx1. Replace-By-Fee (RBF) permite al remitente retransmitir una transacción sin confirmar con una tarifa más alta. Si la tarifa de la transacción falsa se incrementa, la wallet firma la versión del atacante con una firma válida. Esto convierte un paso rutinario — subir la tarifa de un pago que parece atascado — en el momento en que la propia wallet de la víctima firma la transacción del atacante.
La dirección falsificada compartía una terminación GyQ3 con el destino legítimo
Una de las objetivos, conocida como dannydeezy, documentó el ataque. La configuración era un multisig legacy P2SH 2-de-3 con dos Trezor, 31 entradas y una salida. El usuario verificó la salida en ambos Trezor y luego transmitió. Los Trezor verificaron la transacción genuina antes de que saliera de la wallet; la versión del atacante solo apareció después, entregada por el servidor malicioso, por lo que las verificaciones en el dispositivo nunca la vieron. El historial de la wallet mostró entonces el monto completo dirigido a una dirección desconocida como sin confirmar, y la entrada luego cambió a "Local". En Electrum, "Local" marca una transacción conocida solo por la wallet y no visible en la red.
La transacción falsa replicó las entradas, la versión y el locktime de la transacción real, con scriptSigs idénticos byte a byte en las 31 entradas. Las 62 firmas coincidían con la transacción real; ninguna coincidía con la falsa. Casi todos los fondos fueron a una dirección similar, con un pequeño monto devuelto a una de las direcciones ya usadas de la propia wallet.
La falsa terminaba en GyQ3 — y el destino real también. El atacante había encontrado una dirección que coincidía con los últimos cuatro caracteres de la dirección correcta. ZachXBT también ha señalado una estafa similar de envenenamiento de direcciones que afecta a usuarios de la wallet Phantom; las direcciones falsificadas están diseñadas para engañar a quien solo mira el primer y el último carácter.
La versión 4.8.3 verifica las firmas solo en las entradas propiedad del wallet
Otro usuario, Raju-K12, reportó de forma privada el 18 de octubre que subió la tarifa de la transacción falsa y perdió dinero. Según los mantenedores, algunos serv están ejecutando el ataque en la práctica.
El commit 90fe308 agrega una verificación de las firmas en las entradas "is_mine" propiedad del wallet antes de añadir una transacción del mempool al historial local. La versión 4.8.3 se etiquetó en git el 23 de octubre y los binarios se publicaron al día siguiente.
Electrum sigue verificando solo las entradas que la wallet controla, por lo que las transacciones entrantes sin confirmar no se verifican, ya que el cliente no tiene un intérprete de scripts completo. Para los receptores, esto significa que un pago entrante pendiente no puede verificarse por completo solo con la wallet hasta que se confirme en la blockchain. La medida provisional de Electrum para quienes no puedan actualizar es verificar las direcciones y los montos de las salidas antes de firmar cualquier cosa, incluidas las subidas de tarifa. Los usuarios que se conectaron únicamente a sus propios servidores nunca se vieron afectados.
Electrum ha publicado correcciones de emergencia en el pasado. En enero de 2018, cerró una interfaz JSON RPC que había quedado abierta durante unos dos años, después de que el investigador de Google Tavis Ormandy descubriera que un sitio web podía detectar el puerto y drenar fondos. Cryptopolitan reportó que la advertencia sobre un error en la generación de semillas de Coldcard llegó en julio, el mismo día en que aproximadamente 594 BTC — alrededor de 38 millones de dólares — fueron drenados de unas 500 wallets.