En resumen: cuando eliminas una clave de API de Google, te indica que se elimina de inmediato. Según nuestras pruebas, el proceso tarda unos 23 minutos. Durante ese tiempo, un atacante que haya obtenido una clave filtrada seguirá teniendo acceso a tus datos y a las API activadas (incluida Gemini). No hay forma de revocar la clave más rápido ni de confirmar cuándo deja de funcionar. Google ha cerrado nuestro informe con la respuesta «no se solucionará».
Cuando eliminas una clave API, esperas que el acceso se interrumpa de inmediato.
Las claves API de Google no funcionan así. La revocación se propaga gradualmente por toda la infraestructura de Google. Algunos servidores rechazan la clave en cuestión de segundos, mientras que otros siguen aceptándola durante 23 minutos.
Un atacante que tenga en su poder tu clave eliminada puede seguir enviando solicitudes hasta que una de ellas llegue a un servidor que no se haya actualizado. Si Gemini está habilitado en el proyecto, puede descargar los archivos que hayas subido y sustraer conversaciones almacenadas en la caché.
La consola de GCP no mostrará la clave ni te indicará si sigue siendo válida. Estás confiando en que la infraestructura de Google se ponga al día con el tiempo.
La autenticación no debe ser de consistencia eventual
Muchos de los servicios de Google Cloud están diseñados para ofrecer una consistencia diferida. En este modelo, las actualizaciones se propagan gradualmente por los servidores, en lugar de hacerlo de forma simultánea. Esta solución permite a Google escalar a nivel mundial y mantener la velocidad, y en la mayoría de los servicios, el retraso es imperceptible. Sin embargo, en el caso de la autenticación, esta solución resulta más difícil de justificar.
Los retrasos en la revocación de credenciales pueden ser objeto de abuso. Hace unos meses, Eduard Agavriloae reveló un retraso de cuatro segundos que permitía a las claves de acceso de AWS eliminadas crear nuevas credenciales. Cuatro segundos fueron suficientes para que esto tuviera consecuencias en AWS.
Dada la reciente atención prestada a las claves API de Google utilizadas para acceder a Gemini, nos propusimos averiguar cuánto tiempo permanece abierta la ventana de revocación de claves API de Google.
¿Qué es el plazo de revocación?
El periodo de revocación es el tiempo que transcurre entre el momento en que se elimina una clave y la última autenticación correcta.

Si ese intervalo es de unos pocos microsegundos, el comportamiento se ajusta a lo que esperan los usuarios. Si es más largo, cada segundo adicional da a los atacantes más tiempo para hacer un uso indebido de una clave robada.
Cálculo del plazo de revocación
Para medir el plazo de revocación de las claves API de Google, realizamos 10 pruebas a lo largo de dos días.
En cada prueba, creamos una clave API, la eliminamos y enviamos entre 3 y 5 solicitudes autenticadas por segundo hasta que, durante varios minutos, no se recibió ninguna respuesta válida.
Elegimos esa frecuencia porque no controlamos cómo Google redirige nuestras solicitudes a los distintos servidores de autenticación repartidos por todo el mundo. El objetivo era que el volumen se distribuyera entre el mayor número posible de ellos en cada prueba, sin dejar de respetar la infraestructura de Google. No podemos afirmar si una frecuencia de solicitud más alta ampliaría el intervalo observado. Un atacante no tiene motivos para limitar el tráfico como lo hicimos nosotros, por lo que conviene señalar que nuestras cifras podrían no representar el peor de los casos.
Para mayor exhaustividad, también realizamos una comprobación aleatoria de nuestro trabajo unas semanas más tarde para asegurarnos de que el comportamiento observado no se debía a problemas transitorios de red.
23 minutos
¡En los diez ensayos realizados, el intervalo más largo fue de casi 23 minutos! Es un tiempo increíblemente largo durante el cual una clave eliminada sigue pudiendo autenticarse con éxito.
El intervalo más corto fue de casi 8 minutos, y la mediana rondó los 16 minutos. En el conjunto de los ensayos, la tasa de éxito fue muy impredecible: un minuto después de la eliminación, en un ensayo el 79 % de las solicitudes se completaron con éxito, mientras que en otro solo lo hizo el 5 %.

Un atacante que posea una clave robada no observa un corte brusco ni una disminución predecible. El acceso sigue funcionando, aunque de forma irregular, hasta que finalmente se interrumpe por completo.
Seguimiento de una prueba concreta en la consola de GCP
Para ilustrar la inconsistencia en la infraestructura de Google, hemos realizado un seguimiento de una de nuestras pruebas utilizando el gráfico «Tráfico por credencial» de GCP. La línea inferior (azul) muestra las autenticaciones correctas y refleja la duración del periodo de revocación.

No esperábamos ver ningún otro dato, pero apareció una segunda línea. La línea superior (verde) representa las solicitudes rechazadas y lleva la etiqueta apikey:DESCONOCIDO. Habíamos dado por sentado (erróneamente) que las solicitudes no válidas simplemente se descartarían sin atribuirse a ningún proyecto. En cambio, GCP las incluye en este gráfico.
Para comprender mejor el misterioso apikey:DESCONOCIDO valor, intentamos autenticarnos con una clave API eliminada hacía ya varios días. Sorprendentemente, esas solicitudes aparecieron en el mismo gráfico, agrupadas en el mismo apikey:DESCONOCIDO grupo.
Lo más probable es que Google conserve la información de atribución del proyecto tras la eliminación de la clave, por si los usuarios deciden restaurar la credencial.

Para los equipos de respuesta a incidentes (IR) que investigan una filtración de credenciales, el apikey:DESCONOCIDO Este valor puede resultar confuso. Cualquier solicitud realizada con una clave de API de Google eliminada se agrupa en la misma categoría «DESCONOCIDA», lo que dificulta determinar qué solicitudes se refieren a una credencial concreta. Una solicitud en ese grupo podría indicar que un agente malintencionado sigue intentando autenticarse con la clave eliminada, o bien podría tratarse de un servicio legítimo que se ejecuta con una clave obsoleta y sin relación con el caso.
Si te encuentras dentro del plazo de revocación de 23 minutos, comprueba si hay autenticaciones válidas realizadas con la clave filtrada. Si estás fuera de ese plazo, el riesgo parece extremadamente bajo.
Diferencias regionales en cuanto a la coherencia
Realizamos el primer experimento desde una dirección IP residencial situada en la costa este de Estados Unidos. Nuestra hipótesis era que llevar a cabo un experimento similar en máquinas virtuales ubicadas en diferentes regiones de GCP podría poner de manifiesto nuevas inconsistencias.
Hemos creado una máquina virtual en tres regiones: us-east1, Europa-Oeste 1, y Asia Sudoriental 1. A continuación, realizamos cinco pruebas. En cada una de ellas, eliminamos una única clave API y enviamos solicitudes desde cada una de las tres máquinas virtuales en paralelo.
Hubo dos aspectos que llamaron la atención. En primer lugar, inmediatamente después de eliminar una clave, las máquinas virtuales de distintas regiones registraron tasas de éxito en la autenticación muy diferentes. En la tabla siguiente se muestra el porcentaje de solicitudes válidas durante el primer minuto, desglosado por región.

Fíjate en el ensayo 1: us-east1 82%, Europa-Oeste 1 60%, Asia Sudoriental 1 32 %. Las máquinas virtuales más alejadas de EE. UU. detectaron la eliminación más rápidamente, lo cual es justo lo contrario de lo que cabría esperar. Desde fuera, no podemos determinar con exactitud el motivo. El enrutamiento de solicitudes de Google es más complejo que la simple ecuación «región de la máquina virtual = región del servidor», y una máquina virtual en Singapur no se comunica necesariamente con servidores situados en Singapur. Sin embargo, el patrón se mantuvo constante en todas las pruebas, lo que apunta a que la diferencia se debe a algún factor relacionado con la infraestructura regional, el almacenamiento en caché o la afinidad de enrutamiento.
En segundo lugar, la diferencia entre regiones no se limitó a los primeros minutos. A lo largo de todo el periodo, Asia Sudoriental 1 tuvo una tasa media de éxito en la autenticación de solicitudes del 22 %, mientras que us-east1 y Europa-Oeste 1 Ambos se situaron en torno al 49 %. Asia siguió bajando minuto a minuto, no solo al principio.
Sea cual sea el motivo de estas diferencias, la ubicación del servidor influye claramente en el comportamiento de una clave tras su eliminación.
Otras credenciales de Google
En todas nuestras pruebas utilizamos claves con acceso a Gemini, pero observamos el mismo comportamiento con claves limitadas a otras API de GCP, como BigQuery y Maps. El retraso es una característica del tipo de credencial, no de las API que estén habilitadas en el proyecto.
Para completar la información, hemos probado otros dos tipos de credenciales de Google:
- Nuevas claves API de Gemini (prefijo AQ.). La eliminación se ha propagado en aproximadamente 1 minuto.
- Claves de la cuenta de servicio de Google. La eliminación se ha propagado en unos 5 segundos.
Ambos funcionan a la escala de Google y se revoca su acceso mucho más rápido que los 23 minutos que registramos para las claves de la API de Google.
Divulgación a Google
Hemos informado de esto a Google. Google ha cerrado el informe con la indicación «no se solucionará». Según tenemos entendido, la postura del equipo es que el retraso de propagación es una característica conocida del sistema y no supone un problema de seguridad.
Aunque Google indica públicamente que su API de IAM es «eventually consistent», no documenta específicamente este comportamiento en el caso de las claves de API de Google.

[Pie de foto: Captura de pantalla de la página de documentación de la API de IAM de Google.]
Expectativas de los usuarios no cumplidas
Los sistemas distribuidos a la escala de Google son complejos, y esto no es una crítica al equipo de IAM de GCP. Sin embargo, un plazo de revocación de 23 minutos entra en conflicto fundamentalmente con lo que los usuarios esperan de un botón de eliminación. La diferencia entre esa expectativa y el comportamiento de Google pone de manifiesto cuatro problemas:
1. La interfaz de usuario es muy engañosa.
Al eliminar la clave, Google la oculta de tu vista y te indica: «Una vez eliminada, ya no se podrá utilizar para realizar solicitudes a la API». Esa afirmación es claramente falsa. El usuario no tiene forma de saber si la clave sigue activa, ni de acelerar su revocación, ni de confirmar cuándo ha dejado de funcionar por completo.

2. Google ha implementado un proceso de revocación más rápido para otros tipos de credenciales.
Las revocaciones de credenciales de cuentas de servicio se aplican en unos 5 segundos. El nuevo formato de claves API de Gemini se aplica en aproximadamente un minuto. Ambos funcionan a la escala de Google. Ambos indican que esto también es técnicamente factible para las claves API de Google.
3. Las ventanas de consistencia largas no son compatibles con la autenticación.
Lo normal es que, al eliminar una credencial, esta quede inactiva. Incluso unos pocos segundos de retraso pueden ser importantes, tal y como demostró el estudio sobre AWS de Eduard el año pasado.
4. Los plazos de revocación prolongados impiden la emisión de credenciales «just-in-time».
Un proveedor de servicios que desee generar dinámicamente claves de la API de Google debe prever un margen de 23 minutos tras la revocación antes de que se garantice que la clave ha dejado de ser válida. Esto es incompatible con el funcionamiento JIT .
Trabajar alrededor de la ventana
Hasta que Google implemente un sistema de revocación más rápido, la responsabilidad de subsanar esta deficiencia recae en los usuarios. Hay dos cosas que pueden ayudar.
1. Considera que la eliminación de una clave es una operación que lleva 30 minutos, no algo instantáneo.
Si estás gestionando una fuga de una clave API de Google, ten en cuenta que la clave seguirá activa durante 30 minutos después de hacer clic en «Eliminar». Esto te da un pequeño margen adicional respecto a los 23 minutos como máximo que hemos observado. Planifica el resto de tu respuesta al incidente teniendo en cuenta ese margen de tiempo.
2. Controla el uso durante ese periodo.
En la sección «API y servicios habilitados» de la consola de GCP, revisa las solicitudes de API por credencial. Si observas un uso inesperado de esa credencial tras su eliminación, es posible que alguien la esté utilizando de forma maliciosa.
Las ventanas de consistencia eventual de gran duración no son una opción de diseño adecuada para la revocación de credenciales. Hasta que Google cambie esto, considera que cada eliminación de clave es una operación de 30 minutos y vigila la ventana para detectar posibles usos indebidos.

