Skip to main content

Snyk Code prend en charge Apex, la sécurité des API et GraphQL

Écrit par

Frank Fischer

blog feature snyk code dark

28 octobre 2021

0 minutes de lecture

Snyk Code a connu une année 2021 exceptionnelle. En début d’année, il prenait en charge trois langages — Java, JavaScript et TypeScript — et a depuis ajouté Python, C#, PHP, Ruby et Go. D’autres langages et fonctionnalités sont à venir. Aujourd’hui, nous sommes heureux d’annoncer la prise en charge d’Apex de Salesforce, ainsi que de la sécurité des API et de GraphQL. Voyons cela de plus près !

Snyk Code prend en charge Apex de Salesforce

Snyk Code prend désormais en charge l’analyse de sécurité du langage Apex de Salesforce. En 2016, Salesforce a présenté Lightning Experience, un framework général permettant de créer des interfaces frontales dans Salesforce. Il repose sur une approche modèle-vue-contrôleur (MVC) : les objets Salesforce jouent le rôle de modèle, la vue est implémentée sous forme de balisage, et les contrôleurs sont écrits en JavaScript côté client ou dans un langage appelé Apex côté serveur.

Schéma montrant Salesforce reliant une vue client et un contrôleur JavaScript à un contrôleur Apex côté serveur et à une base de données.

Apex est un langage de développement propriétaire utilisé sur la plateforme Salesforce Force. Il a été créé par Parker Harris, l’un des fondateurs de Salesforce, pour permettre de gérer une logique métier plus complexe et les données stockées sur la plateforme Salesforce. Apex est conçu pour répondre à ces besoins. Par exemple, Salesforce étant une plateforme mutualisée, la séparation des environnements d’exécution des différents clients est une préoccupation majeure.

Apex présente de fortes similitudes avec Java et C# : c’est un langage de programmation orienté objet, fortement typé et insensible à la casse, qui utilise la notation par points et les accolades. À l’origine, Apex était interprété, mais un compilateur a été publié en 2012. Sa création n’a pas été une mince affaire, car Apex est étroitement intégré à la plateforme Salesforce. Ce compilateur a toutefois permis une meilleure prise en charge des IDE tels que Visual Studio Code.

Remarque : Apex de Salesforce (Advanced Programming Experience) n’a aucun lien avec Oracle APEX (Oracle Application Express).

Avec cette nouvelle prise en charge de l’analyse d’Apex, Snyk Code ouvre un nouveau chapitre dans le domaine du SAST. L’analyse est extrêmement rapide — au point de s’exécuter directement dans votre IDE et de vérifier l’effet de chaque correctif. En plus de cette vitesse en temps réel, le moteur peut analyser l’intégralité du projet en s’appuyant sur toute la base de connaissances : il ne s’agit pas d’une analyse delta, différentielle ou incrémentielle, mais bien d’une analyse complète.

Snyk Code s’appuie sur un processus unique d’apprentissage automatique guidé par des experts pour constituer et enrichir sa base de connaissances. Il utilise des centaines de milliers de projets, soit des milliards de lignes de code, comme données d’entraînement. Il apprend ainsi de l’expérience collective de la communauté mondiale des développeurs. Cette méthode permet à Snyk Code de créer rapidement des bases de connaissances et de maintenir une précision parmi les meilleures du secteur. Et, comme tous les produits Snyk, Snyk Code est conçu pour les développeurs et s’intègre directement à leur processus de développement : plugins pour IDE, vérifications des pull requests, scores de priorité, recommandations faciles à comprendre, exemples de solutions adoptées par d’autres dans une situation similaire, et bien plus encore.

Remarque : Salesforce et Snyk entretiennent une relation étroite. Salesforce est un client de Snyk et également un investisseur de Snyk. Nous sommes très reconnaissants à Salesforce de la confiance qu’elle nous accorde.

Nous serions ravis de vous montrer comment Snyk Code analyse Apex ou tout autre langage pris en charge, comme JavaScript, Java, TypeScript, C#, Python, Ruby, Go ou PHP.

Sécurisez votre code grâce à des informations de pointe

Découvrez toutes les fonctionnalités SAST de Snyk Code en seulement 30 minutes.

Sécurité des API

Les API sont aujourd’hui un élément essentiel de l’immense majorité des applications. Dans les applications cloud, les API basées sur JSON, appelées API REST, ont gagné en popularité, car elles sont très faciles à configurer et à utiliser. Ces dernières années, les API REST ont continué d’évoluer, donnant naissance à GraphQL. Nous y reviendrons plus loin.

JavaScript et TypeScript sont souvent utilisés pour créer ou consommer des API, et de nombreuses bibliothèques permettent de les développer. Mais une grande liberté implique de grandes responsabilités, et les API ne font pas exception. Elles sont exposées à certaines attaques spécifiques.

Remarque : Pour en savoir plus sur la sécurité des API, consultez le Top 10 des risques de sécurité des API de l’OWASP .

Snyk Code a ajouté des règles qui détectent et signalent les problèmes courants liés aux API. Une suggestion de correctif est ensuite superposée au code source d’origine, accompagnée d’exemples montrant comment d’autres personnes ont résolu le même problème dans une situation similaire. Voyons un exemple.

En règle générale, les API REST donnent accès à des objets de données individuels à l’aide d’une URL spécifique. Par exemple, [Your URL]/api/v1/notes/345 permet de sélectionner la note 345. Pour connaître les éléments auxquels vous avez accès, vous pouvez appeler un service de liste qui vous renverra les identifiants disponibles. Si ces identifiants sont faciles à deviner et qu’aucune vérification de l’utilisateur ou de son rôle n’est effectuée, un attaquant peut simplement envoyer une requête avec un identifiant deviné pour obtenir les données correspondantes. Il s’agit d’une référence directe non sécurisée à un objet (IDOR). Snyk Code détecte ces problèmes et des problèmes similaires grâce à une approche entièrement nouvelle des tests de sécurité des applications statiques (SAST). L’outil informe les développeurs des problèmes potentiels et les aide à les corriger. Parfois, il suffit d’activer une option dans la bibliothèque.

En résumé, l’OWASP considère la sécurité des API comme un enjeu majeur. Grâce à son approche unique, Snyk Code s’attaque à la sécurité des API et repousse les limites du secteur du SAST. Et ce n’est pas tout…

Sécurité de GraphQL

Les API REST ont beaucoup évolué ces dernières années. Facebook a notamment contribué au développement d’un protocole appelé GraphQL. La critique adressée aux API REST traditionnelles est qu’il faut effectuer plusieurs appels pour récupérer tous les éléments de données d’un objet : d’abord la fonction de liste pour obtenir l’identifiant de l’instance, puis éventuellement plusieurs appels pour en récupérer tous les aspects. Avec GraphQL, ces appels peuvent être regroupés en un seul, ce qui réduit la charge.

Snyk Code est le premier du marché à prendre en charge GraphQL. L’équipe Snyk Code a étudié les problèmes de sécurité potentiels, ajouté des règles et les a affinées grâce à son processus unique guidé par des experts et à des dépôts open source utilisés comme données d’entraînement. Une fois encore, Snyk Code a tiré parti des connaissances de la communauté mondiale des développeurs pour apprendre et s’améliorer. De nombreuses applications utilisant GraphQL sont écrites en JavaScript ou en TypeScript avec graphql-express, koa-graphql, mercurius, ApolloServer et graphql-js. Elles sont désormais prises en charge par Snyk Code.

Voici deux exemples de problèmes que Snyk Code peut détecter dans GraphQL. Premièrement, les bibliothèques GraphQL autorisent souvent par défaut un niveau d’imbrication très important des requêtes, pouvant atteindre des centaines de milliers de niveaux. En pratique, cela sert rarement, mais un attaquant peut exploiter cette possibilité en envoyant une requête très imbriquée. La bibliothèque risque alors d’utiliser d’énormes quantités de mémoire et d’autres ressources système pour créer les objets internes nécessaires au traitement de ces requêtes, ce qui peut épuiser les ressources, voire faire planter le système. Il s’agit d’une attaque par déni de service. Snyk Code vérifie que les bibliothèques sont configurées pour tronquer les requêtes et ainsi prévenir ce type d’attaque.

Écran Snyk Code mettant en évidence une potentielle vulnérabilité par déni de service due à des requêtes GraphQL imbriquées dans du code ApolloServer

Deuxièmement, GraphQL permet à l’utilisateur de l’API d’interroger un serveur GraphQL sur le schéma sous-jacent grâce à la fonctionnalité d’introspection. Cela peut être voulu pour une API publique, mais vous ne souhaitez peut-être pas divulguer ce type d’informations pour une API interne. Les attaquants ne peuvent alors pas découvrir les capacités de l’API en l’inspectant. Cela n’empêchera peut-être pas une personne ayant déjà franchi le périmètre de votre réseau interne de mener une attaque, mais cela compliquera considérablement sa tâche et la ralentira. Dans ce cas, Snyk Code vous avertit que l’introspection est activée afin que vous puissiez prendre une décision en toute connaissance de cause.

Écran Snyk Code montrant l’introspection GraphQL activée et le code graphqlHTTP mis en évidence dans une application Express.

Remarque : L’OWASP a publié une fiche pratique GraphQL qui répertorie les problèmes évoqués et d’autres risques potentiels liés aux API GraphQL.

Ce ne sont que deux exemples (pas trop techniques). Grâce à la prise en charge de GraphQL, Snyk Code ouvre la voie dans un domaine jusque-là inexploré. Chez Snyk, nous avons constaté l’adoption de GraphQL et souhaitions être le partenaire idéal, en intégrant une sécurité conviviale pour les développeurs dès le départ. Snyk Code nous a fourni une plateforme polyvalente et rapide pour jouer un rôle de premier plan dans la prise en charge de CodeQL.

Pour conclure

Récapitulons les nouveautés annoncées pour Snyk Code :

  • Prise en charge d’Apex de Salesforce

  • Prise en charge de la sécurité des API REST

  • Prise en charge de la sécurité de GraphQL

Ces ajouts représentent une évolution majeure du moteur Snyk Code. Nous travaillons en étroite collaboration avec nos clients pour créer une solution adaptée à vos besoins, et nous serions ravis de vous montrer ce que Snyk Code et les autres composants de la plateforme Snyk peuvent faire pour vous. Prenez 30 minutes dans votre agenda chargé et réservez une démo pour découvrir le produit en direct et obtenir des réponses à toutes vos questions.

Sécurisez votre code grâce à des informations de pointe

Découvrez toutes les fonctionnalités SAST de Snyk Code en seulement 30 minutes.