← Derniers articles
💻 computer science

GraphQLer: Enhancing GraphQL Security with Context-Aware API Testing

GraphQLer est un framework de test de sécurité automatisé en open source qui améliore la sécurité des API GraphQL en construisant des graphes de dépendances typés à partir de schémas vivants afin de synthétiser des chaînes de vulnérabilités multi-étapes, surpassant ainsi les outils existants tels que ZAP et EvoMaster dans la détection de failles complexes et dépendantes de l'état comme l'IDOR, l'UAF et les vulnérabilités d'injection.

Auteurs originaux : Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

Publié 2026-08-05
📖 4 min de lecture☕ Lecture pause café

Auteurs originaux : Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez l'internet comme une ville géante et bouillonnante où différents programmes informatiques (des applications) communiquent constamment entre eux pour partager des informations. Pendant des années, ces conversations suivaient une carte stricte et prévisible : si vous vouliez une image, vous demandiez le dossier « image » ; si vous vouliez un message, vous demandiez le dossier « message ». C'était comme commander à partir d'un menu où chaque plat a un nom et un emplacement fixes. Mais récemment, une nouvelle façon de parler appelée GraphQL est devenue populaire. Au lieu d'un menu fixe, GraphQL est comme un distributeur automatique magique et polymorphe. Vous pouvez demander exactement ce que vous voulez, et il essaiera de le construire pour vous sur le champ. Le problème est que, parce que cette machine est si flexible, elle oublie parfois de vérifier qui se tient devant elle. Un distributeur ordinaire pourrait ne donner un soda qu'à quelqu'un possédant une pièce, mais ce distributeur magique pourrait accidentellement distribuer un journal intime privé ou un compte bancaire si vous posez la question de la bonne manière. C'est là que les chercheurs en sécurité interviennent, essayant de trouver comment piéger la machine pour lui faire révéler ses secrets sans pour autant détruire la ville.

Le document que vous allez lire présente un nouveau détective numérique nommé GraphQLer. Considérez la plupart des scanners de sécurité comme des touristes maladroits qui s'approchent du distributeur, appuient sur un bouton au hasard et voient ce qui se passe. S'ils appuient sur « Soda » et obtiennent un soda, ils passent à autre chose. S'ils appuient sur « Eau » et obtiennent une erreur, ils abandonnent. Ils ne réalisent jamais que pour obtenir le « Trésor Secret », il faut d'abord appuyer sur « Acheter Soda », puis « Obtenir Reçu », et ensuite appuyer sur « Trésor Secret ». Les anciens outils sont trop stupides pour relier les points ; ils testent chaque bouton de manière isolée et manquent les séquences complexes nécessaires pour briser le système.

GraphQLer est différent. C'est comme un détective qui étudie d'abord les plans de la machine (le « schéma ») pour comprendre comment les boutons sont connectés. Il construit une carte mentale montrant que le « Bouton A » crée un nouvel article, le « Bouton B » en supprime un, et le « Bouton C » peut peut-être encore en voir un même après sa suppression. Avec cette carte, GraphQLer ne se contente pas d'appuyer sur des boutons au hasard ; il crée des chaînes d'actions spécifiques. Il simule un scénire où un utilisateur achète un article, puis tente de le voler, ou le supprime et tente ensuite de le lire à nouveau.

Les chercheurs ont testé ce nouveau détective sur 21 API réelles et fictives mais réalistes (les systèmes informatiques testés). Ils ont constaté que GraphQLer était une amélioration massive par rapport aux anciens outils. Alors que les meilleurs outils existants ne pouvaient atteindre que 29 % des boutons de la machine, GraphQLer a réussi à atteindre 85,52 % d'entre eux. Plus important encore, lorsqu'il s'agissait de trouver les failles de sécurité complexes, les anciens outils n'ont trouvé aucun des problèmes multi-étapes complexes. GraphQLer, cependant, a trouvé les cinq vulnérabilités « IDOR » confirmées (où l'on peut voir les affaires de quelqu'un d'autre simplement en changeant un numéro) et a même détecté un bug de type « Use-After-Free » (où l'on peut voir un fichier après qu'il a été supprimé).

Dans un test en conditions réelles sur un système financier (que les auteurs appellent « FinServ » pour préserver l'anonymat), GraphQLer a trouvé huit failles de sécurité potentielles sans avoir besoin de mots de passe ou de documents secrets. Il a même trouvé des moyens de faire planter le système et de révéler son code interne, ce qui est une très mauvaise chose pour la sécurité. Le document montre également que GraphQLer peut reproduire des vulnérabilités connues dans une plateforme open-source populaire appelée Saleor, prouvant qu'il fonctionne sur des systèmes déjà connus pour être défaillants.

Les auteurs précisent avec prudence que, bien que leur outil soit excellent pour trouver ce type spécifique de bugs de réaction en chaîne, il n'est pas une baguette magique qui résout tout. Il éprouve toujours des difficultés face à certains scénarios très spécifiques et complexes où la machine nécessite plusieurs informations simultanées pour fonctionner. Mais pour la grande majorité des applications modernes utilisant cette technologie flexible GraphQL, GraphQLer prouve que vous ne pouvez plus tester les boutons un par un. Vous devez comprendre l'histoire que raconte la machine, et ce n'est qu'alors que vous pourrez trouver où se trouvent les incohérences de l'intrigue.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →