setApprovalForAll concede a un único contrato permiso para mover cada NFT de tu monedero, mientras que una firma de tipo permit (EIP-2612) puede autorizar un gasto ilimitado de ERC-20 en un solo mensaje fuera de la cadena; ambos se usan habitualmente en sitios de phishing, así que la única regla segura es leer el nombre de la función y sus parámetros antes de firmar nada.
Puntos clave
- setApprovalForAll concede acceso total a todos los NFT de tu colección, no solo a un token, lo que lo convierte en la firma de NFT más destructiva que existe.
- Las firmas Permit y Permit2 permiten a un gastador mover tus ERC-20 sin un approve on-chain aparte, de modo que siguen activas incluso después de abandonar el sitio.
- Las aprobaciones ilimitadas (sin tope de cantidad) significan que un gastador comprometido puede vaciar el saldo completo en cualquier momento hasta que las revoques.
- Revoke.cash y el comprobador de aprobaciones de Etherscan te permiten auditar y cancelar aprobaciones a posteriori, pero el hábito más seguro es nunca firmar mensajes eth_sign o permit a ciegas.
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.