Drenadores de Billeteras (Wallet Drainers): Análisis de firmas maliciosas permitidas sin darse cuenta

Drenadores de Billeteras (Wallet Drainers): Análisis de firmas maliciosas permitidas sin darse cuenta

Los Wallet Drainers son scripts maliciosos desplegados en sitios web de phishing que automatizan el vaciado de activos cripto sin necesidad de robar la frase semilla del usuario. Explotan la confianza del usuario al solicitar firmas criptográficas legítimas pero con permisos abusivos u opacos.

1. Mecánica de explotación: Firmas off-chain vs. Transacciones on-chain

A diferencia de una transferencia directa de fondos (donde el usuario aprueba el envío explícito de una cantidad de tokens a otra dirección), los drainers modernos operan mediante la delegación de permisos de gasto.

El usuario no transfiere sus fondos directamente en la interacción inicial; en su lugar, firma digitalmente un mensaje o aprueba un contrato que otorga al atacante el derecho de retirar los activos en una transacción posterior independiente.

[ Víctima en DApp Falsa ] ──► [ Solicita Firma de Mensaje / Permiso ] ──► [ Firma Criptográfica ]
                                                                               │
                                                                               ▼
[ Billetera del Atacante ] ◄── [ Ejecución del Drenaje On-Chain ] ◄── [ Contrato Malicioso ]

2. Tipología de funciones y estándares de firma maliciosos

A. Approval y SetApprovalForAll (ERC-20, ERC-721, ERC-1155)

  • Funcionamiento: La función approve (ERC-20) o setApprovalForAll (NFTs) autoriza a un tercero (spender) a manipular los activos del usuario.
  • Vector del ataque: Los drainers configuran el valor de aprobación en $2^{256} – 1$ (aprobación ilimitada) o marcan como true el permiso sobre colecciones enteras de NFTs. Con esta firma, el atacante ejecuta la función transferFrom desde su propia cuenta en el momento que desee.

B. Estándar EIP-2612 (Permit) y Uniswap Permit2

  • Funcionamiento: Permite aprobar el gasto de tokens ERC-20 sin gastar gas, mediante una firma de mensaje estructurado (EIP-712) fuera de la cadena (off-chain).
  • Vector del ataque: El usuario cree que está realizando un inicio de sesión o una verificación inofensiva porque la interfaz de la wallet no muestra coste de gas. Sin embargo, la firma contiene un parámetro permit con fecha de caducidad, límite ilimitado y la dirección del atacante como beneficiario. El atacante envía esa firma a la blockchain pagando el gas él mismo y drena los fondos.

C. Firma Ciega con eth_sign (Legacy)

  • Funcionamiento:eth_sign es un método rudimentario que permite firmar un hash arbitrario de 32 bytes de datos binarios sin estructura legible.
  • Vector del ataque: Al no tener una estructura definida, las billeteras no pueden interpretar qué se está firmando. Un atacante puede codificar una transacción completa de transferencia de fondos o aprobación de contrato dentro del hash. La víctima aprueba una cadena opaca de caracteres y autoriza el drenaje total.

3. Matriz de riesgo por función de firma

Función / EstándarTipo de InteracciónVisibilidad en WalletNivel de Riesgo
eth_signFirma de datos crudos (Hash)Totalmente opaca (Sin datos)Crítico (Peligro extremo)
SetApprovalForAllTransacción On-ChainMuestra la colección afectadaAlto (Acceso a todos tus NFTs)
Permit / Permit2 (EIP-712)Firma de mensaje Off-ChainMuestra mensaje estructuradoAlto (Aprobación sin coste de gas)
IncreaseAllowanceTransacción On-ChainMuestra el token y el límiteMedio – Alto (Según el límite)
Native TransferTransacción On-ChainMuestra destino y cantidadBajo (Gasto controlado)

4. Estrategias de prevención y lectura clara (Clear Signing)

Para neutralizar la amenaza de los wallet drainers, el usuario debe basarse en capas de inspección independientes de la interfaz Web3 que está visitando:

  1. Exigir la firma clara (Clear Signing): Utiliza billeteras o dispositivos fríos (Keystone, BitBox02, Coldcard) que decodifiquen el contenido exacto de los contratos inteligentes en la pantalla del dispositivo antes de autorizar la firma, evitando la «firma ciega» (blind signing).
  2. Herramientas de simulación de transacciones: Instala extensiones de seguridad como Rabby Wallet, Pocket Universe o Wallet Guard. Estas herramientas simulan el estado de la blockchain antes de que confirmes, mostrándote una simulación visual exacta de los activos que saldrán de tu billetera.
  3. Auditoría periódica de permisos: Revisa y revoca los permisos de gasto otorgados a contratos inteligentes antiguos utilizando plataformas como Revoke.cash o los exploradores de bloques oficiales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio