Saltar al contenido
← Volver al blog
seguridadintegraciones

¿Se filtró tu clave de OpenAI? Qué hacer en la primera hora

Qué hacer paso a paso si se filtró tu clave de OpenAI, Anthropic u otro proveedor de IA: revocarla, poner un tope de gasto, revisar el uso y cerrar la fuga.

Por Equipo Devonauts6 min de lectura
Read in English →
Un manojo de llaves de metal en un llavero sobre una superficie oscura

Si se filtró tu clave de OpenAI (o de Anthropic, Gemini u otro proveedor de IA), revócala ya mismo en el panel del proveedor, antes que cualquier otra cosa; después crea una nueva y guárdala solo en tu servidor. Luego pon un límite de gasto estricto, revisa en la página de uso si hay llamadas que no hiciste y averigua por dónde salió, para que la clave nueva no siga el mismo camino. Borrarla del código o de GitHub no detiene a quien ya la copió.

Aquí tienes la primera hora en orden, qué mirar en los datos de uso, cómo hablar con el proveedor sobre los cobros y los cambios que hacen que la próxima filtración salga mucho más barata.

¿Por qué una clave de IA filtrada es tan urgente?

Porque es dinero, no solo datos. Con tu clave, cualquiera puede mandar peticiones que se cobran a tu cuenta. Hay quien recorre repositorios públicos de GitHub, paquetes de JavaScript y sitios de pegado de texto buscando estas claves, y una que funcione puede revenderse o usarse para mover el producto de otra persona con tu saldo. El daño lo limita, sobre todo, cuánto le permites gastar a tu cuenta.

Algunos proveedores reciben ayuda de GitHub. OpenAI y Anthropic participan en el programa de socios de secret scanning de GitHub: cuando alguien sube una clave con su formato a un repositorio público, GitHub avisa al proveedor y este puede desactivarla. Las páginas de soporte de Anthropic dicen que la desactiva automáticamente y le escribe al dueño. Pero eso solo cubre repositorios públicos de GitHub. Una clave en el JavaScript de tu sitio, en una captura de pantalla o en un documento compartido no la detecta nadie.

¿Qué hago en la primera hora?

Sigue este orden. Cada paso es corto.

  1. Revoca la clave. En OpenAI, entra a la página de API keys del proyecto dueño de la clave y revócala. En la Claude Console, desactívala o bórrala desde la sección de API keys. Los demás proveedores tienen una página equivalente. Si un sistema en producción necesita clave, crea primero la de reemplazo, pero que eso no retrase la revocación más de unos minutos.
  2. Crea la clave nueva con el menor alcance posible. Las claves de OpenAI pertenecen a un proyecto, así que la de una app debería vivir en un proyecto que solo use esa app. Si el proveedor permite permisos por clave, dale solo lo que la app necesita.
  3. Guarda la clave nueva solo en el servidor. Va en el almacén de secretos de tu backend o de tu Edge Function, no en una variable VITE_ o NEXT_PUBLIC_ ni en un archivo que cargue el navegador. Si no sabes dónde estaba antes, revisa nuestra guía sobre la clave de API expuesta en el frontend.
  4. Pon un tope de gasto. En OpenAI, los límites de gasto del proyecto están en la configuración del proyecto, en Limits. Un límite estricto (hard limit) hace que las peticiones fallen con un error 429 y el código project_spend_limit_exceeded al llegar al monto mensual. OpenAI aclara que no se aplica al instante, así que el gasto registrado puede pasarse un poco. Agrega una alerta de gasto por debajo del tope para enterarte antes.
  5. Vuelve a desplegar y prueba. Comprueba que la app funciona con la clave nueva y que la vieja ya es rechazada.

¿Cómo sé si alguien usó la clave?

Abre la página de uso del proveedor y mira el período entre el momento en que pudo filtrarse y el momento en que la revocaste.

Lo que vesLo que puede significar
Un pico de peticiones o tokens sin explicaciónOtra persona estaba usando la clave
Modelos que tu app nunca llamaCasi seguro no es tu tráfico
Actividad a horas en que tus usuarios duermenUso automatizado de un tercero
Uso que sigue subiendo después de "arreglar" el códigoLa clave nunca se revocó, o se filtró otra

Si el uso se separa por clave o por proyecto, fíjate cuál generó el tráfico. Es otra razón para tener una clave por app y por entorno: distingues la filtración de tu propio uso y puedes revocar una sin tumbar todo lo demás.

¿Me pueden devolver los cobros?

Puede ser, pero no lo des por hecho. Escribe al soporte del proveedor con las fechas, el nombre o los últimos caracteres de la clave y lo que ya hiciste (revocar, rotar, poner límites). La propia guía de seguridad de claves de OpenAI pide rotar la clave y contactar al soporte desde su centro de ayuda si crees que fue comprometida. Guarda capturas de las gráficas de uso. Si te acreditan algo es decisión del proveedor.

¿Por dónde se filtró?

Necesitas la respuesta antes de poder evitar la siguiente. En apps hechas con herramientas de IA, los orígenes típicos son:

  • El paquete del navegador. La app llama al proveedor de IA directo desde el frontend. Es la causa más común, y significa que cada visitante recibió la clave.
  • Un repositorio público de GitHub. Se subió un archivo .env o la clave quedó escrita en un archivo de configuración. Busca en el historial, no solo en los archivos actuales: git log -S "sk-" encuentra los commits que agregaron o quitaron esa cadena.
  • Una pantalla o un archivo compartido. Una captura en un ticket de soporte, una demo grabada, un prompt pegado en un canal público, una página de Notion.
  • Una herramienta de terceros. Una automatización no-code, una extensión del navegador o un "probador de prompts" en línea al que le diste la clave.
  • Alguien que ya no trabaja contigo. Una persona que tuvo acceso a tu panel o a tu código y todavía guarda una copia.

Si la clave estaba en el frontend, cerrar la fuga implica crear una pequeña función de servidor que haga la llamada a la IA por el navegador. Solo revocar no alcanza: la clave nueva se filtrará igual en pocos días.

¿Cómo hago que la próxima filtración salga más barata?

Las filtraciones pasan incluso en equipos cuidadosos. Estos ajustes deciden si te cuesta unas monedas o el ingreso de un mes.

  • Una clave por app y por entorno. Desarrollo, pruebas y producción tienen la suya, en su propio proyecto si el proveedor lo permite.
  • Límites estrictos en los dos niveles. Uno por proyecto para cada app y otro para toda la organización, como red de seguridad.
  • Límites por usuario dentro de tu app. Aunque la clave esté segura en el servidor, un solo usuario puede inflar la factura usando tu función. Mira cómo limitar el uso de funciones con IA y cómo controlar el costo de la IA en tu app.
  • Claves que vencen. La guía de OpenAI recomienda ponerles fecha de vencimiento y rotarlas con un calendario.
  • Lista de IPs permitidas, si tu proveedor la ofrece y tu servidor tiene una dirección fija.
  • Secret scanning en tu repositorio con push protection, para que un commit con una clave se bloquee antes de ser público.

Respuestas rápidas

¿Basta con borrar la clave de GitHub? No. Los commits viejos, los forks y las copias la conservan. Revocarla en el panel del proveedor es lo único que la inutiliza.

¿OpenAI la desactiva por mí? A veces, si se subió a un repositorio público de GitHub. No esperes a que pase: revócala tú.

¿Tengo que avisar a mis usuarios? Una clave de IA filtrada suele exponer tu facturación, no sus datos. Si además daba acceso a conversaciones o archivos guardados con datos de usuarios, trátalo como un posible incidente de datos y busca asesoría.

¿Por qué se volvió a filtrar la clave nueva? Porque la causa sigue ahí. Si la app llama al proveedor desde el navegador, cada clave nueva es pública en cuanto despliegas.

¿Necesitas ayuda para cerrar la fuga?

Si no sabes dónde quedó expuesta la clave, el chequeo de salud gratis muestra lo que tu app publicada revela desde afuera. Si hay que pasar las llamadas a la IA a un servidor con límites bien puestos, eso lo cubren nuestros planes de mantenimiento y la revisión de seguridad de Supabase; también puedes escribirnos y contarnos qué pasó.

¿Tu app sigue trabada?

Pasa el chequeo gratis con la URL de tu app, o pide la Auditoría de rescate de $299: un ingeniero senior revisa el código y te envía un informe escrito en 2 días hábiles.