mediumCWE-272A01:2021

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.

Código Vulnerable
// 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.
Código Seguro
// 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ás

Ejemplo 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

nodejsNext.jsPythonGo

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas