Una API key puede tardar segundos en generarse y segundos en quedar expuesta. El problema es que puede continuar siendo válida durante semanas o meses.
Una situación bastante habitual ocurre durante la depuración de una aplicación: una solicitud falla, el desarrollador imprime los encabezados HTTP, se registra la respuesta completa de una API o se activa un modo debug.
El resultado puede ser una credencial almacenada en un archivo de log.
Y ese archivo puede terminar en un sistema de monitoreo, un repositorio, una plataforma de CI/CD o una copia de seguridad.
## Eliminar el texto no resuelve el problema
Supongamos que encontramos lo siguiente en un registro:
`Authorization: Bearer [TOKEN EXPUESTO]`
El primer impulso puede ser borrar el registro o eliminar la línea del código que produjo la exposición.
Pero hay algo más importante: si alguien tuvo acceso al token, debemos asumir que puede seguir utilizándolo.
Un secreto expuesto debe tratarse como una credencial comprometida.
## Qué hacer inmediatamente
**1. Identificar qué credencial se expuso**
Determinar si se trata de una API key, un token OAuth, una contraseña, una credencial de base de datos o una clave privada.
Identificar también qué servicios y permisos están asociados.
**2. Revocar o rotar el secreto**
Desde el proveedor correspondiente, revocar la credencial comprometida y generar una nueva.
No alcanza con reiniciar la aplicación ni con cambiar una variable de entorno. La credencial anterior puede continuar funcionando hasta que sea revocada o expire.
**3. Revisar actividad sospechosa**
Consultar los registros del proveedor para identificar solicitudes, direcciones IP, horarios y operaciones que no correspondan al comportamiento habitual.
**4. Buscar otras copias**
Revisar:
- Logs de aplicaciones.
- Registros de CI/CD.
- Herramientas de monitoreo.
- Historial de Git.
- Artefactos de compilación.
- Tickets y sistemas de soporte.
- Backups y archivos temporales.
**5. Evaluar el alcance**
Si la credencial permitía acceder a una base de datos, otros servicios o información de usuarios, hay que evaluar también esos posibles accesos.
**6. Corregir el origen**
Antes de volver a desplegar, eliminar la causa que permitió registrar el secreto.
## Cómo evitar que vuelva a suceder
La guía de logging de OWASP recomienda no registrar directamente tokens de acceso, contraseñas, cadenas de conexión y claves criptográficas.
En lugar de registrar el contenido completo de una solicitud, conviene registrar información estructurada:
- Identificador de la operación.
- Servicio involucrado.
- Código HTTP.
- Resultado de la solicitud.
- Duración.
- Identificador de correlación.
Por ejemplo, es posible registrar que una integración falló por un error de autenticación sin almacenar el token utilizado.
También conviene implementar:
- Secret scanning en los repositorios.
- Variables de entorno o gestores de secretos.
- Credenciales con permisos mínimos.
- Tokens con vencimiento cuando sea posible.
- Rotación periódica o ante sospechas de exposición.
- Acceso restringido a los registros.
## El secreto no es el archivo: es el acceso que permite
Un token puede aparecer en un log aparentemente inofensivo, pero representar acceso a servicios, datos y operaciones de negocio.
La respuesta correcta no es solamente limpiar el archivo. Es revocar la credencial, investigar el posible uso indebido y evitar que la aplicación vuelva a registrar información sensible.
La seguridad también consiste en controlar qué información dejamos detrás cuando algo falla.
**Referencias:** OWASP Logging Cheat Sheet, OWASP Secrets Management Cheat Sheet y GitHub Secret Scanning.
