Cargando precios…

Phishing con setApprovalForAll: lee las firmas del monedero antes de firmar

setApprovalForAll permite que un contrato mueva todos los NFT que posees. Las firmas permit pueden autorizar gastos de tokens con un solo clic. Ambos son los principales vectores de phishing en 2025.

Phishing con setApprovalForAll: lee las firmas del monedero antes de firmar

Por qué la mayoría de los usuarios de cripto subestiman las firmas del monedero

Las ventanas emergentes del monedero se parecen todas: el nombre de un sitio arriba, el nombre de un método en el centro y un botón Confirmar abajo. Como el aspecto apenas cambia entre un intercambio de tokens de 5 $ y un vaciado completo del monedero, los usuarios aprenden a hacer clic sin pensar. Esa costumbre es exactamente lo que explota el phishing de firmas.

La verdad es que los cuatro tipos de firma más comunes, approve(), setApprovalForAll(), permit y eth_sign, hacen cosas radicalmente distintas. Tres están bien entendidos y tienen usos legítimos. Uno, eth_sign, no tiene ningún uso legítimo en el Ethereum moderno y existe casi exclusivamente en kits de phishing. Tratarlos como intercambiables es cómo la gente pierde sus colecciones.

Antes de repasar cada uno, conviene recordar que una firma de monedero es una autorización, no solo una autenticación. Cuando firmas con tu clave privada, no te limitas a demostrar quién eres; a menudo estás entregando al destinatario permiso para mover un activo en tu nombre. La firma es el permiso.

Los tipos de firma, ordenados por la frecuencia con la que vacían monederos

No todas las firmasponen tus fondos en el mismo riesgo. Así se comparan los cuatro tipos principales, ordenados aproximadamente de los más peligrosos a los más benignos.

eth_sign: casi siempre una estafa

eth_sign produce una firma ECDSA en crudo sobre texto arbitrario, sin datos estructurados ni un dominio on-chain. No hay un formato de mensaje estándar, así que el sitio debe indicarte en lenguaje claro qué estás firmando, y la mayoría de los monederos ni siquiera la analizan. Cualquier cosa que te pida firmar un mensaje eth_sign en 2026 es abrumadoramente un intento de phishing. Algunas herramientas legítimas todavía lo usan (autenticadores antiguos, algunas consolas de depuración), pero para el uso diario en DeFi y NFT deberías tratar eth_sign como un rechazo automático.

setApprovalForAll: acceso total a NFTs

setApprovalForAll(tokenAddress, operator, true) indica al contrato del NFT que permita a una dirección de operador concreta mover cada NFT que posees de esa colección, presente y futuro. Aprobar un mercado de NFTs como OpenSea o Blur es normal: el mercado necesita transferir los NFTs cuando se cierra tu listado. El problema es que la misma llamada a un contrato de phishing entrega toda tu colección de Bored Ape, no solo un token.

El daño no tiene límite. Si más adelante minteas un nuevo NFT de esa colección, la aprobación anterior sigue cubriéndolo. Si recibes un airdrop en el mismo contrato ERC-721, el operador también puede barrerlo. No hay caducidad ni un tope por token.

Firmas Permit: aprobaciones de tokens sin gas

Permit (EIP-2612) y su sucesor Permit2 te permiten autorizar un gasto de ERC-20 con una firma fuera de la cadena en lugar de una transacción approve on-chain. La ventaja es real: sin gas, una experiencia más fluida y sin un paso de aprobación adicional. El coste es que una firma permit es un cheque en blanco que el gastador puede enviar en cualquier momento antes de la fecha límite que hayas indicado.

Las stablecoins son el objetivo principal. Un sitio de phishing que ofrezca un "reclamo de USDC" o un "comprobador de airdrops" puede solicitar en silencio un permit que ceda al atacante USDC ilimitados durante la próxima hora o más. Puedes abandonar el sitio, irte y volver horas después para descubrir que tu USDC ha desaparecido. La transacción incluso muestra el token legítimo y tu propia dirección, lo que la hace parecer normal en los exploradores de bloques.

approve(): el valor predeterminado acotado, pero aún arriesgado

approve(spender, amount) establece una asignación de tokens. Si amount es pequeño (por ejemplo, 5 USDC para un intercambio), el radio de impacto es pequeño. Si amount es la constante mágica MaxUint256 (~2^256 - 1), la aprobación es efectivamente ilimitada y se comporta de forma muy parecida a un permit.

Muchos protocolos DeFi legítimos solicitan aprobaciones ilimitadas por defecto porque solo necesitan preguntar una vez y luego liquidar más tarde. Esa comodidad también es la comodidad del atacante: cuando las claves del gastador se filtran, tus tokens se van con ellas.

Paso a paso: cómo leer la ventana emergente de un monedero antes de firmar

Da igual el monedero, la rutina es la misma. No firmes en piloto automático.

Paso 1: lee el nombre de la función

Si ves setApprovalForAll, permit o eth_sign, ve más despacio. Cada una lleva los riesgos mencionados arriba. Un intercambio limpio mostrará transferFrom o una llamada al router de swap, no una concesión de permisos.

Paso 2: lee los parámetros

Para aprobaciones, comprueba quién es el spender. Para setApprovalForAll, comprueba la dirección del operator. Contrasta ambos con el contrato real del protocolo (pestaña "Contract" en Etherscan, documentación del proyecto). Si la dirección es nueva o no tiene nombre público, trátala como hostil hasta que se demuestre lo contrario.

Paso 3: lee la simulación

Los monederos modernos (Rabby, Frame, MetaMask con simulación de Tenderly) muestran una vista previa del cambio de estado: qué tokens se mueven, en qué dirección y en qué contrato. Si la simulación está vacía o no carga, eso ya es una señal de alerta. Las firmas legítimas producen simulaciones predecibles.

Paso 4: comprueba la fecha límite

Los mensajes de permit incluyen una marca temporal de deadline. Un deadline dentro de un año es más peligroso que uno que caduca en diez minutos. El signatureTransfer de Permit2 incluye campos adicionales (witness, expiration) que determinan lo ampliamente que se puede usar la firma. Trata las fechas límite inusualmente amplias como sospechosas.

Paso 5: usa un monedero desechable dedicado

Para airdrops, mintings y sitios desconocidos, mantén un monedero aparte con solo lo que estés dispuesto a perder. Las aprobaciones en el monedero desechable nunca pueden tocar tus fondos principales. Este es el seguro más barato en cripto.

Cómo los atacantes convierten firmas legítimas en drenajes

Lo aterrador es que el atacante rara vez necesita romper ninguna criptografía. Solo necesita que hagas clic una vez en Confirmar.

La trampa clásica de listado de NFT

Llegas a una página falsa de OpenSea que imita la interfaz real. Te pide que "canceles un listado atascado" firmando un setApprovalForAll al contrato del marketplace. La mayoría de los usuarios no se dan cuenta de que "cancelar un listado" no requiere ninguna firma, así que firman. Ahora el atacante controla todos los NFT de esa colección en ese monedero, y la aprobación nunca caduca.

Firmas de marketplaces estilo Seaport

El protocolo Seaport de OpenSea usa firmas de órdenes fuera de la cadena (en lugar de listados en la cadena) para que las ofertas y listados sean más baratos. Una orden de Seaport firmada es un paquete de parámetros: zone, conduit, fulfilling components, etc. Las páginas de phishing han aprendido a imitar estas firmas porque los usuarios ven "OpenSea" en la firma y asumen que es seguro. Lee los parámetros, no el nombre del protocolo.

Phishing de permit en stablecoins

USDC y USDT admiten los permits de EIP-2612. Un sitio que "verifica tu saldo de USDC" puede ocultar un permit en el botón de Firmar. Confirmas una vez, te vas, y la firma se queda en el mempool esperando a que el atacante la envíe dentro de la ventana de validez. La transacción en la cadena parece un TransferFrom normal de USDC, lo que hace que sea más difícil detectarla después en un explorador de bloques.

El envenenamiento de direcciones se cruza con las aprobaciones

Algunos kits de phishing ahora generan una vanity address que empieza y termina con los mismos caracteres que tu contraparte real. Cuando un usuario mira el destinatario a simple vista, la coincidencia del prefijo parece correcta. El mismo truco se está adaptando a los campos del spender en las aprobaciones: el spender malicioso comparte los cuatro primeros y últimos caracteres de uno legítimo, con la esperanza de que apruebes visualmente en lugar de leer la dirección completa.

Implicaciones prácticas: cómo hacer que tu monedero sea más difícil de drenar

Leer firmas es un hábito, no un talento. Crea algunos valores predeterminados que aguanten en noches cansadas.

  • Usa Rabby o Frame como monedero de uso diario. Ambos analizan los tipos de firma comunes y los muestran en lenguaje claro, e indican la función que se está llamando, no solo el nombre del método.
  • Guarda un monedero físico para cualquier saldo significativo. Las claves de firma nunca tocan una máquina conectada a internet, así que ni siquiera un dapp malicioso puede extraer una firma utilizable.
  • Realiza una auditoría mensual de aprobaciones con revoke.cash (interfaz popular y amigable) o el comprobador de aprobaciones de Etherscan (sin inicio de sesión, datos en crudo). Revoca todo lo relativo a un contrato que no hayas usado en 90 días.
  • Sustituye las aprobaciones ilimitadas después de cada swap importante: cambia el allowance a 0 y luego vuelve a aprobar una cantidad pequeña. Esto invalida las antiguas aprobaciones ilimitadas.
  • Desactiva eth_sign en los ajustes de tu monedero si la opción existe. MetaMask, Rabby y Rainbow la muestran en los ajustes avanzados.
  • Añade a marcadores los dapps que realmente usas. La mayoría del phishing llega a los usuarios a través de anuncios de búsqueda o enlaces de Twitter, no de marcadores. Todo lo que se alcance mediante un resultado de búsqueda merece una lectura extra.

Ninguna de estas es una carga pesada. La clave es que el esfuerzo marginal de verificar una firma es pequeño, mientras que el coste de saltárselo es el monedero entero.

Preguntas frecuentes sobre el phishing de firmas

A continuación están las preguntas que los lectores escriben más a menudo en los buscadores sobre el phishing de firmas en monederos. Las respuestas se ciñen a hechos educativos, no a consejo financiero, porque el comportamiento correcto aquí depende de los saldos y el modelo de amenaza de cada lector.

Cómo seguir la seguridad de los monederos de forma inteligente

El phishing mediante firmas de monedero se mueve rápido porque la superficie de ataque se mueve rápido: cada nueva primitiva DeFi es un nuevo tipo de firma que aprender, y cada nueva función del monedero es una nueva señal visual que interpretar. Seguir aprobaciones, informes de estafas y análisis post-mortem en múltiples cadenas es un trabajo a tiempo completo, y la mayoría de los usuarios no tienen ese tiempo.

Zippfeed agrega titulares de seguridad en Ethereum y en el ecosistema cripto en general, puntúa cada historia según su sentimiento (alcista, neutral o bajista sobre el protocolo mencionado) y muestra una valoración de importancia de 0 a 100, para que puedas repasar el día en minutos, ver qué firmas y aprobaciones se están abusando ahora mismo y dejar de usar los gastadores arriesgados antes de que te vacíen el monedero.

Preguntas frecuentes

¿Es seguro firmar setApprovalForAll para un marketplace de NFT?
Es seguro cuando la dirección del operador es el contrato legítimo del marketplace (OpenSea, Blur, LooksRare, etc.), y arriesgado cuando no sabes quién es el operador. setApprovalForAll es general: cubre todos los NFT de esa colección, incluidos los que mintearás más adelante, así que solo firmalo para direcciones de marketplaces que hayas verificado de forma independiente. Cuando termines de operar, revoca la aprobación en revoke.cash para estar tranquilo.
¿Qué diferencia hay entre approve, permit y setApprovalForAll?
approve(spender, amount) fija una autorización finita o ilimitada para un token ERC-20. permit (EIP-2612) hace lo mismo fuera de la cadena, de modo que una sola firma puede autorizar más tarde una transferencia de tokens sin un paso de aprobación en la cadena. setApprovalForAll(operator, true) cubre todos los NFT de una colección en lugar de una cantidad, lo que lo hace estrictamente más potente que approve. Ninguno es malicioso por sí mismo, pero los tres se usan de forma habitual en sitios de phishing, así que lee con cuidado la dirección del spender u operador antes de confirmar.
¿Debería firmar alguna vez un mensaje eth_sign?
En el uso moderno de DeFi y NFT, prácticamente nunca. eth_sign genera una firma sin estructura y sin garantías de análisis, por eso la mayoría de monederos avisan con fuerza cuando aparece. Algunas herramientas antiguas y consolas de desarrollador sí usan eth_sign, pero para el usuario habitual la norma es tratar cualquier popup de eth_sign como un intento de phishing y rechazarlo. Si un producto legítimo lo pide, verifica antes en el canal de soporte oficial del proyecto.
¿Qué es Permit2 y por qué importa?
Permit2 es el contrato general de permisos de Uniswap (desplegado a finales de 2022) que permite a cualquier ERC-20, incluso sin soporte nativo EIP-2612, usar firmas tipo permit. Muchos monederos y agregadores ya enrutan las aprobaciones a través de Permit2 por defecto, lo cual es cómodo pero amplía la superficie de ataque: una firma de Permit2 puede incluir un campo "witness" que permite a la dapp añadir contexto arbitrario (un token, una cantidad, un destinatario) y autorizar transferencias en lote entre varios tokens. Se aplica la misma regla de higiene: lee los parámetros y la fecha límite, y nunca firmes un mensaje de Permit2 para un contrato que no reconozcas.
Tokens relacionados
$ETH $USDC