Tu wallet puede estar comprometida
sin que nadie la haya tocado

Si la semilla nació de un firmware con un defecto de entropía, el atacante no necesita robarte nada: reconstruye la clave y firma una transacción perfectamente válida. Esta aplicación inventaría de dónde viene cada una de tus claves, la contrasta con los avisos publicados y te dice qué hacer, con evidencia.

Dependencias: 0 Telemetría: 0 Claves privadas: nunca Windows · Linux · macOS MIT

Por qué existe

Dos incidentes de 2026, una misma lección

El protocolo Bitcoin no fue vulnerado en ninguno de los dos. Y aun así, ambos cambiaron el riesgo real de miles de personas.

COLDCARD, julio de 2026

Ciertas versiones de firmware generaban semillas con mucha menos entropía de la esperada. El dispositivo siguió fuera de línea todo el tiempo; las claves eran, sencillamente, reconstruibles. Actualizar el firmware no repara una semilla ya creada.

Trezor, agosto de 2026

Un proveedor logístico expuso datos de pedidos. Ni una clave comprometida, pero con nombre, teléfono y dirección el phishing deja de ser genérico y pasa a ser creíble. La superficie de una wallet incluye a quien la usa.

Lo que no se ve mirando

Una clave con 32 bits de azar y otra con 256 producen direcciones idénticas en forma. No hay análisis público que las distinga. La única respuesta es saber cómo nació cada clave: fabricante, modelo, firmware y método.

Qué hace

Once reglas, causa raíz y siguiente paso

Cada hallazgo trae qué ocurre, por qué ocurre, la evidencia que lo sostiene y los pasos de remediación —tomados del aviso del fabricante cuando existe.

📘 Ficha completa de las 26 reglas →

Código Detecta Severidad
BTC-KEY-001Semilla creada con firmware afectado por un avisoCrítica
BTC-KEY-002No se puede demostrar con qué firmware nació la claveAlta / media
BTC-KEY-003Origen de entropía desconocidoMedia
BTC-CUSTODY-001Alto valor bajo una sola claveCrítica
BTC-CUSTODY-002Multisig sin diversidad de fabricantesAlta / media
BTC-TX-001Gasto observado sin aprobación conocidaCrítica
BTC-NODE-001…004Nodo caído, sin sincronizar, aislado o con mempool saturadoAlta / media
BTC-PRIVACY-001Acceso masivo a datos de clientesCrítica / media

Inventario de procedencia

Wallets, firmantes, fabricante, modelo y firmware al crear la semilla. Nunca claves.

Matriz de avisos fechada

Rangos afectados por modelo y canal, con su fecha de verificación a la vista.

Bitcoin Core en solo lectura

Once métodos de consulta en allowlist. Firmar, enviar o desbloquear se rechaza antes de salir.

Auditoría encadenada

Cada acción incluye el hash de la anterior: alterar el pasado rompe la cadena y se detecta.

La prueba

Las promesas se ejecutan, no se leen

En cada cambio, la integración continua arranca la aplicación real y le intenta entregar semillas, mnemónicos, passphrases y claves privadas extendidas. Si alguna vez las aceptara, la compilación falla y ese cambio no se publica.

$ node scripts/check-security-claims.js
  ok  allowlist RPC solo de lectura (11 métodos)
  ok  RPC remoto rechazado por defecto
  ok  bind por defecto en loopback
  ok  watchtower apagado por defecto
  ok  cabecera CSP self-only
  ok  mutación sin cabecera local rechazada
  ok  material secreto rechazado (seed)
  ok  material secreto rechazado (mnemonic anidado)
  ok  material secreto rechazado (passphrase)
  ok  material secreto rechazado (xprv en texto libre)
  ok  procedencia pública aceptada
Invariantes de seguridad verificados: 20 comprobaciones.

El artefacto se arranca antes de publicarse

En cada release, el instalador se instala en silencio y la aplicación instalada tiene que responder con inventario. Un binario que pesa lo esperado puede abrirse vacío; aquí eso no llega a publicarse.

El runtime viaja verificado

El motor Node.js oficial se descarga y se comprueba contra su SHA-256 publicado. La versión exacta y su hash quedan escritos dentro del propio paquete, en BUILD-INFO.json.

Honestidad

Lo que hace y lo que no

Un detector que no declara sus límites produce una falsa sensación de cobertura. En custodia de bitcoin, eso cuesta dinero real.

Sí hace

  • Inventariar la procedencia de claves y firmantes
  • Cruzarla con avisos de seguridad publicados
  • Detectar concentración y multisig sin diversidad
  • Vigilar gastos fuera de política contra tu nodo
  • Levantar incidentes con causa raíz y runbook
  • Cifrar el estado local con AES-256-GCM

No hace, y no podría

  • Pedir, guardar o derivar tus claves y semillas
  • Firmar o transmitir transacciones
  • Cancelar o revertir una transacción confirmada
  • Adivinar si una semilla es débil mirando una dirección
  • Impedir un gasto si el atacante ya tiene la clave
  • Sustituir una auditoría criptográfica profesional

Instalar

Dos formatos, sin requisitos previos

No hace falta tener Node.js instalado ni permisos de administrador. Verifica siempre la descarga contra SHA256SUMS.txt antes de ejecutar nada.

Instalador de Windows

Instalación por usuario, accesos directos y desinstalador. Los datos quedan aparte del programa, así que actualizar no los pisa.

ZIP portable

Descomprimir y ejecutar. Ideal para equipos donde no se instala software o para auditar el contenido antes de usarlo.

Desde el código

Windows, Linux y macOS con Node 22.12 o superior. Sin npm install, porque no hay nada que instalar.

PS> Get-FileHash .\RootCause-Bitcoin-Defense-0.2.0-win-x64-setup.exe -Algorithm SHA256
$ git clone https://github.com/vladimiracunadev-create/rootcause-bitcoin-defense
$ node src/server.js   → http://127.0.0.1:8787

Familia RootCause

Un mismo criterio, cuatro superficies

Causa raíz con evidencia, todo local, telemetría cero y los límites por delante. Cada edición lleva esa idea a su dominio.

Windows Inspector

Sistema operativo: CPU, disco, red, procesos, autoarranque y servicios. Rust.

Web Inspector

Navegador: cookies, sesiones, extensiones, descargas y permisos. JavaScript sin dependencias.

Mobile Inspector

Android e iOS: consumo por app, stalkerware y permisos. Flutter.

Bitcoin Defense

Custodia Bitcoin: procedencia de claves, avisos de firmware y gasto fuera de política. Estás aquí.