Introspección GraphQL Habilitada en Producción
La 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.
Cómo Funciona
La introspección es la función integrada de descubrimiento de schemas de GraphQL — esencial para herramientas de desarrollo. En producción, le da a los atacantes un plano completo de tu modelo de datos. Aprenden cada nombre de tipo, nombre de campo, relación y qué mutations existen. Esto acelera dramáticamente encontrar bypasses de autorización y fugas de campos sensibles.
// MAL: configuración por defecto de Apollo Server tiene introspección habilitada
const server = new ApolloServer({
typeDefs,
resolvers,
// introspection: true por defecto en no-producción... pero verifica tu setup
});// BIEN: deshabilita explícitamente la introspección en producción
const server = new ApolloServer({
typeDefs,
resolvers,
introspection: process.env.NODE_ENV !== 'production',
// También considera deshabilitar el playground en producción
plugins: [process.env.NODE_ENV === 'production' && ApolloServerPluginLandingPageDisabled()].filter(Boolean)
});Ejemplo Real
Los investigadores de seguridad rutinariamente ejecutan queries de introspección como primer paso al probar APIs GraphQL. Con el schema en mano, las herramientas automatizadas pueden generar todas las queries y mutations posibles para probar problemas de autorización. El equipo de seguridad de API de Shopify específicamente recomienda deshabilitar la introspección en producción.
Cómo Prevenirlo
- Configura introspection: false en Apollo Server o tu framework GraphQL para producción
- También deshabilita el playground/sandbox de GraphQL en producción
- Si necesitas acceso al schema para clientes, proporciona una página de docs curada manualmente
- Prueba enviando una query de introspección a tu endpoint de producción: {__schema{types{name}}}
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.
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.
Exposición Excesiva de Datos
mediumEndpoints 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.