API Key con Alcance Demasiado Amplio
Usar API keys de admin o acceso completo para operaciones que solo requieren acceso de lectura, lo que significa que una key comprometida le da a los atacantes mucho más acceso del necesario.
Cómo Funciona
Si tu servicio de newsletter solo necesita enviar emails, no debería tener una API key con permisos de eliminar-todos-los-contactos. Principio de mínimo privilegio: cada key debe tener solo los permisos requeridos para su tarea específica. Una key con alcance excesivo que se filtra causa daño máximo; una key correctamente alcanzada limita el radio de explosión.
// MAL: usando key de admin para una operación de solo lectura
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!); // acceso admin completo
const prices = await stripe.prices.list(); // solo necesita acceso de lectura
// Si esta key se filtra, el atacante puede eliminar clientes, emitir reembolsos, etc.// BIEN: usa keys restringidas por servicio
// En el Dashboard de Stripe: crea una key restringida con solo 'prices:read'
const stripe = new Stripe(process.env.STRIPE_PRICES_READ_KEY!);
// Esta key solo puede listar precios — nada másEjemplo Real
Cuando el bash uploader de Codecov fue comprometido en 2021, los atacantes robaron variables de entorno de CI/CD incluyendo API keys de nube y servicios. Las empresas que usaban keys de admin para tareas de CI (que solo necesitaban acceso de lectura) sufrieron compromiso completo de infraestructura. Las empresas con keys de alcance limitado tuvieron radio de explosión reducido.
Cómo Prevenirlo
- Crea API keys separadas para cada servicio/caso de uso con los permisos mínimos requeridos
- Audita todas tus API keys trimestralmente — revoca cualquiera que sea más amplia de lo necesario
- Para Stripe, GitHub, AWS: usa keys restringidas/con alcance, no tus credenciales root/admin
- Guarda cada key en su propia variable de entorno con un nombre descriptivo que indique su alcance
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Documentación de API Expuesta en Producción
lowSwagger UI, ReDoc u otras interfaces de documentación de API accesibles públicamente en producción, dándole a los atacantes un mapa interactivo gratuito de cada endpoint, parámetro y método de autenticación.
Introspección GraphQL Habilitada en Producción
mediumLa introspección de GraphQL permanece habilitada en producción, permitiendo que cualquiera consulte el schema completo y descubra todos los tipos, campos, mutations y sus estructuras de argumentos.
GraphQL Sin Límite de Profundidad de Query
mediumAPI GraphQL sin límite de profundidad en queries anidadas, permitiendo a los atacantes crear queries profundamente anidadas que agotan los recursos del servidor y causan denegación de servicio.
Ataque de Batching en GraphQL
mediumEndpoints GraphQL que aceptan arrays de operaciones sin límites de tamaño, permitiendo a los atacantes bypassear el rate limiting agrupando miles de requests en una sola llamada HTTP.