Skip to main content

Sécurité de Golang : vulnérabilité permettant de contourner les restrictions d’accès dans JWT

Écrit par

Leeya Shaltiel

snykgo header

22 décembre 2020

0 minutes de lecture

En juillet dernier, l’équipe de sécurité de Snyk a été alertée d’un problème de sécurité potentiel dans le package JWT. Celui-ci fournit une implémentation de JSON Web Tokens en Go. Le problème découvert concernait une fonction appelée VerifyAudience, qui ne fonctionnait pas comme prévu. La fonction acceptait une valeur composée de guillemets doubles (« »), ce qui pouvait faire réussir la vérification de l’audience alors qu’elle aurait dû échouer.

Fait intéressant, la vulnérabilité avait en réalité été corrigée six mois before l’ouverture du ticket lui-même (le correctif ajoutait une validation supplémentaire de la valeur aud à l’aide de la fonction ValidateAudienceAgainst). Toutefois, le correctif avait été intégré à une version précise (v4.0.0-preview1), disponible sur pkg.go.dev, mais pas à la branche master du dépôt.

Comme dans d’autres écosystèmes, de nombreux développeurs Go préfèrent simplement cloner la branche master d’un dépôt GitHub, ce qui, dans ce cas, avait deux conséquences :

  1. Le problème a été signalé after la mise à disposition d’une version corrigée !

  2. Le nombre de projets affectés par cette vulnérabilité est resté élevé, principalement parce que la plupart utilisaient la branche master plutôt que le tag précis contenant le correctif.

Après avoir été qualifiée et confirmée comme vulnérabilité, l’équipe a averti le responsable du package. N’ayant reçu aucune réponse et l’équipe de recherche en sécurité ayant conclu que le problème présentait un risque trop élevé, Snyk lui a attribué un CVE et l’a publié début septembre.

Cette vulnérabilité n’est qu’un exemple parmi les centaines de vulnérabilités de sécurité Golang propriétaires découvertes cette année par l’équipe de recherche en sécurité de Snyk. Cet article présente les processus employés et les tendances observées par Snyk dans cet écosystème en plein essor.

Popularité croissante de Golang et risques de sécurité

Difficile de ne pas être impressionné par les indicateurs de croissance de Golang ces dernières années. Année après année, Golang — ou Go, comme on l’appelle plus couramment — figure parmi les cinq langages les plus appréciés et les plus recherchés dans les enquêtes annuelles auprès des développeurs de Stack Overflow. L’activité sur GitHub est également importante : Go se classe au 4e rang pour les pull requests et les issues, au 3e pour les étoiles et au 7e pour les pushes.

Praticité, facilité d’utilisation, performances… Ces facteurs sont souvent cités parmi les principales raisons pour lesquelles les développeurs apprécient de créer avec Go. Mais qu’en est-il de la sécurité ? Selon l’enquête 2019 auprès de la communauté Go, 75 % des développeurs Go affirment que la sécurité est importante à leurs yeux. L’équipe Go a récemment annoncé son intention de développer une base de données des vulnérabilités connues, en collaboration avec des outils d’analyse de sécurité Golang. Les risques de sécurité dans Golang sont bien réels, et ces mesures importantes contribueront à rendre le développement dans ce langage plus sûr.

Chez Snyk, nous avons également beaucoup investi pour atteindre ce même objectif. Grâce au travail de l’équipe de recherche en sécurité de Snyk, des centaines de nouvelles vulnérabilités de sécurité Golang ont été ajoutées à la base de données des vulnérabilités Snyk Intel depuis 2019. Un nombre croissant d’utilisateurs de Snyk s’appuie sur ces renseignements pour tester et surveiller la sécurité de leurs projets Golang. Il n’a toutefois pas été facile de les obtenir : cet écosystème est relativement récent, et la recherche de vulnérabilités diffère considérablement de celle menée dans des langages de programmation plus établis.

Ce qui rend la recherche en sécurité Golang unique

Lorsqu’il s’agit de découvrir de nouvelles vulnérabilités et de mener des recherches en sécurité, Go se distingue pour plusieurs raisons.

Tout d’abord, le nombre total de vulnérabilités de sécurité. En relativement peu de temps, nous avons constaté une forte hausse de leur nombre. Comparé à des langages de programmation plus établis comme Java et JavaScript, l’écosystème Go n’a pas une longue histoire en matière de vulnérabilités. Cependant, les données que nous avons recueillies montrent une augmentation du nombre de packages et de modules, ainsi qu’une sensibilisation croissante de la communauté Go aux problèmes de sécurité. Le nombre de vulnérabilités de sécurité Golang ajoutées à la base de données des vulnérabilités Snyk Intel en 2020 est presque deux fois supérieur au total des vulnérabilités ajoutées entre 2015 et 2019 !

Page web de la base de données des vulnérabilités Snyk présentant les vulnérabilités, les packages concernés, le langage de programmation et les dates de publication

Autre fait notable : la variété des types de vulnérabilités est également bien plus grande que dans d’autres langages. Pour les seules vulnérabilités ajoutées en 2020, on compte 44 CWE différents ! Cette grande diversité, conjuguée au nombre élevé de vulnérabilités, rend la recherche en sécurité particulièrement passionnante.

Au-delà des CVE : les recherches de Snyk sur les vulnérabilités de sécurité Golang

Toutes les vulnérabilités ne sont pas divulguées ni associées à un CVE. En plus de suivre les nouveaux CVE, l’équipe de sécurité de Snyk peut identifier des vulnérabilités qui n’ont pas encore été divulguées officiellement, mais qui peuvent, par exemple, être évoquées sur des forums publics. Ces recherches sont l’un des piliers qui distinguent la base de données des vulnérabilités Snyk Intel par son exhaustivité : elles offrent une couverture de sécurité complète, au-delà des informations publiques et des rapports CVE officiels.

Ce sont souvent les vulnérabilités les plus dangereuses. Les acteurs malveillants exploitent les informations préliminaires sur une vulnérabilité pendant la période qui s’écoule entre sa discussion et sa reconnaissance publique. Ils savent qu’une fois celle-ci divulguée, il ne s’agit plus que d’attendre la publication d’un correctif.

Pour réduire cette période, Snyk surveille diverses ressources en ligne — forums techniques, issues et pull requests GitHub, et même réseaux sociaux — afin de repérer les nouvelles vulnérabilités le plus tôt possible dans leur cycle de vie. Nous évaluons les vulnérabilités et leur gravité, et déterminons si une mise à niveau permet de les corriger. Une fois confirmées, elles sont ajoutées à notre base de données et les utilisateurs en sont avertis.

Pour Go, Snyk reçoit chaque jour des dizaines d’alertes concernant des vulnérabilités de sécurité potentiellement nouvelles. L’alerte n’est qu’un premier indice : nous approfondissons ensuite l’analyse afin de confirmer qu’il s’agit bien d’une vulnérabilité. Lors du triage du rapport de sécurité, nous réalisons une preuve de concept (POC) du problème de sécurité et, si la vulnérabilité est confirmée, nous lui attribuons un CVE. Le responsable du package open source concerné est également contacté afin que les mesures nécessaires puissent être prises au plus vite pour atténuer le risque de sécurité.

Les recherches qui permettent de découvrir ces vulnérabilités propriétaires jouent un rôle essentiel dans la protection des applications. En effet, parmi les 10 vulnérabilités de sécurité Go les plus courantes chez les clients de Snyk, 7 sont des vulnérabilités propriétaires découvertes par Snyk et absentes de toutes les bases de données CVE.

Snyk pour Golang

Snyk propose aux équipes de développement et de sécurité qui souhaitent protéger leurs applications Golang une solution facile à mettre en œuvre, qui facilite les corrections rapides et s’appuie sur des renseignements de sécurité précis :

  • Conçu pour les développeurs - Snyk s’intègre parfaitement aux workflows de développement existants, analyse les projets en quelques secondes (même ceux de la taille de Kubernetes !) et est très simple à utiliser, pour favoriser son adoption et optimiser la productivité.

  • Une couverture complète - Snyk détecte les vulnérabilités de sécurité ET les problèmes de licence à chaque étape du SDLC. Il prend en charge les applications Go Modules, y compris celles qui s’exécutent dans des conteneurs.

  • Une analyse approfondie de la sécurité - Depuis 2019, Snyk a ajouté des centaines de vulnérabilités de sécurité Go propriétaires à la base de données des vulnérabilités Snyk Intel. La plupart sont des vulnérabilités propriétaires absentes de la NVD, découvertes grâce aux recherches de l’équipe de recherche en sécurité de Snyk.

Vous utilisez Go et souhaitez vous lancer ? Essayez Snyk gratuitement !

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.

Lire la suite

illustration hero ai
Blog

PHP corrige deux vulnérabilités RCE critiques exploitables sans authentification (CVE-2026-109618, CVE-2026-109619) : mettez à jour dès maintenant

Deux vulnérabilités critiques dans le cycle de traitement des requêtes de PHP peuvent permettre l’exécution de code à distance sans authentification. Passez à une version corrigée ou installez un correctif rétroporté par votre fournisseur pour les versions antérieures.

blog feature ai lilac
Blog

Transformez votre backlog de vulnérabilités en pull requests grâce à la remédiation agentique

Evo Remediation Agent est désormais disponible en aperçu ouvert et apporte la résolution automatisée des dépendances à Evo Agentic AppSec. Les équipes AppSec peuvent désormais lancer des campagnes de remédiation continues

AI Background min crop
Blog

L’IA fait surgir tous les risques que vous avez acceptés : sept enseignements du panel de sécurité de l’IA sans filtre

L’IA rend les attaques moins coûteuses et plus rapides, exposant des risques déjà présents dans les organisations. Quatre responsables de la sécurité expliquent pourquoi une défense à la vitesse des machines et une remédiation accélérée sont désormais indispensables.