Un compañero dice que el cupo de Claude se recargó y se vació, y que no abrió ninguna ventana. La entrada del gestor de contraseñas es la rotación del mes pasado. El teléfono no sonó para pedir un código. Dos días después el buzón trae un aviso de Anthropic: uso inusual, cierre forzado de sesión y método de pago quitado. La carta dice que Claude no se rompió. Un infostealer en ese equipo copió la sesión de inicio junto con todo lo que ya recoge.
La nota anterior cubría qué enmascarar antes de pegar una contraseña en ChatGPT o Gemini: ese es el camino después de poner texto plano en un prompt, y si el interruptor de entrenamiento o un enlace para compartir aún pueden leerlo. Esta cambia la pregunta. Cuando ya has iniciado sesión, la prueba que dice «soy yo» sigue en sitios que puedes abrir — y un programa local puede copiar. Si una clave tiene que moverse, usa un enlace de un solo uso con la forma s.html?id=…#…. Crear y leer funcionan sin cuenta. Las herramientas de MyPassGen se abren sin registro. El resto de esta página no explica cómo se propaga ninguna familia de malware. Alinea las cifras que Okta y Anthropic ya publicaron, y las filas que ves en una lista de sesiones.
Separa primero dos trabajos
Cambiar la contraseña y encender un segundo factor bloquea la siguiente caja de inicio de sesión. Una cookie o un JWT que el navegador ya recibió, y una clave API que vive en un archivo de configuración, no caducan solo porque hayas tecleado una contraseña nueva. Revoca sesiones y rota claves primero; después decide si este equipo debe volver a iniciar. No trates un cambio de contraseña como «cerrar sesión en todos los dispositivos».
Por qué la cuenta sigue abierta después de cambiar la contraseña
Un sitio no pide la contraseña en cada clic. Tras un inicio correcto, el navegador guarda una sesión: una cookie, un JWT y, en una aplicación de una sola página, a menudo un token en localStorage o sessionStorage. Las peticiones posteriores presentan esa prueba aún válida. El servidor no está comprobando si ahora mismo sabes recitar la contraseña. La nota de amenaza de Okta del 9 de septiembre de 2026, Signing in without actually signing in, llama a esa prueba una llave maestra: sueltas un token no caducado en otro navegador y el atacante ya está dentro. El campo de usuario, el de contraseña y el reto de MFA no vuelven a aparecer.
Eso no es el mismo camino que «alguien adivinó la contraseña». Las passkeys y las claves de hardware suben la caja de inicio. Okta también escribe que dificultan el robo por usuario y contraseña, y que no detienen un token de sesión o una clave API robados. Cambiar la contraseña en Ajustes suele afectar solo a la siguiente persona que pase por esa caja. Las sesiones ya emitidas esperan a caducar, a una revocación en el servidor o a una expulsión desde la lista de dispositivos conectados. Cambiar la contraseña y no abrir esa lista es cambiar la llave de la casa y dejar sobre la mesa una tarjeta de acceso que sigue valiendo.
La nota del portapapeles cubría un resto después de Copiar: la contraseña salió del cuadro del generador y entró en el búfer del sistema, en después de copiar una contraseña, quién más puede leer el portapapeles. Un token de sesión sale de la página de inicio y entra en el perfil del navegador y en la memoria. Los dos restos viven en este dispositivo. Ninguno termina porque ya hayas pulsado Copiar o ya hayas iniciado. Tras cerrar Incógnito, los marcadores y Descargas aún pueden guardar una URL de un solo uso completa — ese camino está en al cerrar la ventana de Incógnito, la contraseña sigue en Descargas, los marcadores y el portapapeles. Las sesiones suelen vivir en el perfil de todos los días. Cerrar la ventana no las revoca.
Okta: tokens aún vivos en un volcado de 7 GB
Okta analizó un volcado de registros gratuito publicado en un canal de Telegram el 2 de agosto de 2026. El archivo pesaba unos 7 GB y cubría 5.871 equipos infectados en 162 países. Contaron el material de autenticación y, aparte, el lote que seguía vigente el día en que el volcado se hizo público: el lote que un comprador reutilizaría primero.
En formato de cookies Netscape, Google (Workspace y consumo) tenía 9.829 tokens de autenticación únicos; 9.213 seguían vigentes el 2 de agosto, en 4.144 equipos. Microsoft (Entra y consumo) era 2.491 / 1.763 / 1.753. Anthropic era 561 / 164 / 404. Cursor era 32 / 16 / 26. La misma tabla listaba también Amazon, Gamma, Notion, Character.ai, Poe.com y Pika AI. Google, Microsoft y Amazon se sientan detrás de una puerta de inicio único, así que esas cifras son los tokens primarios que emitió esa puerta, no un ranking de popularidad de cada producto.
Los JWT eran un segundo montón. El conjunto tenía 44.791 JWT únicos; Okta marcó 555 como probablemente usados para autenticar un servicio de IA. Una búsqueda aparte encontró 2.937 JWE relacionados con autenticación, la mayoría emitidos por el NextAuth.js de OpenAI. Sin la clave de descifrado no lees el cuerpo; un token no caducado aún se puede reutilizar tal cual. Sumados, 1.843 JWT y JWE seguían vigentes el 2 de agosto. Okta también escribió que el 17,7% de los cuerpos JWT llevaban datos personales en texto plano: nombre, teléfono o correo. Cuando el token caduca, esa cadena de identidad no desaparece. Sigue sirviendo para phishing.
Los tokens de acceso de vida corta suelen durar minutos u una hora y se renuevan con un refresh token HttpOnly, pensado para que el script de la página no lea la mitad larga. Okta es explícito: el malware no está atado a esa regla. Cuando una aplicación de una sola página aparca un JWT en LocalStorage o SessionStorage, el mismo trabajo de copia se lo lleva. No vieron sesiones de Okta robadas en este volcado. Sí escribieron «reevaluar la sesión tras un cambio de IP o de dispositivo» como idea de detección en empresa. Una cuenta personal no tiene esa puerta. Tú revocas filas en tu propia lista de sesiones.
Anthropic: cerrar las sesiones viejas no limpia el equipo
A finales de agosto de 2026, Anthropic empezó a escribir a parte de los usuarios de Claude. BleepingComputer, SecurityWeek, Help Net Security y Malwarebytes citaron el mismo aviso. La empresa escribió que alguien usó infostealers habituales para robar sesiones de Claude en equipos ajenos, y luego usó esas sesiones para entrar en la cuenta y quemar el cupo. Si el uso parecía recién recargado y luego vaciado mientras tú no usabas Claude, ese era el camino probable. También escribieron que no tenían motivo para creer que el malware estuviera relacionado con Claude, instalado a través de Claude o relacionado con nada que hubieras hecho dentro de Claude. Help Net Security citó una línea más: teléfonos y tabletas no parecían formar parte de esta oleada.
SecurityWeek listó las familias que nombraron: Vidar, Lumma, StealC, RedLine y Acreed en Windows, y un conjunto menor de Atomic Stealer (AMOS) en Mac. Son robadores de propósito general. Suelen llegar con una descarga no oficial o una app maliciosa, y después copian contraseñas guardadas del navegador, cookies de inicio y otras credenciales locales. Una sesión de Claude era un ítem de esa cosecha. Alguien más tarde empezó a separar ese ítem y a usarlo.
Del lado de la empresa forzaron el cierre de las sesiones afectadas, quitaron los métodos de pago guardados y devolvieron cargos que clasificaron como no autorizados. La frase que importa en el aviso es esta: sacarte de Claude detiene las sesiones robadas, pero no quita el malware. El equipo sigue ahí. El siguiente inicio escribe una sesión nueva, que se puede copiar igual. Su orden es: limpia el dispositivo primero, luego cambia la contraseña del buzón vinculado, enciende la autenticación en dos factores y solo entonces vuelve a poner un método de pago. Un cierre de sesión revoca la tarjeta. No desinfecta el equipo.
La ayuda en español de Anthropic, Cómo cierro sesión en todas las sesiones activas, sitúa el botón en Configuración → Cuenta, en la web, no en las apps de iOS o Android. En ChatGPT, la ayuda de OpenAI pone «Cerrar sesión en todos» en Configuración → Seguridad y avisa de que otras sesiones pueden tardar hasta 30 minutos en caer. Esas dos pantallas son el sitio donde compruebas, no un cambio de contraseña en Ajustes → Cuenta. La ayuda de ChatGPT para restablecer o cambiar la contraseña actualiza la cuenta de OpenAI; no dice que eso mate de golpe cada sesión ya emitida.
Claves API, LocalStorage y configs en texto plano son otra capa
Una cookie de sesión cubre el inicio web. Una clave API cubre a un programa que llama al modelo en tu nombre. Okta pasó TruffleHog por el mismo volcado y encontró 24 claves que seguían válidas al publicar, entre Google Gemini, OpenAI, Groq y OpenRouter. Citaron tres facturas de claves robadas: casi 1 millón de dólares en una organización, 25.000 para un arquitecto de software y 600.000 en créditos en un taller de pruebas de IA. Una clave en un archivo de configuración o en una variable de entorno es el camino más rápido para empezar. También es el más rápido para que un programa local convierta tu cupo en el de otro. OpenAI, Anthropic y otros dejan poner un techo de uso y una lista blanca de IP a una clave. Sin esas puertas, una clave robada se trata como ya autorizada a facturarte.
Un patrón más estable es OAuth 2.0: la app recibe un token de acceso de vida corta, el refresh token se queda en el llavero del sistema o en un gestor de contraseñas, y el alcance se queda tan estrecho como puedas. Okta puso «no sueltes una clave API en texto plano en un archivo de configuración o en una variable de entorno» al mismo nivel que una contraseña. Si un compañero aún necesita la clave, no la escribas en un archivo en claro que vaya a entrar en Git o en un disco sincronizado — ese camino está en antes de dejar un archivo en la nube, quién puede leer el texto plano y por qué canal debe ir la contraseña. Una URL de un solo uso completa en un archivo de configuración sigue siendo una credencial: el trozo detrás de # no entra en la línea de petición HTTP, pero el archivo en disco y el almacenamiento de objetos siguen guardando la cadena entera, como en cuando envías una contraseña una sola vez, por qué la clave de descifrado va detrás del # en la URL.
Los navegadores están añadiendo sus propios frenos. Okta mencionó el App-Bound Encryption de Google de 2024, y Device-Bound Session Credentials, que atan criptográficamente una sesión a un dispositivo. Escribieron que ABE vio rodeos pronto, y que DBSC aún es temprano: el sitio tiene que implementarlo en el servidor, y Chrome 145 para Windows puede soportarlo desde marzo de 2026. Hasta que el sitio que usas hable de verdad DBSC, lo que una persona puede comprobar sigue siendo: ¿la lista de sesiones muestra un dispositivo que no es tuyo, y hay una clave aún sentada en un archivo en texto plano?
Qué bloquea de verdad una contraseña, el MFA y una sesión
Usa la misma cuenta de usar y tirar y un perfil de navegador que controles. Ejecuta «cambiar solo la contraseña», «revocar todas las sesiones» y «revocar las sesiones web, dejar el archivo de la clave en paz». Las páginas que aún se abren no son las mismas. La tabla está escrita desde puertas que puedes pulsar, no desde nombres de marketing.
| Qué hiciste | La siguiente caja de inicio | Lo que la otra persona suele conservar |
|---|---|---|
| Cambiaste la contraseña y no pulsaste «cerrar sesión en todos los dispositivos» | La contraseña vieja falla | Una cookie o un JWT no caducados pueden mantenerlos dentro |
| Encendiste MFA o una passkey; un programa local ya había copiado la sesión | La caja pide el segundo factor | Reutilizar la sesión suele saltarse la caja y el código |
| El servidor forzó el cierre (por ejemplo tras un aviso de Anthropic) | Tienen que iniciar de nuevo | Las sesiones viejas paran; una nueva se puede copiar otra vez si el equipo sigue sucio |
Todas las sesiones web se fueron; la clave API en .env no se rotó |
El sitio pide un inicio fresco | Quien tenga la clave aún puede facturar la API |
| El archivo guarda solo el id de un solo uso; la clave fue por teléfono | No es una pregunta de inicio | Registros y archivos no guardan una credencial completa; hacen falta las dos mitades para descifrar |
No mezcles la quinta fila con las cuatro primeras. Escribir un s.html?id=…#… completo en un repositorio o en un chat sigue dejando una credencial en el archivo local y en el registro de un infostealer. El anfitrión que aparca el texto cifrado no puede ver la clave. Parte el id y la clave y una búsqueda de texto completo no encuentra un enlace que abra. Trata un enlace completo como la contraseña misma.
Compruébalo en el momento
Los pasos de abajo no dependen de ninguna promesa de proveedor. Usa una cuenta de usar y tirar y una contraseña de prueba que nunca inicie trabajo real, por ejemplo orange-lake-7. No practiques con una contraseña maestra viva, una clave API de producción ni una URL de un solo uso aún usable.
- Regístrate o inicia en una cuenta desechable de IA o de Google en tu navegador de todos los días y quédate dentro. Abre la página de dispositivos conectados, sesiones activas o seguridad de ese servicio y anota la fila actual. En ChatGPT suele estar en Configuración → Seguridad; en Claude, en Configuración → Cuenta. Inicia otra vez desde un segundo navegador o una ventana de Incógnito. Actualiza la primera ventana: deberías ver dos filas. Revoca la que no estás usando. Actualiza la segunda: debería caer a la caja de inicio. En ChatGPT, OpenAI avisa de que otras sesiones pueden tardar hasta 30 minutos. Este paso comprueba si la lista de sesiones puede matar de verdad una tarjeta. No es una prueba de malware.
- Quédate iniciado en la primera ventana. Cambia solo la contraseña. No pulses «cerrar sesión en todos los dispositivos». Mira la segunda ventana. Algunos productos expulsan todas las sesiones de golpe. Otros solo retiran la contraseña vieja y dejan vivas las sesiones abiertas. Anota lo que ves. No uses esa observación para adivinar todos los productos. Fíate de la página que acabas de actualizar.
- Si una cuenta de Google es la puerta de Gemini o Workspace: abre la actividad de dispositivos de la cuenta de Google y busca un lugar o un navegador que no sea tuyo. Google y Microsoft eran las dos columnas más grandes de la tabla de Okta porque un solo token de SSO abre una ristra de apps detrás. Tras revocar a un extraño, comprueba si Gemini o el correo te piden iniciar otra vez.
- Si usas Claude, ChatGPT o Cursor: en los ajustes de la cuenta, busca sesiones, clientes conectados o la lista de claves API. Revoca lo que puedas revocar. Borra las claves que puedas borrar y luego emite otras nuevas. El aviso de Anthropic ya decía que estar fuera del sitio no es lo mismo que un equipo limpio. Si este dispositivo tiene un ladrón es una pregunta para tus propias herramientas de seguridad del sistema. MyPassGen no va a escanear el disco por ti.
- Busca en este equipo la cadena de la clave de prueba: la carpeta del proyecto,
.env, el historial local del editor, el historial del intérprete. Tras irse las sesiones web, un archivo en texto plano sigue siendo otra copia. El manejo está en la nota de cifrado de archivos. No pegues en un chat una clave de producción que acabas de encontrar. - Crea un enlace de un solo uso de MyPassGen con la misma frase de prueba, caducidad 24 horas, lecturas en 1. En el chat o en un ticket, pega solo la parte antes del hash,
s.html?id=…. Di la clave en una llamada o en persona. Se abre sin cuenta. Con solo el id, el destinatario debería ver un enlace incompleto; hacen falta las dos mitades para descifrar. Tras leer, sobrescribe el portapapeles. No guardes una dirección que aún lleve#en un perfil de navegador que sincroniza.
En una cuenta de empresa, añade medio paso: pregunta si el SSO forzado está encendido, si existe detección de riesgo de sesión y si las claves API tienen techo de uso y lista blanca de IP. MyPassGen no te dirá si una pasarela concreta guardó otra copia. Fíate de las ventanas que acabas de abrir.
Si tienes que pasar una clave, pártela
Para una entrega uno a uno que la otra persona pueda abrir ahora, no escribas una clave API en texto plano que vaya a entrar en un repositorio, un disco sincronizado o un archivo de chat. Genera la contraseña en este dispositivo y luego envuélvela en un enlace de un solo uso. El generador de contraseñas de MyPassGen usa un modo aleatorio de 6 a 128 caracteres, 16 por defecto, y avisa por debajo de 8. Se abre sin cuenta. El resultado no se sube como dato de negocio. Al crear, el navegador cifra con AES-256-GCM. Una nota cabe en 32 KB. Las lecturas valen 1 por defecto y tienen un tope de 10. La caducidad puede ser 1 hora, 24 horas, 7 días, o solo por contador, sin TTL. El servidor solo aparca texto cifrado.
Cuando un repositorio o un ticket aún necesita un punto de entrada, parte el canal. El archivo lleva solo el responsable, el id y la frase «clave por teléfono». Una llamada, una entrega en persona u otra cuenta de mensajería lleva solo el trozo detrás de #. Ninguna mitad descifra sola. Es un uso, no un valor por defecto del producto. La página de creación sigue emitiendo un enlace completo, cómodo para un envío uno a uno. En un canal que dibuja tarjetas de vista previa, lanza primero un enlace de prueba y mira si la vista previa cuenta una lectura, como en si pegas un enlace de un solo uso en Slack o WeChat, ¿la vista previa lo quema primero.
Un paquete de claves o un export de más de 32 KB no cabe en un enlace de texto de un solo uso. Pasa por la caja de cifrado de archivos: AES-256-GCM en flujo en el navegador, un archivo hasta 5 GB, salida .lock / .enc, frase secreta enviada aparte. Cifra primero en este dispositivo y luego sincroniza; el otro lado solo debería ver texto cifrado. Empujar un .env sin cifrar a un disco, o dejarlo para que lo lea una extensión del navegador, es el mismo tipo de problema que dejar una cookie de sesión a un programa local: la prueba que dice «soy yo» salió de la ventana donde creías que vivía.
Cuando hayas comprobado «¿cambiar solo la contraseña expulsa la segunda sesión?» y «tras revocar una fila, ¿la otra ventana vuelve a la caja de inicio?», puedes responder a la pregunta de este artículo: la contraseña cambió, el MFA está encendido, y una sesión de IA aún vigente o una clave API en texto plano aún puede dejar entrar a otra persona. Anthropic cerró las tarjetas viejas. Okta contó los tokens que seguían vivos el día en que el volcado se hizo público. Una lista de sesiones es un sitio donde comprobar. Es un mal sitio para suponer «ya cambié la contraseña, así que esto se acabó».
Preguntas frecuentes
Cambié la contraseña. ¿La otra persona aún puede entrar?
No puede usar la contraseña vieja en la caja de inicio. Eso no es lo mismo que todas las sesiones ya emitidas muriendo de golpe. Fíate de la lista que actualizas bajo dispositivos conectados. Okta describe reutilizar un token no caducado como saltarse la contraseña y el MFA. Revoca las sesiones y luego cambia la contraseña. Haz las dos cosas. No hagas solo el paso que recuerdas.
¿El MFA o una passkey sustituyen a un enlace de un solo uso?
No. El MFA y una passkey guardan la caja de inicio. Un token de sesión prueba «ya estoy dentro». El aviso de Anthropic también formuló el problema como sesiones robadas, no como contraseñas adivinadas. Para comprobar «¿el servidor vio algo más que texto cifrado?», usa un enlace de un solo uso y Red. No sustituyas «encendí un segundo factor».
¿En qué una URL de un solo uso completa en .env es mejor que la clave API misma?
Los registros del servidor y las vistas previas solo HTML suelen no ver la clave detrás de #. El archivo local, el historial del editor y el registro de un infostealer aún pueden guardar la URL entera. Quien la copie puede abrirla antes de que se queme. Más seguro: pon solo el id en el archivo; envía la clave por otro canal. La clave misma sigue necesitando un camino de revocación y un techo de uso.
¿Hace falta una cuenta para crear y leer? Si me equivoco de canal, ¿el soporte puede recuperarlo?
Ningún registro. Crear y leer son públicos para un visitante. Cuando el texto cifrado se quema por contador o por caducidad, no hay copia de seguridad en claro en el servidor ni un buzón de soporte que pueda recuperarlo. Genera una contraseña nueva y un enlace nuevo. No actualices la misma URL para ver si vuelve.