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.
// 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...
}// 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
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.