mediumCWE-213A03:2021

Exposición Excesiva de Datos

Endpoints de API que devuelven objetos completos de la base de datos con campos sensibles en lugar de solo los campos que el cliente realmente necesita, exponiendo hashes de contraseñas, IDs internos, flags de admin y otros datos sensibles.

Cómo Funciona

Cuando devuelves el registro crudo de la base de datos, devuelves todo — incluyendo passwordHash, internalNotes, isAdmin, stripeCustomerId. El frontend puede que solo muestre el nombre y el avatar, pero el objeto completo está en la respuesta de red para cualquiera que abra DevTools. Los atacantes lo leen directamente de la respuesta de la API.

Código Vulnerable
// MAL: devolviendo el objeto crudo de la base de datos
export async function GET(req: Request) {
  const user = await db.users.findUnique({ where: { id: userId } });
  return Response.json(user); // incluye passwordHash, isAdmin, stripeId...
}
Código Seguro
// BIEN: selecciona y devuelve explícitamente solo los campos necesarios
export async function GET(req: Request) {
  const user = await db.users.findUnique({
    where: { id: userId },
    select: { id: true, name: true, email: true, avatarUrl: true }
  });
  return Response.json(user);
}

Ejemplo Real

El OWASP API Security Top 10 ha listado la Exposición Excesiva de Datos desde 2019 como una de las vulnerabilidades de API más comunes. En 2021, una importante API de salud de EE.UU. fue encontrada devolviendo registros completos de pacientes (incluyendo SSN y detalles de seguro) en respuestas que solo necesitaban mostrar fechas de citas.

Cómo Prevenirlo

  • Siempre usa el select de Prisma o la proyección de campos del ORM para devolver solo los campos necesarios
  • Crea DTOs (Data Transfer Objects) de respuesta que definan explícitamente lo que se devuelve
  • Nunca devuelvas objetos crudos de la base de datos desde endpoints de API
  • Agrega una regla de revisión de código: cada respuesta de API debe auditarse por fuga de campos sensibles

Tecnologías Afectadas

nodejsNext.jsPythonGo

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas