Cargando precios…

Cómo revocar aprobaciones de tokens y por qué deberías hacerlo

Las aprobaciones de tokens infinitas y antiguas son una superficie de ataque silenciosa en Ethereum y otras cadenas EVM. Aquí te explicamos cómo encontrarlas, revocarlas de forma segura y sustituirlas por aprobaciones finitas.

Cómo revocar aprobaciones de tokens y por qué deberías hacerlo

Qué es realmente una aprobación de token

Cuando intercambias un token en Uniswap, prestas ETH en Aave o haces un bridge con USDC entre cadenas, en realidad no entregas tus tokens al protocolo. Firmas un pequeño mensaje on-chain que dice: "el contrato inteligente X puede retirar hasta N del token Y de mi wallet." Ese permiso firmado se llama aprobación ERC-20 y vive on-chain para siempre, a menos que tú, o el propio contrato, lo cancele.

La razón por la que existen las aprobaciones es técnica. Los tokens ERC-20 son activos tontos estilo bearer: no tienen el concepto de "Alice le presta 100 USDC a Bob." Solo entienden balances y allowances. Para permitir que un contrato de terceros, como un router de un DEX o un pool de préstamos, mueva tus tokens por ti, hay que concederle un allowance, que se establece con dos funciones: approve e increaseAllowance.

La mayoría de los protocolos piden el valor máximo posible, el mayor entero sin signo de 256 bits (2^256 menos 1), porque así se ahorran tener que pedirte que firmes una aprobación nueva cada vez que interactúas. Desde el punto de vista de UX, las aprobaciones infinitas son cómodas. Desde el punto de vista de seguridad, crean un permiso que puede que olvides que concediste.

Por qué las aprobaciones infinitas son peligrosas

Una aprobación infinita no es "riesgo infinito" por sí misma. Es solo tan peligrosa como el contrato que tiene el allowance. Si el protocolo que aprobaste está bien auditado, probado con el tiempo y sigue operado por el mismo equipo, la aprobación es más o menos tan segura como el propio protocolo. El peligro aparece en tres situaciones concretas, y son lo bastante comunes como para tomárselas en serio.

Primero, los protocolos son hackeados. Un contrato inteligente puede explotarse mediante un bug de lógica, una manipulación del oráculo de precios o un ataque de gobernanza. Si el atacante puede llamar a transferFrom contra una lista de usuarios aprobados, una aprobación infinita convierte un bug del protocolo en un vaciado directo de tus tokens. Esto no es hipotético: varios incidentes conocidos de DeFi en los últimos años incluyeron rutas de drenaje de tokens que se aprovechaban de allowances activas.

Segundo, los proyectos se abandonan y luego alguien los re-despliega con el mismo nombre o en la misma dirección. Una vez que un equipo deja un contrato, el bytecode que permanece en esa dirección es solo código. Si un nuevo owner o mecanismo de upgrade permite que un atacante se convierta en admin, tu antigua aprobación ahora apunta a una entidad hostil.

Tercero, y este es el que más subestiman la mayoría de usuarios, los kits de vaciado de wallets filtran activamente las wallets con aprobaciones olvidadas. Cuando firmas una firma maliciosa en un sitio de phishing, el kit no roba solo el token que aparece en la página; recorre cada allowance activa que tu wallet haya concedido alguna vez y retira cada una. El daño de un solo clic de phishing escala con la superficie antigua que tengas expuesta. Menos aprobaciones abiertas significa un radio de explosión más pequeño.

Qué aprobaciones son realmente seguras de mantener

No todas las aprobaciones son una bomba de relojería, y perseguir tener cero aprobaciones es a la vez poco práctico y sin sentido. El objetivo es reducir tu superficie de ataque, no anular la capacidad de funcionamiento de tu wallet. Una regla general razonable tiene tres niveles.

Mantén las aprobaciones a contratos que uses activamente, que estén gestionados por equipos reputados, que hayan sido auditados y que no hayan sido explotados recientemente. Si sigues usando Aave o Uniswap cada semana, la aprobación que gestionan esos front-ends es parte de cómo funciona el sistema. Revocarla solo significa volver a firmar la próxima vez que hagas una transacción, lo que cuesta gas y un poco de atención.

Reduce las aprobaciones infinitas en contratos que uses raramente. Los wallets modernos como Rabby, Frame y el flujo actualizado de MetaMask establecen por defecto una asignación finita basada en el monto de la transacción. Si un contrato que tocaste una vez todavía tiene una aprobación infinita de hace dos años, déjala en cero o en una cantidad finita pequeña.

Revoca las aprobaciones de cualquier cosa que no reconozcas, de cualquier cosa que muestre un nombre que nunca hayas oído, y especialmente de cualquier cosa cuyo contrato no esté verificado en Etherscan. Los contratos no verificados con asignaciones activas son el patrón más habitual que explotan los drainer kits.

Cómo encontrar cada aprobación que ha concedido tu wallet

Hay dos herramientas que vale la pena confiar para este trabajo, y cubren casi todas las cadenas EVM en uso activo. La primera es Revoke.cash, una dApp de código abierto creada específicamente para la gestión de asignaciones. Conectas tu wallet, escanea la cadena y lista cada contrato que actualmente tiene una asignación distinta de cero sobre tus tokens, agrupados por token. Cada fila muestra el gastador (spender), la asignación actual y un enlace directo a la transacción de revocación on-chain.

La segunda es el comprobador de aprobaciones de tokens de Etherscan, disponible en Etherscan para Ethereum y en los exploradores de bloques equivalentes para cadenas como BNB Chain, Polygon, Arbitrum, Optimism y Base. Pegas la dirección de tu wallet, accedes a la pestaña de aprobaciones y ves los mismos datos con una interfaz algo más técnica. Etherscan es útil como verificación cruzada porque Revoke.cash a veces se deja asignaciones en tokens más nuevos o menos comunes.

Sea cual sea la herramienta que uses, el flujo de trabajo es el mismo. Lee cada gastador. Si no lo reconoces, márcalo para revocar. Si lo reconoces, decide si todavía lo necesitas y si quieres dejar la asignación como infinita. Ten en cuenta que revocar es una transacción de escritura: cuesta gas, así que hazlo por lotes en un momento de bajas comisiones en lugar de una por una en horas punta.

Cómo revocar aprobaciones de tokens paso a paso

Aquí tienes el flujo de trabajo práctico que siguen los usuarios experimentados de DeFi. Se asume que estás usando un wallet de autocustodia como Rabby, MetaMask, Frame o Ledger Live y que tienes una pequeña cantidad de ETH en la cadena que estás limpiando, suficiente para cubrir el gas.

Abre Revoke.cash en tu navegador. Conecta el wallet que quieres auditar. El sitio se abrirá por defecto en Ethereum mainnet; si tus aprobaciones están en otra cadena EVM como Arbitrum, Polygon o BNB Chain, cambia el selector de red en la parte superior de la página. El sitio obtendrá entonces cada token que tienes y cada asignación activa de una sola pasada.

Revisa la lista. Para cada gastador que no reconozcas, o cualquier gastador al que ya no quieras confiar una asignación permanente, haz clic en el botón de revocar que aparece junto a él. Tu wallet mostrará una solicitud de transacción que establece la asignación a cero. Confírmala y paga la comisión de gas.

Para las aprobaciones que quieras mantener pero reducir, Revoke.cash te permite establecer un valor personalizado en lugar de cero. Un patrón habitual es fijar la asignación al monto exacto necesario para la siguiente transacción, que los wallets modernos pueden rellenar automáticamente por ti. Después de que se confirmen tus transacciones de revocación, refresca la página y comprueba que la asignación ahora sea cero o el nuevo valor finito.

Repite el proceso para cualquier otra cadena en la que hayas hecho actividad DeFi significativa. Muchos usuarios se sorprenden al encontrar aprobaciones en cadenas que usaron una vez para un airdrop y se olvidaron. Cada cadena necesita su propia pasada, ya que las asignaciones no son cross-chain por defecto.

Cómo establecer aprobaciones finitas en adelante

El mejor hábito que puedes construir después de limpiar tu wallet es dejar de firmar aprobaciones infinitas desde el principio. La defensa está integrada en la mayoría de las UIs de los wallets modernos, pero tienes que fijarte en ella.

Cuando una dApp pida una asignación, mira el valor. Si el valor por defecto es el número máximo de 256 bits, tu wallet está ofreciendo la ruta infinita heredada. Si el valor por defecto es el monto exacto del swap o del depósito, tu wallet está ofreciendo una aprobación finita. Rabby y Frame tienen por defecto finita para contratos conocidos. MetaMask ha evolucionado hacia valores por defecto finitos en sus versiones más recientes, aunque los flujos más antiguos aún exponen la opción heredada.

Si un contrato exige una aprobación infinita y no ofrece ninguna opción finita, trátalo como una señal de alerta amarilla. Algunos contratos realmente necesitan una asignación permanente, como los agregadores DEX que enrutan a través de múltiples pools, pero la mayoría no. En caso de duda, aprueba el monto exacto para la transacción que estás a punto de hacer, y revoca o reduce la asignación en cuanto se complete la acción.

Otro hábito práctico es usar un wallet "caliente" separado para actividades de alto riesgo como farming de airdrops, interacciones en testnet y firmar dApps desconocidas, y un wallet "frío" separado para tenencias a largo plazo y posiciones grandes en DeFi. El wallet caliente recibe los clics de phishing; el wallet frío solo interactúa con protocolos auditados y bien conocidos. Incluso si un drainer kit vacía tu wallet caliente, tu stack principal está en un wallet con una superficie de aprobaciones mucho menor.

Cómo se ve esto cuando algo sale mal

Merece la pena ser concretos sobre cómo es un drain en la práctica, porque el miedo a que «mis aprobaciones sean explotadas» a veces se trata como algo abstracto. Imagina que firmaste una aprobación infinita de USDT para un router de un DEX pequeño hace dieciocho meses. El DEX cerró, el equipo siguió adelante y la dirección del contrato fue tomada más tarde por un desplegador distinto.

Seis meses después, visitas un sitio de aspecto familiar, haces clic en lo que crees que es una aprobación rutinaria y en realidad firmas un permit malicioso o una autorización fuera de la cadena. El kit de drain ve que tu wallet todavía tiene una asignación infinita a ese router. En una sola transacción, llama a transferFrom y retira todo tu saldo de USDT. La transacción es válida, la asignación era real y no hay vuelta atrás.

Ahora imagina la misma wallet, pero revocaste la asignación de USDT a ese router seis meses antes y la sustituiste por un cero. El kit de drain escanea tu wallet, no encuentra nada que retirar para ese token y sigue adelante. El coste de la revocación original fueron unos pocos céntimos de gas; el coste de no revocar fue todo tu saldo de USDT. La cuenta no es sutil.

Cómo seguir el riesgo de aprobaciones de forma inteligente

La higiene de aprobaciones es una de las pocas áreas de la seguridad cripto donde el usuario tiene realmente control directo, pero es fácil olvidarlo una vez que tu wallet está «funcionando». Zippfeed rastrea las noticias relacionadas con aprobaciones de tokens, incluyendo exploits de protocolos, campañas de kits de drain y actualizaciones de seguridad de wallets, con puntuación de sentimiento (bullish, neutral o bearish) y una calificación de importancia, para que puedas detectar nuevos patrones de ataque antes de que lleguen a tu bandeja de entrada en lugar de después de que lleguen a tu wallet.

Preguntas frecuentes

¿Es seguro revocar aprobaciones de tokens?
Revocar una aprobación es una de las acciones on-chain más seguras que puedes realizar. Solo cambia el valor del allowance en el estado del contrato ERC-20, no mueve ningún token y no se puede utilizar para vaciar tu wallet. El único coste es el gas de la transacción. Si no estás seguro, revoca primero las aprobaciones de contratos que no reconozcas; siempre puedes volver a aprobarlas más tarde cuando las necesites.
¿Cómo revoco aprobaciones de tokens en Etherscan?
Ve a Etherscan.io, pega la dirección de tu wallet en la barra de búsqueda y abre el panel de aprobaciones de tokens. Verás cada contrato con un allowance distinto de cero sobre tus tokens. Haz clic en revoke junto a cualquier aprobación que quieras cancelar, confirma la transacción en tu wallet y paga la comisión de gas. El mismo flujo funciona en los exploradores de bloques de BNB Chain, Polygon, Arbitrum, Optimism y Base.
¿Debería revocar todas mis aprobaciones de golpe?
Revocarlo todo es seguro, pero suele ser un desperdicio: pagarás gas por revocar aprobaciones que ibas a volver a firmar en tu próxima transacción. Un mejor enfoque es revocar primero las aprobaciones de contratos desconocidos y no verificados, reducir las aprobaciones infinitas a contratos que uses raramente y dejar en su lugar solo las aprobaciones finitas o activas a protocolos en los que realmente confías y utilizas. Este artículo es educativo y no constituye asesoramiento financiero; verifica siempre los contratos por tu cuenta antes de aprobar.
¿Los drainer kits realmente aprovechan aprobaciones antiguas?
Sí. Los kits de wallet drainer que se venden en mercados criminales incluyen módulos que escanean la dirección de una víctima en busca de allowances ERC-20 activos y llaman a transferFrom contra cada uno en una sola transacción. Cuantas más aprobaciones antiguas o no reconocidas tengas, mayor será el radio de daño de una sola firma de phishing. Mantener tu lista de aprobaciones corta y finita es una de las formas más efectivas de reducir esa superficie de ataque.
Tokens relacionados
$ETH $USDT $USDC