Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

GraphQL Security

devsecops

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis