GraphQL — Vulnérabilités spécifiques

API Introspection

Qu'est-ce que GraphQL ?

GraphQL est une alternative à REST qui permet au client de demander précisément les données souhaitées en une seule requête. Risques spécifiques : sur-extraction de données, requêtes coûteuses, et introspection révélant tout le schéma.

Introspection et attaques

# Introspection (révèle TOUT le schéma)
POST /graphql
{"query": "{ __schema { types { name fields { name } } } }"}

graphql-cop -t https://target.com/graphql

# Requête récursive (DoS)
query { user { friends { friends { friends { name } } } } }

# Alias abuse : bruteforce via une seule requête
{
  a: login(user:"admin", pass:"p1") { token }
  b: login(user:"admin", pass:"p2") { token }
}

Défenses

Désactiver l'introspection en production · Limiter la profondeur des requêtes · Limiter le coût des requêtes (cost analysis) · Rate limiting basé sur les résolveurs, pas les requêtes HTTP