Corriger les vulnérabilités de manière proactive pour préserver la sécurité Java et la qualité des projets avec Snyk
Lee Turner
16 novembre 2021
0 minutes de lectureEn tant que développeur, je passe beaucoup de temps sur mon compte GitHub. Je crée des applications, de petits utilitaires et des preuves de concept lorsque je découvre quelque chose. J’aime penser que, parce que je passe beaucoup de temps sur GitHub, mon compte est en bonne santé. Je veille à des points importants, comme l’activation de l’authentification à deux facteurs (2FA) avec une YubiKey sur mon compte, à ne pas valider de secrets ni de fichiers sensibles, et à vérifier régulièrement que je respecte les bonnes pratiques de sécurité GitHub pour les projets open source.
Petit contrôle ! Avez-vous activé l’authentification à deux facteurs dans votre dépôt de code source ? Pour renforcer votre rôle de champion de la sécurité, vous pouvez aussi suivre les revues de code sécurisées.
Cependant, comme pour la santé et la qualité de tout système, tout ne dépend pas uniquement de ce que nous faisons activement, mais aussi de facteurs qui ne sont pas toujours évidents. C’est particulièrement important pour les dépôts que nous ne maintenons plus. Même si leur code reste inchangé et n’est peut-être plus au centre de nos préoccupations, le monde continue d’évoluer. Des personnes que nous n’avons jamais rencontrées découvriront ces dépôts et pourront utiliser notre code pour apprendre ou comme base du code qu’elles écrivent aujourd’hui.
C’est pourquoi, en tant que développeurs, nous avons la responsabilité de veiller à ce que le code que nous écrivons soit aussi fiable que possible, non seulement au moment où nous l’écrivons, mais pendant toute la période où il reste disponible dans nos dépôts.
Comme je l’ai dit plus haut, le monde évolue autour de notre code. De nouvelles versions des dépendances que nous utilisons sont publiées, et des problèmes de sécurité sont découverts dans les anciennes versions des frameworks et bibliothèques dont nous dépendons. Même si passer systématiquement aux dernières versions peut entraîner son lot de difficultés, nous devons trouver un moyen de rendre ces changements visibles en continu, afin d’apporter à nos dépôts l’attention nécessaire pour qu’ils restent à jour et sécurisés.
Conseil : Si vous appréciez GitHub Actions et les fonctionnalités de sécurité intégrées pour les modifications du code de vos dépôts, consultez GitHub Security Code Scanning.
La gestion des vulnérabilités est un domaine à part entière, avec des processus, des normes et des outils qui contribuent à renforcer la posture de sécurité des organisations. Pour en savoir plus sur la façon d’y parvenir pour les anciens projets Java que vous maintenez et d’améliorer votre niveau de sécurité, nous vous recommandons de vous renseigner sur le processus de correction des vulnérabilités.
Détecter et corriger les vulnérabilités dans les anciens projets Java
C’est là que Snyk intervient. Snyk rend visibles et exploitables des problèmes qui, autrement, resteraient invisibles. En autorisant Snyk à surveiller vos dépôts (sur GitHub, GitLab, Bitbucket ou Azure), vous obtenez les informations nécessaires pour agir et sécuriser votre code. Voici comment :
Signaler les vulnérabilités détectées dans les frameworks et bibliothèques dont nous dépendons
Nous informer de la disponibilité de nouvelles versions des dépendances que nous utilisons
Connecter Snyk à votre compte peut être une expérience révélatrice. J’ai commencé avec le forfait gratuit de Snyk et l’ai laissé analyser quelques-uns de mes dépôts. J’ai immédiatement découvert plusieurs problèmes de gravité élevée et moyenne dans certaines de mes anciennes applications Spring Boot. Ces problèmes étaient uniquement dus au fait que les applications reposaient sur une ancienne version de Spring Boot et que je n’avais pas eu de raison de les mettre à jour.

Heureusement, il suffisait de mettre à jour la version de Spring Boot que j’utilisais, de tester à nouveau l’application et de pousser la modification.
Bien sûr, l’idéal serait de maintenir à jour les dépendances de nos applications en permanence. C’est là que Snyk nous aide à atteindre le deuxième objectif mentionné plus haut. Snyk nous informe non seulement de la disponibilité d’une nouvelle version d’une dépendance, mais peut aussi créer une pull request dans nos dépôts, prête à être examinée et testée :

Nous ne pouvons améliorer la santé et la sécurité de nos comptes GitHub que si nous avons une vue d’ensemble de tous les facteurs qui les affectent. Quand l’invisible devient visible, nous pouvons prendre des mesures correctives et les maintenir pendant toute la durée de vie de notre code. Snyk nous y aide en s’intégrant aux outils que nous utilisons au quotidien et en nous apportant les connaissances nécessaires pour décider des mesures à prendre. Le tout en automatisant les tâches qui peuvent l’être.
Autres ressources sur la sécurité Java
J’espère que cet article vous a aidé à maintenir vos anciens projets et à les sécuriser. Si vous développez en Java et souhaitez renforcer vos compétences en sécurité, voici quelques ressources qui pourraient vous être utiles :
10 bonnes pratiques pour créer un conteneur Java avec Docker
Brian Vermeer et Jim Manico, de l’OWASP, ont rédigé ces excellentes 10 bonnes pratiques de sécurité Java
Enfin, appliquez-vous de bonnes pratiques de programmation pour la désérialisation sécurisée ? Si vous n’en êtes pas certain, nous vous recommandons de consulter l’article de Vermeer : Sérialisation et désérialisation en Java : comprendre la vulnérabilité de désérialisation Java.
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.



