Ouvrir la voie à la sécurité des applications cloud native
21 décembre 2020
0 minutes de lecture2020 a été une année incroyablement difficile pour nous tous. À l’aube d’une nouvelle année, qui n’est plus qu’à quelques jours, c’est l’occasion idéale de prendre quelques instants pour saluer le travail accompli par nos équipes d’ingénierie et produit. Un travail acharné, réalisé dans des circonstances difficiles et éprouvantes, qui a contribué à faire de Snyk la solution de sécurité des applications cloud native de référence, conçue pour les développeurs.
Qu’est-ce que la sécurité des applications cloud native ?
Le développement logiciel tel que nous le connaissions il y a encore quelques années a changé.
Les processus de développement et de déploiement des applications ont évolué pour permettre des déploiements plus rapides et plus fréquents. Le code qui compose les applications a lui aussi changé : il s’appuie de plus en plus sur un assemblage de code open source, de code propriétaire, de conteneurs et d’infrastructure as code.
Du point de vue de la sécurité des applications, ces changements posent un défi particulier qui exige une solution adaptée. Lors de SnykCon cette année, nous avons annoncé notre plateforme de sécurité des applications cloud native, unique dans le secteur : la seule solution conçue pour les développeurs, qui permet de créer rapidement et en toute sécurité l’ensemble des applications cloud native dans un environnement DevOps.
Prêts à faire le bilan ?
1. Intégrer la sécurité tôt et à chaque étape du SDLC
La première étape de la gestion des vulnérabilités consiste à détecter les problèmes. En 2020, nous avons consacré beaucoup d’efforts à faciliter l’intégration de Snyk à chaque étape du cycle de vie des applications. Nous avons notamment créé de nouveaux plug-ins pour les IDE, amélioré nos intégrations à GitHub et Bitbucket, et ajouté de nouvelles intégrations aux registres privés et de conteneurs.
IDE
Intégrer les tests de sécurité à l’environnement de développement local des développeurs est essentiel pour décaler la sécurité vers la gauche. Cela leur permet de détecter et de corriger les problèmes le plus tôt possible, avant que leur résolution ne devienne trop coûteuse. En 2020, Snyk a étendu la prise en charge déjà proposée pour Eclipse et IntelliJ à TOUS les principaux IDE JetBrains : WebStorm, PyCharm, PhpStorm, GoLand et bien d’autres.

Snyk CLI
Avec l’ajout de Snyk Container et de Snyk IaC, Snyk CLI peut faire plus que jamais. Pour prendre en charge les fonctionnalités existantes et à venir, nous avons dû apporter quelques modifications à son fonctionnement. Résultat : des processus améliorés et de nouvelles fonctionnalités.
Test Snyk Container
La commande snyk test --docker a été remplacée par la nouvelle commande snyk container test, ainsi que par sa sous-commande associée monitor. Au-delà de la syntaxe de la CLI, la nouvelle commande container apporte plusieurs améliorations internes :
Comme le laisse entendre ce changement de nom, l’analyse ne se limite plus aux conteneurs Docker. Snyk fonctionne parfaitement avec tous les conteneurs OCI, même si Docker Engine n’est pas installé. Si vous utilisez podman ou créez des applications avec des outils tels que jib pour vos applications Java, Snyk peut les analyser.
Si vous avez extrait une archive des fichiers d’une image de conteneur et souhaitez analyser cette archive plutôt que l’image elle-même, Snyk Container le permet désormais.
Et si vous utilisez des images distroless pour réduire les vulnérabilités de vos images de base, la nouvelle Snyk CLI les analyse également correctement.
De plus, les sous-commandes
containeretiacpermettent de simplifier et d’améliorer le système d’aide intégré. Vous pouvez ainsi obtenir une aide contextuelle au moment où vous en avez besoin.
Test Snyk IaC
Snyk Infrastructure as Code (IaC) est notre troisième lancement majeur de produit cette année — nous y reviendrons plus bas. Au départ, Snyk IaC permettait uniquement d’analyser les dépôts Git. Mais de plus en plus de clients souhaitaient automatiser leurs tests dans leurs pipelines CI ; nous avons donc ajouté la prise en charge de ces tests dans Snyk CLI. Vous pouvez analyser des fichiers Kubernetes et Terraform à l’aide de la commande snyk iac test.
Workflows basés sur Git
Cette année, nous nous sommes également attachés à améliorer nos intégrations existantes avec différents systèmes de gestion de code source basés sur Git, afin de les rendre plus conviviales pour les développeurs et de leur offrir une expérience plus native.
GitHub
Comme vous pouvez vous y attendre, notre intégration à GitHub est le point d’intégration Snyk le plus populaire. Nous déployons donc régulièrement de nouvelles fonctionnalités pour rendre l’expérience aussi fluide que possible.
Nous avons d’abord ajouté la possibilité de configurer le compte GitHub au nom duquel Snyk ouvre les pull requests de correction et de mise à niveau, ainsi que d’attribuer ces PR à un contributeur spécifique du dépôt. Nous avons également permis aux contributeurs de demander à ignorer un test Snyk en échec.

Intégration de sécurité GitHub
En octobre, GitHub a lancé ses fonctionnalités d’intégration de la sécurité tierce, ce qui nous permet d’afficher directement les résultats de Snyk Container et de Snyk IaC dans l’onglet Security de GitHub pour vos dépôts. Nous prenons en charge GitHub Actions depuis quelque temps déjà. Cette nouvelle fonctionnalité permet aux développeurs qui utilisent déjà largement GitHub de consulter leurs rapports de sécurité dans l’interface GitHub.

Analyse des Dockerfiles depuis un outil SCM
Les conteneurs présentent de nombreux avantages, mais les images sont stockées séparément des Dockerfiles qui ont servi à les créer. Du point de vue de la sécurité, cela signifie que vous ne savez pas si votre conteneur est « sûr » avant de l’avoir créé puis analysé.
C’est désormais possible. Snyk s’intègre déjà à vos outils SCM préférés et, puisque votre Dockerfile est probablement stocké avec votre code, nous avons ajouté la possibilité de détecter et d’analyser le Dockerfile directement depuis un dépôt. Snyk vérifie ensuite l’image de base choisie et signale les vulnérabilités qu’elle contient. Cette fonctionnalité facilite la prise en main de l’analyse des conteneurs et fournit des résultats immédiats, car l’image de base est souvent la principale source de vulnérabilités au début.
Autre avantage : vous pouvez désormais associer les tests des images de conteneurs détectées dans les Dockerfiles que vous exécutez. Cette association entre les deux objets était déjà possible dans Snyk Container, mais le processus est désormais plus simple : vous n’avez plus besoin de parcourir vos dépôts Git pour trouver votre Dockerfile et vous pouvez facilement identifier les images associées à chaque Dockerfile.
Bitbucket
Les utilisateurs de Bitbucket Cloud ont accueilli avec plaisir la prise en charge de Code Insights par Snyk, qui leur permet de consulter leurs problèmes directement dans l’interface utilisateur de Bitbucket. Nous avons également amélioré Snyk Pipe, qui permet d’analyser les vulnérabilités dans les pipelines CI/CD de Bitbucket, afin qu’il prenne lui aussi en charge Code Insights.
Azure Repos
Nous avons également ajouté la prise en charge d’Azure Repos Server, complétant ainsi notre couverture de l’écosystème Microsoft Azure : Azure Repos, dans le cloud et désormais en local, Azure Pipelines, Azure Container Registry et Azure Functions.
2. Étendre la prise en charge des écosystèmes
En 2020, nous avons également élargi la couverture des langages de programmation déjà pris en charge et étendu les tests de sécurité de Snyk à un plus grand nombre de gestionnaires de paquets et d’écosystèmes.
Java
Nous avons amélioré l’analyse de sécurité des projets Java Gradle importés depuis des dépôts Git (GitHub/GitLab/Bitbucket/Azure Repos) en ajoutant la prise en charge des fichiers gradle.lockfile. L’utilisation de fichiers de verrouillage présente plusieurs avantages ; dans le cadre des tests de sécurité de Snyk, elle garantit des résultats plus précis et plus complets. Pour en savoir plus, cliquez ici.
Python
À mesure que cet écosystème gagne en popularité, le nombre de projets Python analysés par les utilisateurs de Snyk augmente régulièrement. Cette année, nous avons donc apporté plusieurs améliorations pour aider les organisations qui utilisent Python à mieux sécuriser leur base de code. Nous avons ajouté la prise en charge de Poetry, permettant aux utilisateurs de ce gestionnaire de paquets et de projets Python en plein essor de tester et de surveiller leurs projets via Snyk CLI, ainsi que la prise en charge de Pipenv dans nos intégrations SCM. Pour faciliter la correction des vulnérabilités Python, nous avons ajouté des workflows de correction automatisée pour Python.

Analyser un projet Poetry avec Snyk CLI
Golang
Golang connaît une croissance exponentielle depuis quelques années et figure parmi les langages préférés des utilisateurs de Snyk. En 2020, nous avons investi dans l’amélioration des performances et de la couverture pour ce langage. Le passage aux depGraphs a considérablement amélioré l’analyse des projets Go et permet désormais d’analyser très rapidement de grands projets comme Kubernetes ! La prise en charge des projets Go Modules, déjà disponible pour les analyses via la CLI, a été étendue à nos intégrations SCM basées sur Git. Nous avons également travaillé à la détection des vulnérabilités dans les conteneurs Go.

Kubernetes et Terraform
En 2020, Snyk a lancé son troisième produit officiel : Snyk Infrastructure as Code (Snyk IaC). Vous pouvez ainsi analyser vos configurations de déploiement dès leur rédaction dans le code et vous assurer que les ressources créées sont correctement configurées au moment du déploiement. De plus en plus d’applications et d’infrastructures cloud étant définies dans des manifestes déclaratifs, nous constatons que davantage de développeurs doivent veiller à ce que leurs applications et services soient sécurisés. Et comme chaque commit peut apporter des modifications, la seule façon de passer à l’échelle consiste à intégrer la sécurité au pipeline pour détecter et corriger les problèmes avant le déploiement.

3. Hiérarchiser votre backlog de vulnérabilités
Les backlogs de vulnérabilités peuvent rapidement compter des milliers de problèmes. Il est impossible, et généralement inutile, de les traiter tous. Mais par où commencer ?
C’est pourquoi nous avons mis l’accent cette année sur l’aide aux équipes de développement et de sécurité, afin qu’elles puissent concentrer leurs efforts là où ils auront le plus d’impact sur la sécurité. Dans cette optique, nous avons lancé de nombreuses fonctionnalités de priorisation conçues pour les développeurs, qui fournissent à ces équipes les outils de sécurité et le contexte nécessaires pour examiner leurs problèmes et hiérarchiser efficacement les corrections.
Score de priorité
Le tout nouveau Priority Score de Snyk est un système de notation avancé intégré, reposant sur un algorithme propriétaire qui prend en compte un large éventail de facteurs : score CVSS, disponibilité d’une correction, exploits connus, ancienneté de la vulnérabilité et possibilité de l’atteindre. Le score obtenu s’affiche sur les fiches de problèmes dans l’interface Snyk et permet de filtrer et de trier rapidement le backlog.

Vulnérabilités atteignables
Reachable Vulnerabilities est un outil d’analyse avancé qui fournit un contexte sur les vulnérabilités au niveau de l’application et vous aide à déterminer si une fonction vulnérable peut être atteinte au cours de l’exécution de l’application. Les utilisateurs de Snyk s’appuient déjà sur Reachable Vulnerabilities pour prendre leurs décisions de correction concernant leurs projets Java Maven et Gradle. Nous étendrons la prise en charge à d’autres écosystèmes l’année prochaine.

Maturité des exploits et importance relative des vulnérabilités Linux
La fonctionnalité de score de priorité est également compatible avec Snyk Container et tient compte de détails supplémentaires propres aux conteneurs. Par exemple, le score augmente si une vulnérabilité dispose d’un exploit éprouvé et que celui-ci est activement exploité dans un cluster Kubernetes. Il prend aussi en compte les configurations des pods Kubernetes qui augmentent les risques, comme l’exécution du conteneur en tant que root.
De plus, les vulnérabilités dans les paquets Linux varient parfois selon la distribution Linux utilisée dans vos images de conteneur. Une vulnérabilité à haut risque dans un paquet Linux peut être considérée comme peu grave dans une distribution particulière comme Debian ou Ubuntu. Snyk prend en compte les deux évaluations, mais considère que les responsables de la distribution font autorité. Nous attribuons donc à la vulnérabilité la note de la distribution (faible, dans cet exemple).

Snyk Container : des informations de sécurité propres à chaque distribution
4. Corriger davantage de problèmes, plus facilement et en toute confiance
Les outils capables d’analyser votre code à la recherche de problèmes ne manquent pas. Vous aider à agir et à les corriger est une tout autre histoire. La correction automatisée et concrète est au cœur de la plateforme Snyk, et a naturellement été l’un des axes prioritaires des équipes produit et développement de Snyk cette année.
Maintenir vos dépendances à jour
En mars, nous avons annoncé un partenariat entre Snyk et Neighbourhoodie Software, les créateurs de Greenkeeper. Ce partenariat a permis le lancement de Snyk’s Automatic Dependency Upgrades, qui déclenche automatiquement des pull requests exploitables et riches en contexte lorsque de nouvelles versions de dépendances sont détectées, afin d’aider les développeurs à maintenir leurs projets en meilleur état et plus sécurisés.
Fusionner les correctifs en toute confiance
Pour aider les développeurs à fusionner les PR de correction de Snyk en toute confiance, nous avons lancé Merge Advice : un nouveau badge ajouté aux pull requests qui indique si le correctif risque ou non d’entraîner des changements incompatibles. Les développeurs disposent ainsi des informations nécessaires pour décider de fusionner ou non.

Ignorer le test des PR de Snyk
Snyk effectue automatiquement des tests de sécurité et de licence pour toute nouvelle pull request ouverte par vous ou un autre contributeur dans un dépôt GitHub. Pour limiter les perturbations du workflow de développement, nous avons permis aux développeurs de consulter les détails expliquant l’échec de leur pull request, puis de demander à l’administrateur d’ignorer le test et de « forcer la réussite » de la pull request.
Conseils pour l’infrastructure as code
Snyk IaC propose une interface unique qui présente les problèmes IaC et guide les utilisateurs dans leur résolution. Nos échanges avec les clients nous ont appris que de nombreuses organisations en sont encore aux premières étapes de la formalisation de leurs pratiques IaC. Les niveaux de compétence sont variés et, surtout lorsqu’il s’agit de problèmes de sécurité, de nombreux utilisateurs ont besoin de conseils supplémentaires. Par ailleurs, les problèmes IaC ne sont pas tous des vulnérabilités au sens classique du terme. Même si vous aviez le temps de les étudier, vous ne pourriez pas toujours consulter une ressource comme la NVD pour rechercher le problème et ses références. Nous avons donc intégré des conseils supplémentaires à Snyk IaC afin de fournir du contexte et d’évaluer l’impact des problèmes détectés.

5. Gérer la sécurité et la conformité à grande échelle
Pour gérer la sécurité applicative de milliers d’applications et de projets, les organisations ont besoin de moyens d’optimiser leur efficacité et leur productivité. C’est pourquoi, en 2020, Snyk a investi dans la gouvernance à grande échelle et a lancé plusieurs fonctionnalités clés dans Snyk Open Source, Snyk Container et Snyk IaC.
Politiques de sécurité et de licence
Pour aider les organisations à mieux gérer la sécurité et la conformité de leurs différents projets et équipes, Snyk a lancé un nouveau moteur de politiques qui permet de définir et de personnaliser des politiques de licence et de sécurité, ainsi que de les appliquer.
Grâce aux politiques de licence, les organisations peuvent définir les limites légales acceptables et les faire respecter dans toute l’entreprise. Elles permettent également aux responsables d’ajouter des consignes juridiques concrètes que les développeurs pourront suivre lorsqu’ils rencontrent un problème lié à une licence spécifique.
Les politiques de sécurité vous permettent de définir des règles pour prioriser ou déprioriser automatiquement les vulnérabilités. Chaque politique comprend une ou plusieurs règles qui déterminent précisément la manière de traiter les vulnérabilités. Ces règles déclenchent des actions en fonction de certaines conditions. À l’heure actuelle, elles peuvent modifier la gravité des vulnérabilités selon leur type — en s’appuyant sur CWE, une norme courante de classification des vulnérabilités selon leurs caractéristiques communes — et la maturité de leur exploitation. Une politique peut par exemple inclure une règle qui augmente la gravité de toutes les vulnérabilités XSS (cross-site scripting) dont les exploits sont matures, et une autre qui réduit celle des vulnérabilités RCE (exécution de code à distance).

Gestion des projets
Lorsqu’on tente de gérer des milliers de projets différents, chacun comportant des milliers de problèmes de sécurité, il est facile de se sentir dépassé. Retrouver un projet peut même devenir compliqué, sans parler de déterminer s’il fait partie de ceux qui nécessitent une attention urgente.
Les attributs et les tags de projet de Snyk vous aident à organiser vos projets Snyk (Snyk Open Source, Snyk Container et Snyk IaC) de manière standardisée, en leur associant des métadonnées sur leur impact métier et leur pile technologique. Vous pouvez ainsi rechercher et trouver plus facilement des projets, et concentrer vos efforts sur ceux qui comptent, selon leur environnement de déploiement, leur étape du cycle de vie, leur score de priorité ou toute autre caractéristique importante pour votre organisation.
Gestion du backlog
La gestion du backlog, annoncée lors de SnykCon il y a seulement quelques mois, ouvre des pull requests de correction ciblées pour traiter les vulnérabilités de votre backlog selon leur score de priorité. Vous pouvez ainsi résorber votre backlog de vulnérabilités à un rythme plus facile à gérer.
Gestion de la conformité des licences
Les dépendances open source que vous intégrez à vos projets présentent à la fois un risque de sécurité ET un risque juridique. Cette année, nous avons annoncé les fonctionnalités de gestion de la conformité des licences de Snyk, conçues avant tout pour les développeurs, afin de vous aider à gérer plus facilement les licences open source que vous utilisez et à vous y conformer.
Snyk couvre largement et en profondeur la conformité des licences : la solution s’intègre à toutes les étapes du SDLC (CLI, IDE, SCM, CI/CD) et détecte les licences des dépendances directes comme transitives. Les langages de programmation les plus populaires sont pris en charge, notamment Java, JavaScript, Scala, Go, Python, Ruby, PHP, Swift, Objective-C et .NET, sans ordre de préférence.
Les problèmes de licence signalés sont présentés avec tout le contexte nécessaire pour aider les développeurs à évaluer leur portée et à agir. Ils comprennent notamment des consignes juridiques détaillées qui précisent les étapes à suivre pour respecter la politique de l’entreprise. Différents tableaux de bord et rapports permettent aux responsables de consulter et de partager des listes détaillées des licences utilisées, notamment un rapport BoM répertoriant tous les composants open source, leurs licences et les informations de copyright.
Cap sur 2021 (attention, divulgâchage !)
L’année 2020 a été riche en nouveautés produit chez Snyk. Et vous n’avez encore rien vu de ce que nous vous réservons pour 2021 !
Les grands axes de Snyk — une expérience pensée pour les développeurs, des corrections automatisées et concrètes, et une sécurité approfondie — continueront de guider nos prochaines annonces. Nous prendrons en charge un écosystème très important et renforcerons certaines des fonctionnalités uniques qui font de Snyk la solution de référence en matière de sécurité des applications cloud native.
Nous vous souhaitons à toutes et à tous une excellente année, pleine de santé !