Automatiser la correction des vulnérabilités dans les dépendances Python avec Snyk
26 février 2020
0 minutes de lectureNous sommes ravis d’annoncer une prise en charge améliorée de Python dans Snyk Open Source, qui permet aux développeurs de corriger les vulnérabilités des dépendances grâce à des pull requests de correction automatisées !
Le Python Packaging Index (PyPI) a enregistré plus de 14 milliards de téléchargements en 2018, un chiffre impressionnant à tous points de vue (en raison d’une erreur survenue en milieu d’année dans le service de statistiques de PyPI, le nombre réel est probablement bien supérieur). Ce chiffre reflète non seulement la large adoption de Python comme langage de programmation (aujourd’hui le deuxième langage selon GitHub), mais aussi les difficultés liées à l’utilisation des logiciels open source : un grand nombre de ces packages intègrent des dépendances vulnérables, directes et indirectes, dans les projets. Snyk a présenté plusieurs exemples au cours de l’année passée, notamment un article sur les packages malveillants.
Grâce à cette amélioration, Snyk Open Source aide les développeurs Python à concevoir des applications plus sécurisées : en plus de détecter les dépendances vulnérables, la solution propose des étapes de correction automatisées, directement dans leurs workflows de développement existants. Pour cela, Snyk crée un arbre de dépendances à partir du fichier requirements.txt inclus dans un projet pip. Ces dépendances sont ensuite comparées à la base de données des vulnérabilités de Snyk, et tout nouveau problème pouvant être corrigé déclenche automatiquement une pull request de correction.
Importer vos projets Python
Snyk propose plusieurs intégrations pour les dépôts de code basés sur Git, notamment GitHub, GitHub Enterprise, GitLab, Bitbucket Server et Bitbucket Cloud. Elles vous permettent de tester, surveiller et corriger facilement les vulnérabilités de sécurité et les problèmes de licence dans vos projets Python, directement dans vos workflows de gestion du code et de développement.
Voyons comment cela fonctionne avec un exemple d’application Python hébergée sur GitHub.
Dans cet exemple, nous nous sommes déjà connectés à Snyk avec nos identifiants GitHub. Snyk a donc configuré automatiquement l’intégration et affiche maintenant la liste de tous les dépôts disponibles.

Dans l’écran Import, sélectionnez le projet Python que vous souhaitez faire analyser par Snyk, puis cliquez sur Add selected repositories. Snyk analyse tous les dépôts sélectionnés pour y rechercher leurs fichiers manifestes et importe un instantané de chacun d’eux dans un fichier distinct.
La page Projects s’affiche. Une fois l’importation du projet Python terminée, un message de réussite vous invite à actualiser la page. Après l’actualisation, vous verrez votre projet Python, reconnaissable à son logo, dans la liste des projets intégrés.

Comme le montrent les chiffres de cet exemple, Snyk a détecté plusieurs vulnérabilités dans le projet importé. Pour les examiner de plus près, sélectionnez l’application Python dans la liste Projects pour la développer, puis cliquez sur le lien requirements.txt affiché.
Vous accédez alors au rapport d’analyse complet de votre projet.

En haut de la page, vous trouverez diverses métadonnées sur le projet, notamment le nombre de vulnérabilités détectées et le nombre de chemins par lesquels elles sont introduites.
Des conseils de correction vous sont également proposés, avec des étapes recommandées pour résoudre certains des problèmes détectés (une toute nouvelle fonctionnalité, dont nous reparlerons bientôt !). Dans cet exemple, la mise à niveau de la dépendance flask de la version 0.12.3 vers la version 0.12.3 corrige deux problèmes de gravité élevée.

Pull requests de correction
Toutes les vulnérabilités détectées dans vos dépendances sont affichées plus bas, avec des informations contextuelles pour vous aider à hiérarchiser les problèmes et à commencer les corrections si nécessaire.

Les différents filtres à gauche de la page vous aident à parcourir les problèmes détectés. Vous pouvez, par exemple, filtrer par niveau de gravité pour corriger d’abord les vulnérabilités de gravité élevée, ou par maturité de l’exploit, qui indique le degré de dangerosité réel d’une vulnérabilité (en savoir plus sur la maturité de l’exploit).
Pour les vulnérabilités pour lesquelles Snyk a trouvé une correction, vous pouvez créer une pull request depuis Snyk en cliquant simplement sur Fix this vulnerability.

La prise en charge améliorée de Python permet également de déclencher automatiquement des pull requests pour les nouvelles vulnérabilités, selon votre configuration (plus de détails ci-dessous). Les pull requests ouvertes par Snyk fournissent des informations contextuelles pour vous aider à comprendre pourquoi elles ont été déclenchées, quelles modifications la correction apportera à vos dépendances, ainsi que des détails sur la vulnérabilité qu’elle vise à corriger.

Pull requests de test
Toute nouvelle pull request modifiant le fichier requirements.txt est automatiquement testée afin de vérifier qu’elle n’introduit pas de nouvelles vulnérabilités de sécurité dans votre projet. Si des vulnérabilités sont détectées, la pull request échoue au test de sécurité, et vous pouvez décider de poursuivre ou non sa fusion.

Vous pouvez configurer toutes ces automatisations. Les pull requests de test et de correction peuvent être désactivées. Pour les pull requests de test, vous pouvez également définir les conditions d’échec.

La sécurité pensée pour les développeurs avec Snyk
Surveiller les dépendances vulnérables figure parmi les principales bonnes pratiques de sécurité Python. Plus facile à dire qu’à faire, n’est-ce pas ? La facilité avec laquelle du code tiers peut être intégré aux projets et l’essor général de l’open source compliquent toujours plus la visibilité et le contrôle de ce code.
Snyk a été conçu pour aider les développeurs à relever ce défi en leur proposant un outil facile à utiliser qui s’intègre naturellement à leurs workflows existants et automatise la détection et la correction des vulnérabilités dans les dépendances open source.
La correction automatisée pour Python est disponible dans toutes les offres Snyk Open Source, y compris notre offre gratuite, qui comprend un nombre illimité d’analyses de projets open source. Pour l’essayer, créez un compte (via le lien ci-dessous) et lancez une analyse. En attendant, ces ressources vous aideront à sécuriser vos projets Python :
Bon codage !
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.