9 outils pour trouver et corriger les vulnérabilités de sécurité de GraphQL
Pour ceux qui débutent, GraphQL est un langage de requête et d'exécution pour les API, initialement développé par Facebook et désormais en open source. C'est un soulagement pour la communauté ! 😌
Comme tout outil informatique, GraphQL présente un ensemble d'avantages et d'inconvénients.
Si l'on met de côté les inconvénients liés aux fonctionnalités de base, il existe également une série de faiblesses en matière de sécurité qu'il ne faut pas négliger.
Pas de panique ! Plusieurs outils sont disponibles pour identifier et corriger ces vulnérabilités de sécurité dans GraphQL.
Avant de les explorer, revenons sur ce qu'est GraphQL et ses principales failles de sécurité.
Qu'est-ce que GraphQL ?
Imaginez que vous êtes au restaurant en train de commander votre déjeuner. Vous ne souhaitez pas forcément le plat tel qu’il est présenté sur la carte. Il se peut que vous vouliez modifier certains ingrédients, en ajouter ou en retirer. Par exemple, si vous êtes allergique aux noix, vous aimeriez que votre plat soit adapté à vos besoins.
Considérez GraphQL comme un serveur qui personnalise votre commande et vous fournit exactement ce que vous avez demandé, mais au lieu de la nourriture, GraphQL manipule des données provenant de serveurs.
Grâce à cette technologie, les applications modernes peuvent vous fournir des données précises, ce qui permet d’économiser de la bande passante et d’améliorer l’expérience utilisateur.
Approfondissez vos connaissances sur les meilleurs logiciels GraphQL.
Les faiblesses de GraphQL
Voici une liste des vulnérabilités potentielles qui pourraient être exploitées par des individus malveillants afin de compromettre des informations confidentielles :
- Sur-récupération et sous-récupération : Cette faille peut épuiser les ressources du serveur. Si les requêtes GraphQL sont incorrectes, cela peut engendrer une sur-extraction (obtention de plus de données que nécessaire) ou une sous-extraction (obtention de moins de données que souhaité, obligeant l'utilisateur à faire plusieurs requêtes).
- Exposition excessive de données : Une mauvaise configuration des contrôles d'accès peut exposer des données sensibles. Si le serveur autorise des accès non autorisés, un pirate informatique compétent peut aisément compromettre les données.
- Problème des requêtes imbriquées : Par défaut, il n'y a pas de limite de complexité des requêtes, ce qui permet d'envoyer des requêtes très complexes. Imaginez plusieurs requêtes complexes imbriquées qui accapareraient les ressources système, entraînant un ralentissement, voire une attaque par déni de service (DoS).
- Injections : GraphQL est un langage de requête qui prend en compte les entrées des utilisateurs. Si votre API n'est pas sécurisée, elle peut être victime d’une injection de code malveillant. Votre base de données, votre système de fichiers, voire votre réseau et votre système d'exploitation peuvent être la cible d'attaques.
- Bombes GraphQL : Découvertes en août 2022, elles affectent les API qui utilisent les téléchargements de fichiers GraphQL. Il s’agit d’une attaque par déni de service (DoS) qui consiste à envoyer de nombreuses requêtes HTTP au point de terminaison GraphQL.
- Entêtes HTTP mal configurés : Cela peut sembler anodin, mais cela peut avoir des conséquences désastreuses. Une mauvaise configuration peut ouvrir la porte à des attaques comme le CSRF (Cross-Site Request Forgery), le reniflage MIME, les attaques de l'homme du milieu (MitM), etc.
- Limitation de débit mal configurée ou absente : La limitation de débit consiste à limiter le nombre de requêtes qu'un client peut effectuer dans un laps de temps donné. L’absence de limitation ou une mauvaise configuration peut conduire à une attaque DoS.
Effrayant, n'est-ce pas ?
Je vais maintenant vous présenter certains des meilleurs outils que vous pouvez utiliser pour trouver et corriger les vulnérabilités de GraphQL et sécuriser votre serveur. Voici un aperçu des outils dont nous allons parler :
| Outil | Caractéristiques notables |
| Escape GraphQL Security | Analyses rapides, risques réels, intégration avec les outils de développement |
| Invicti GraphQL Scanner | Analyse de diverses attaques, protection contre les menaces modernes |
| StackHawk GraphQL Testing | Contrôles de vulnérabilité continus, sécurité automatisée |
| Beagle Security | Tests actifs, intégration CI/CD, rapports détaillés |
| GraphQL Endpoint Security | Option gratuite, vérification des points de terminaison, base de données mise à jour |
| Qualysec GraphQL Pen Testing | Analyse du Top 10 OWASP, tests d'API dynamiques/statiques |
| AppCheck Security Scanning | Tests d'API, de SPA et de points de terminaison, compatibilité Jira/TeamCity |
| Synopsys API Security Testing | Tests en arrière-plan continus, cartographie visuelle des failles |
| Bright Security API Testing | Focus sur les microservices, CLI, SaaS, intégration CI/CD |
Escape GraphQL Security
Escape conçoit ses outils en pensant aux développeurs, et son analyseur de sécurité GraphQL ne fait pas exception.
Faisant partie des rares fournisseurs de services spécialisés en sécurité, vous pouvez être sûr que les vulnérabilités les plus récentes seront rapidement identifiées.
Mais ce n’est pas tout :
- Le premier scan démarre en seulement 60 secondes !
- La base de données d’Escape est constamment mise à jour en fonction des nouvelles vulnérabilités.
- Affiche les risques réels plutôt que les problèmes qui pourraient potentiellement constituer un risque.
- S'intègre avec vos outils de développement préférés.
Si vous recherchez une solution rapide et simple pour évaluer la sécurité de votre API GraphQL, Escape pourrait être la solution idéale.
Invicti GraphQL Scanner
Anciennement connu sous le nom de Netsparker, Invicti est une référence en matière d'analyse d'API.
Ce que les utilisateurs souhaitent savoir, c'est quels types d'attaques il est capable de détecter. Voici une liste des attaques et vulnérabilités sévères que cet outil peut analyser :
- Injection de commandes aveugles
- Injection SQL aveugle
- Injection de commandes
- Exécution de code à distance
- Contrefaçon de requête côté serveur
Une solution robuste pour se protéger contre les menaces actuelles.
StackHawk GraphQL Security Testing

L'avantage principal de StackHawk GraphQL Testing est la vérification systématique des vulnérabilités GraphQL à chaque pull request.
Si cette fonctionnalité ne vous a pas encore convaincu, voici d'autres atouts de StackHawk :
- Tests de sécurité automatisés.
- Détection et correction rapides des problèmes.
- Interface utilisateur intuitive.
- Documentation claire pour une correction autonome.
Plutôt pratique, n'est-ce pas ?
Beagle Security

Beagle Security se spécialise dans les solutions automatisées de tests de sécurité d'applications web, aidant les entreprises à identifier et corriger les failles de sécurité.
Voici quatre raisons qui les rendent exceptionnels :
- Tests approfondis et actifs.
- Intégration avec CI/CD.
- Rapports détaillés.
- Recommandations de correction par des experts en sécurité.
Vous pouvez également utiliser leur outil d'évaluation de sécurité de site web gratuit pour identifier les vulnérabilités de votre site.
GraphQL Endpoint Security (graphql.security)

Si vous recherchez une solution gratuite avec des fonctionnalités limitées, graphql.security est une excellente option.
Ce produit développé par Escape garantit la fiabilité des analyses et des tests.
Voici quelques fonctionnalités clés :
- Base de données mise à jour par Escape.
- Pas d'inscription requise.
- Vérification du point de terminaison en un seul clic.
- Service gratuit.
Si vous démarrez une activité en ligne et que vous avez un budget limité, je vous recommande vivement d'utiliser graphql.security.
Qualysec GraphQL API Penetration Testing

Qualysec propose des tests d'intrusion d'API GraphQL professionnels. C'est un service d'évaluation de la cybersécurité qui vous permet de découvrir et de corriger les vulnérabilités.
Voici quelques-unes des fonctionnalités intéressantes :
- Analyse du Top 10 des tests d'API GraphQL de l'OWASP pour une protection contre les menaces courantes.
- Tests d'API dynamiques.
- Tests d'API statiques.
- Analyse de la composition du logiciel.
En plus des aspects sécurité, leur rapport d'analyse de vulnérabilité est très complet : rapport d'intrusion, rapport de retest, lettre d'attestation et certificat de sécurité.
AppCheck Security Scanning

AppCheck fournit une assistance complète pour les tests d'API, mais pas seulement. Il propose des fonctionnalités telles que l'analyse SPA, la découverte de points de terminaison, etc.
Voici d'autres atouts :
- Gain de temps grâce à un flux de travail pratique.
- Compatibilité avec Jira, TeamCity et d'autres outils de développement.
- Détection de failles zero-day, plus de 100 000 vulnérabilités connues, et couverture de l'OWASP.
Une liste de fonctionnalités assez impressionnante, n'est-ce pas ?
Synopsys API Security Testing

Synopsys propose un programme de test d'API qui détecte automatiquement les points de terminaison exposés de votre application, le tout en arrière-plan et en continu !
Besoin de plus d'arguments ? Voici d'autres fonctionnalités intéressantes :
- Identification des failles de code et de données grâce à une cartographie visuelle.
- Détection automatisée des vulnérabilités.
- Évaluation des risques et des menaces.
Bright Security API Testing

Les services de Bright Security sont conçus pour les environnements de microservices modernes et offrent une intégration transparente avec les workflows SDLC, CI/CD et git, afin de faciliter au maximum la détection de vulnérabilités.
Voici quelques-unes des principales fonctionnalités de Bright Security :
- CLI pratique pour les développeurs.
- Solution 100% SaaS.
- Intégration CI/CD.
- Vulnérabilités mappées au Top 10 de la sécurité d'API OWASP.
Conclusion
Dans ce guide, nous avons exploré les principales vulnérabilités de GraphQL, ainsi que les meilleurs outils pour les identifier et les corriger.
J'espère que ce guide vous sera utile.
Vous pourriez également être intéressé par une comparaison entre GraphQL et les API REST, afin de savoir laquelle utiliser.