GraphQL Security
devsecopsDéfinition
GraphQL Security couvre les vulnérabilités et pratiques de sécurisation spécifiques au protocole GraphQL, une alternative aux APIs REST développée par Facebook (Meta) en 2015. GraphQL offre des avantages de flexibilité significatifs (les clients définissent exactement les données dont ils ont besoin, réduisant le sur-fetching), mais introduit des vecteurs d'attaque spécifiques que les approches de sécurité REST classiques ne couvrent pas. Les vulnérabilités spécifiques à GraphQL découlent de sa nature : un seul endpoint (/graphql) traite toutes les requêtes, les requêtes peuvent être arbitrairement complexes et imbriquées (introspection, fragments, requêtes récursives), et la flexibilité de la spécification peut facilement conduire à des implémentations non sécurisées. Les attaques GraphQL les plus courantes incluent : l'Introspection Abusive, qui permet à un attaquant de cartographier entièrement le schéma de l'API (types, champs, mutations) pour planifier d'autres attaques. Les Batch Queries et Query Batching permettent d'envoyer des centaines de requêtes en un seul appel HTTP, contournant les rate limits basés sur le nombre de requêtes HTTP. Les Nested Queries et Query Depth Attacks (requêtes profondément imbriquées comme author { posts { author { posts { ... } } } }) peuvent provoquer des chargements exponentiels en base de données et un déni de service. Les Alias Attacks utilisent les alias GraphQL pour contourner les rate limits de champ (username1: user(id: 1) { email }, username2: user(id: 2) { email } ...). Les mesures de sécurisation GraphQL comprennent : désactiver l'introspection en production (ou la restreindre aux utilisateurs authentifiés), implémenter des limites de profondeur de requête (max depth : 7-10), des limites de complexité (query complexity analysis), du rate limiting basé sur la complexité plutôt que sur le nombre de requêtes HTTP, l'authentification systématique avant tout resolver, l'autorisation au niveau de chaque champ et mutation (pas seulement au niveau du schéma), et la validation des variables d'entrée. Des outils spécialisés comme Inigo, Escape.tech, et les bibliothèques graphql-depth-limit, graphql-rate-limit (Node.js) ou graphene-shield (Python) facilitent l'implémentation de ces contrôles.
Vecteurs d'attaque spécifiques à GraphQL
Les principales attaques GraphQL : 1) Introspection pour mapper le schéma complet. 2) Query Depth attacks (requêtes récursives imbriquées provoquant des requêtes DB exponentielles). 3) Query Complexity abuse (requêtes légitimes mais coûteuses en ressources). 4) Alias batching pour contourner les rate limits. 5) Field Suggestion attacks (GraphQL suggère des corrections de typos révélant des champs non documentés). 6) Authorization bypass via des fragments ou directives exploitant des inconsistances d'implémentation.
Contrôles de sécurisation essentiels
Les contrôles obligatoires pour une API GraphQL en production : désactiver l'introspection (ou la restreindre aux admin), limiter la profondeur des requêtes (max depth 7-10), implémenter un rate limiting basé sur la complexité calculée de la requête, valider et sanitiser toutes les variables d'entrée, implémenter l'autorisation au niveau de chaque resolver (pas seulement du schéma global), et utiliser la persisted queries (whitelisting des queries connues) pour les clients mobiles et SPA.
Outils et bibliothèques de sécurité GraphQL
L'écosystème de sécurité GraphQL inclut : graphql-depth-limit et graphql-query-complexity (Node.js) pour les limites de requêtes, graphene-shield (Python) pour l'autorisation par champ, graphql-armor (full-stack protection library) comme solution intégrée, Inigo et Escape.tech comme plateformes de sécurité GraphQL en SaaS. Pour les tests, les outils spécialisés GraphQL Security (Clairvoyance pour l'introspection en black-box, Altair GraphQL Client pour les tests manuels) complètent les scanners DAST génériques.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h