Hiciste clic en "Reclamar" en una página de airdrop. La billetera abrió una ventana con una hilera de letras y números que no terminaste de entender y, abajo, un botón azul que decía "Confirmar". Le diste. La página giró dos segundos, avisó que todo había salido bien y tu saldo quedó igual, sin una moneda de menos. Cerraste la pestaña y seguiste con tu día. Unos días después abres la billetera y un token ya no está — y tu frase semilla no se la contaste a nadie, nunca le sacaste una captura, nunca la pegaste en ningún chat.
Esto no es una filtración de la frase semilla: es otra puerta, la aprobación de tokens (approve). Ese "Confirmar" que apretaste no envió monedas a ningún lado: le dio permiso a una dirección para retirar ese token de tu billetera cuando quiera, de ahí en adelante. Otro artículo del sitio cuenta 6 formas en que roban tu frase semilla o clave privada: ahí la llave se pierde. Acá la llave sigue en tu mano, pero la puerta quedó abierta una rendija porque la abriste tú mismo, y la rendija sigue abierta.
La gente a la que vacían por este camino no es tonta. El mecanismo de aprobación no está diseñado para que una persona común lo entienda de un vistazo: se ve idéntico a cualquier otra confirmación y, en el momento de firmar, no se mueve nada. En cómo se "esfuma en el aire" el cripto el phishing de aprobaciones ocupa apenas una sección; acá lo abrimos entero. Si aparece alguna palabra nueva, la puedes mirar en el glosario de jerga cripto.
- Aprobar no es transferir. En el momento de firmar no se mueve ni una moneda, pero desde ese momento la otra parte puede retirar cuando se le antoje.
- Muchas interfaces piden por defecto un límite (allowance) que no vas a usar en toda tu vida: aceptas una vez y queda vigente por tiempo indefinido.
- La firma fuera de cadena (off-chain), esa que no cuesta gas y no deja rastro visible en la billetera, es justamente la preferida del phishing.
- Una aprobación se puede revocar, y revocar es una transacción en cadena que se paga con gas (a una firma fuera de cadena que todavía no se envió, revocar no la alcanza). Para revisar tus aprobaciones entra por la herramienta que trae tu propia billetera; no la busques en un buscador.
Diste "Confirmar" y, aparentemente, no pasó nada
Vuelve a ese instante: apareció la ventana, le echaste un ojo, no la entendiste, pero la página decía que ese paso era necesario para reclamar, así que confirmaste. Después el saldo siguió igual, no hubo ningún registro de salida, como mucho se fue un poco de gas y a veces ni eso. Toda la experiencia te dice "no pasó nada", y ahí está justamente lo difícil de notar.
Lo que sí ocurrió en la cadena es esto: dentro del contrato de ese token quedó una línea nueva a nombre de tu dirección, que dice más o menos "tal dirección puede retirar hasta tanta cantidad de este token desde mi billetera". Esa línea no desaparece porque cierres la página, no caduca porque cambies de teléfono y no trae ninguna fecha de vencimiento automática. Sigue ahí hasta que tú vuelvas y la cambies.
Aprobar y transferir: dónde está la diferencia
Una transferencia es de una sola vez: las monedas salen ahora y con eso el asunto se terminó. Una aprobación cambia una sola acción tuya por un permiso que dura: ahora mismo no entregaste nada, pero desde este momento la otra parte puede tomar cuando quiera.
Dicho de otra forma, quizá se entienda mejor. Transferir es contar unos billetes de tu billetera y pasárselos a alguien. Aprobar es entregarle una tarjeta con la que puede cobrar de tu cuenta: el límite está escrito en la tarjeta, pero cuándo la pasa y cuántas veces, eso ya no lo decides tú.
Este mecanismo no es una trampa que alguien cavó. Cuando cambias monedas en un exchange descentralizado, metes fondos en una pool o pones un NFT a la venta, el contrato tiene que poder sacar los tokens de tu billetera en el momento en que confirmas esa operación, y un contrato no puede estirar la mano solo: necesita que tú lo autorices antes. Por eso la aprobación es el requisito previo de este tipo de operaciones; lo malicioso nunca es el mecanismo en sí, sino la dirección que se queda con el límite.
| Este paso | ¿Se mueven monedas al firmar? | ¿Va a la cadena? ¿Cuesta gas? | ¿Qué puede hacer la otra parte después? |
|---|---|---|---|
| Transferencia común | Salen de inmediato | Va a la cadena, cuesta gas | Nada más: esa operación ya terminó y no deja ningún permiso vigente |
| Aprobación de tokens (approve) | No se mueve ni una | Va a la cadena, cuesta gas | Retirar ese token cuando quiera, dentro del límite |
| Firma fuera de cadena (off-chain) | No se mueve ni una | No va a la cadena, no cuesta gas | Depende de qué firmaste: puede equivaler a una aprobación, o entregar de una sola vez el control de varios tipos de activo |
Lo que más conviene recordar de esta tabla es la segunda columna: que no se mueva dinero no significa que no haya pasado nada.
Cómo la "aprobación ilimitada" terminó siendo la opción por defecto
Dentro de una aprobación hay un número: cuánto es lo máximo que la otra parte puede retirar. En teoría autorizas justo lo que vas a intercambiar, pero muchas interfaces rellenan por defecto una cifra tan grande que jamás vas a llegar a tenerla; a eso se le llama aprobación ilimitada.
La razón no es tan conspirativa: cada vez que fijas un límite es una transacción en cadena y se paga una comisión de gas. Si autorizas de una vez hasta el tope, las siguientes operaciones en esa aplicación ya no piden firma ni vuelven a costar eso, y el flujo se siente mucho más cómodo. Quien lo diseñó eligió la comodidad; el costo lo llevas tú.
El costo es que ese registro queda colgando. Al equipo del proyecto le da por pasarle el control del contrato a otra gente, al contrato le encuentran una falla, a un desarrollador le roban la clave privada — todo eso puede ocurrir medio año después, cuando tú ya te olvidaste de ese sitio, pero ese límite todavía te reconoce. Por eso lo que de verdad conviene limpiar primero no suele ser lo que firmaste ayer, sino lo que firmaste el año pasado y de lo que ni el nombre recuerdas.
Lo que autorizas es una dirección de contrato, no un sitio web
El dominio que ves en la ventana solo dice quién te está pidiendo la firma; lo que queda escrito en la cadena es una dirección de contrato que empieza con 0x. Las dos cosas se confunden seguido, y la diferencia es muy concreta.
Un mismo sitio puede hacerte aprobar hoy el contrato A y mañana el contrato B. Cuando reemplazan el script del frontend o secuestran la resolución del dominio, la barra de direcciones no cambia ni una letra, pero la dirección que te piden firmar ya es otra. Visto al revés, la frase "revoqué la aprobación de tal sitio web" ni siquiera se sostiene: solo puedes revocar el límite de una dirección concreta, y una misma aplicación puede corresponder a varias direcciones.
Por eso "este sitio lo vengo usando hace medio año, debe estar bien" no sirve como criterio; el criterio solo puede ser la dirección que te aparece en esta ventana, esta vez. Y seamos honestos: una persona común tampoco puede verificar si una dirección desconocida es o no un contrato malicioso, no hay para qué fingir lo contrario. Lo que sí está a tu alcance son otras cosas: no interactuar con actividades desconocidas por unas monedas de airdrop; firmar solamente dentro de las aplicaciones que abriste tú y que usas de costumbre; separar por completo la billetera con la que te conectas a sitios de la billetera en la que guardas. Cómo reconocer las páginas falsificadas en sí tiene un repertorio más detallado en cómo detectar apps de exchange falsas y falso soporte.
Dos tipos de firma: la que no cuesta gas es la que menos parece que hace algo
Lo que abre la billetera se divide más o menos en dos. Una es una transacción: cuesta gas, va a la cadena y después la puedes encontrar en el historial de actividad. La otra es firmar un mensaje, también llamada firma fuera de cadena (off-chain): no cuesta gas, no va a la cadena y en la lista de actividad de la billetera muchas veces no queda absolutamente nada.
El phishing prefiere la segunda, porque es la que menos parece que está haciendo algo. No gastaste, no quedó registro, y la página dice "firma para verificar tu identidad" o "confirma que eres el dueño de esta billetera", que suena igual que iniciar sesión. Pero una firma puede ser un comprobante de aprobación: tú firmas, la otra parte lo envía a la cadena y el efecto es el mismo que si hubieras aprobado con tus propias manos; algunos formatos incluso entregan de una sola vez el control de varios tipos de activo.
La señal está en el contenido. Una firma que de verdad es solo de inicio de sesión suele ser un texto corto, con un dominio y una hilera de caracteres aleatorios, y no tiene nada que ver con tus activos. Si ahí adentro aparece el nombre de un token, un monto, un límite, una fecha límite o una dirección que no reconoces, entonces ya no es solo iniciar sesión. Si no lo entiendes, no lo firmes: esa regla siempre vale, y no entender no tiene nada de vergonzoso.
Las líneas de la ventana ante las que vale la pena frenarse
No hace falta que entiendas todo. Con vigilar los puntos de abajo ya frenas buena parte. Cada billetera lo redacta distinto, pero el sentido no se escapa.
| Este punto de la ventana | Qué te está diciendo en realidad | Cuándo frenar |
|---|---|---|
| Dominio que hace la solicitud | Quién está iniciando este pedido; no significa que sea quien recibe el permiso | No coincide con el sitio que creías haber abierto: ciérralo de inmediato |
| Dirección autorizada (spender) | La dirección de contrato que de verdad se queda con el permiso | Viene de una actividad que no buscaste tú: todavía no firmes |
| Token y límite (allowance) | Qué token, y hasta cuánto de él, queda a disposición de la otra parte | Solo querías cambiar un monto chico y el límite no tiene tope |
| Tipo de acción (approve, setApprovalForAll y similares) | Esto es una aprobación, no una transferencia; setApprovalForAll no lleva cantidad: entrega de una vez todo lo que tienes y lo que llegues a tener en esa colección NFT | Creías estar reclamando y ves una acción de aprobación; si una página de reclamo abre setApprovalForAll, ciérrala |
| Si pide gas o no | Si no lo pide, por lo general significa que es una firma fuera de cadena | Mientras más "sin costo" se ve la confirmación, más hay que leerla dos veces |
| Vigencia / fecha límite (deadline) | La fecha límite que trae la firma normalmente solo indica hasta cuándo se puede enviar esa firma; el límite que se genera una vez enviada por lo general tampoco tiene vencimiento. Solo unos pocos esquemas (como Permit2) le ponen fecha de expiración al límite mismo | No tomes esa fecha límite como la vigencia de la aprobación: salvo que la ventana diga expresamente cuándo expira el límite, trátalo como permanente |
Lo que más hemos visto no es a alguien vencido por una técnica sofisticada, sino a alguien que dentro de un "reclamo en tres pasos" apretó tres confirmaciones seguidas: conectar la billetera, firmar y confirmar una vez más. El peligro no está en qué número de paso sea, sino en qué decía exactamente cada ventana: conectar la billetera solo deja que la página lea tu dirección, mientras que el paso de firmar perfectamente puede ser una aprobación fuera de cadena, y cada fila de la tabla de arriba hay que mirarla por separado. Al llegar al tercer clic seguido, la mano ya agarró inercia, y en la página todavía corre el reloj y avanza la barra de progreso apurándote. Por eso sugerimos partir el movimiento: cada vez que aparezca una ventana de la billetera, saca la mano del mouse y termina de leer esas pocas líneas antes de decidir. Suena medio torpe, pero interrumpe justamente el ritmo que la página fabricó a propósito.
Cómo revisar tus aprobaciones y cómo revocarlas
Primero la buena noticia: una aprobación se puede revocar. Revocar es anular esa línea que está en la cadena: en una aprobación de tokens es volver el límite a cero; en el setApprovalForAll de un NFT es apagar el permiso sobre la colección entera. Eso en sí mismo es una transacción en cadena, así que se paga gas, y cuánto depende de la red en la que estés y de qué tan congestionada esté — no le creas a nadie que ofrezca "revocar gratis con un clic". Si no tienes claro qué es el gas, puedes leer antes qué es la comisión de gas.
Hay una cosa que revocar no alcanza: una firma Permit fuera de cadena que todavía no fue enviada a la cadena. Todavía no es una aprobación en cadena, no aparece en la lista de aprobaciones y poner el límite en cero tampoco la anula: la otra parte puede enviarla igual y el límite vuelve con ella, hasta que pase la fecha límite escrita en la firma. Si sospechas que firmaste algo así, no cuentes con revocar: pasa los activos directamente a una dirección nueva.
Para revisar, el orden que sugerimos es este: primero la herramienta de gestión de aprobaciones que trae tu propia billetera — hoy la mayoría de las billeteras conocidas la tiene metida en ajustes o en el detalle de cada token; si de verdad no la encuentras ahí, recién entonces usa esa página de consulta de aprobaciones en la que tú ya confías. Para limpiar, empieza por la red y el token donde tengas más saldo, sigue con las aplicaciones que ya no usas y deja para el final las que no te acuerdas en absoluto de cuándo firmaste.
Y queda algo por dejar claro: revocar no es un remedio, es detener la hemorragia. Los activos que ya se llevaron no vuelven porque revoques; revocar solo impide que la otra parte siga retirando. Si sospechas que te están retirando ahora mismo, el orden se invierte: primero mueve lo que queda a una dirección nueva, recién creada, que nunca haya hecho ninguna aprobación, y después vuelves con calma a limpiar la dirección vieja. Porque revocar va de una en una, y a la otra parte le basta con acertar una sola vez. Los pasos para cuando la cosa ya ocurrió están en caíste en una estafa cripto, ¿se puede recuperar?.
Unos hábitos que angostan esta rendija
Ningún conjunto de hábitos te deja "absolutamente seguro", pero los de abajo reducen bastante la superficie expuesta y ninguno te pide entender de tecnología.
- Reparte el dinero en dos direcciones. El monto grande, en una dirección que no se conecta nunca a ningún sitio; para el día a día —entrar a un DEX, reclamar un airdrop— otra con poco encima. Es la única de esta lista que se acerca a resolverse de una vez por todas; la parte que piensas dejar quieta mucho tiempo se puede aislar todavía más, ver si deberías comprar una billetera fría de hardware.
- Pregúntate antes una cosa: ¿fui yo quien buscó esta actividad, o fue ella la que me buscó a mí? Lo que llega por mensaje directo, lo fijado arriba en los comentarios, la página de reclamo que aparece de golpe diciendo "calificas": ahí el riesgo sube un escalón entero. Las señales de alarma del proyecto en sí están más completas en cómo detectar shitcoins, tokens fraudulentos y rug pulls.
- La confirmación que no cuesta gas es, al revés, la que hay que mirar dos veces. Que no tenga costo es justamente la señal de que lo que estás firmando puede ser un permiso y no una operación.
- Limpia las aprobaciones viejas cada cierto tiempo. Si no te acuerdas a quién le diste ese límite, no lo dejes puesto. Las transferencias entrantes de origen desconocido son otra trampa aparte: ¿un desconocido te envió USDT? ¿puedes tocarlo? la trata por su cuenta.
- No te saltes la revisión porque "ya le agarré la mano". Las interfaces cambian todo el tiempo, lo que la vez pasada estaba en un lugar esta vez puede no estar ahí, y la sensación de estar acostumbrado es en sí misma un riesgo.
Volvamos a la escena del principio. No hiciste nada que se vea claramente tonto: no filtraste tu frase semilla, no le mandaste tu clave privada a nadie, no instalaste una app de origen dudoso. Solo diste clic en una confirmación que no entendías, en una página que te estaba apurando — y las palabras que ese recuadro te mostró y el permiso que en realidad entregó nunca fueron la misma cosa. Esa ventana se veía igual que una confirmación inofensiva, y ahí está lo difícil de detectar de esta rendija. Ahora ya sabes qué líneas mirar. Si quieres repasarte la lista de riesgos una vez más, puedes usar el autotest «¿Esto es una estafa?» del sitio.
Preguntas frecuentes
Nunca filtré mi frase semilla, ¿cómo es que hay menos monedas en mi billetera?
Además de que alguien se lleve la llave, hay otro camino, y ese lo aprobaste tú: la aprobación de tokens. Diste "Confirmar" en alguna página y con eso le entregaste a una dirección de contrato el permiso de retirar cierto token de tu billetera, muchas veces con un límite sin tope. Desde entonces la otra parte puede retirar cuando quiera dentro de ese límite, sin necesitar tu frase semilla ni una nueva confirmación tuya. Por eso, al buscar la causa, revisa primero qué aprobaciones entregó esa dirección, en lugar de sospechar solo de la frase semilla.
Al aprobar no se movió ni una moneda de mi billetera, ¿por qué dicen que el riesgo nació en ese momento?
Porque aprobar y transferir son dos cosas distintas. Una transferencia es que esas monedas salen ahora; una aprobación es un registro de permiso que queda en la cadena y, mientras siga ahí, la otra parte puede retirar cuando quiera dentro del límite. En el instante de firmar tu saldo efectivamente no cambió, y ese es justo el motivo por el que se ve inofensivo. El riesgo no está en el momento de firmar, sino en cualquier día posterior.
Una solicitud de firma que no cuesta gas, ¿significa que no tiene riesgo?
Al contrario, merece más desconfianza. Que no cueste gas suele significar que es una firma fuera de cadena: no va a la cadena y en el historial de actividad de la billetera muchas veces no se nota nada, pero la otra parte puede tomar esa firma y enviarla a la cadena, con el mismo efecto que si hubieras aprobado con tus propias manos. Las páginas de phishing prefieren justamente este tipo, precisamente porque es el que menos parece que está haciendo algo. Si en el contenido de la firma aparece un token, un límite, un plazo o alguna dirección desconocida, ya no es una simple verificación de inicio de sesión.
¿Revocar una aprobación cuesta dinero? ¿Después de revocar ya estoy a salvo?
Revocar es anular esa línea de aprobación que está en la cadena; en una aprobación de tokens es volver el límite a cero. Eso en sí mismo es una transacción en cadena, así que hay que pagar gas, y cuánto depende del estado de la red en ese momento. Revocar solo impide que la otra parte siga retirando con una aprobación que ya está en la cadena: no alcanza a una firma fuera de cadena que todavía no fue enviada, y los activos que ya se llevaron tampoco se recuperan. Si sospechas que te están retirando ahora, el paso más rápido es mover primero lo que queda a una dirección nueva que nunca haya hecho ninguna aprobación, y después volver con calma a limpiar la vieja: revocar va de una en una, y a la otra parte le basta con una sola vez.