Détectez et corrigez rapidement l’exploit Log4Shell avec Snyk
Ariel Ornstein
13 décembre 2021
0 minutes de lectureNote de la rédaction (28 décembre 2021 à 19 h 35 GMT) : L’équipe Log4j a publié une nouvelle mise à jour de sécurité après avoir découvert que la version 2.17.0 était vulnérable à l’exécution de code à distance, identifiée par CVE-2021-44832. Nous vous recommandons de passer à la dernière version, qui est actuellement la 2.17.1. Pour en savoir plus, cliquez ici.
Note de la rédaction (18 décembre 2021 à 18 h 55 GMT) : La situation autour de Log4j évolue rapidement et nous mettons à jour nos articles au fur et à mesure que de nouvelles informations sont disponibles. Nous vous recommandons de passer à la version 2.17.1 ou ultérieure. Cette version inclut des correctifs de sécurité pour deux vulnérabilités d’exécution de code à distance, corrigées dans les versions 2.15.0 (CVE-2021-44228) et 2.16.0 (CVE-2021-45046), ainsi que pour la dernière vulnérabilité DoS, corrigée dans la version 2.17.1 (CVE-2021-45105). Pour en savoir plus, cliquez ici.
Même si vous avez fait de votre mieux pour profiter d’un week-end tranquille, il y a de fortes chances que votre programme ait été interrompu au moins une fois par la nouvelle vulnérabilité zero-day Log4Shell, divulguée le vendredi 10 décembre 2021.
La nouvelle vulnérabilité a été découverte dans la bibliothèque Java open source log4j-core, un composant de l’un des frameworks de journalisation Java les plus populaires, Log4J. Identifiée sous le numéro CVE-2021-44228, elle a été classée critique, avec un score CVSS de 10 et un niveau d’exploitation avéré, car des preuves manifestes de son exploitation dans la nature ont été constatées.
Toutes les versions de 2.0-beta9 à 2.14.1 sont touchées par cette nouvelle vulnérabilité, corrigée dans la dernière version (2.16.0), publiée le jour même de sa divulgation.
Snyk a rapidement ajouté cette nouvelle vulnérabilité à la base de données des vulnérabilités Snyk Intel, à la disposition de ses clients, partenaires et de toute la communauté, afin qu’ils puissent analyser leurs applications et conteneurs JVM et appliquer un correctif d’urgence à cette vulnérabilité avec Snyk Open Source et Snyk Container.
Comment Snyk vous aide à détecter et à corriger Log4Shell
La première question que se posent la plupart des gens est la suivante : dans quelle mesure suis-je exposé à cette vulnérabilité ?
Snyk vous aide à répondre à cette question en vous indiquant si vous utilisez des versions vulnérables du package et où elles sont utilisées. Snyk vous aide également à les corriger dans l’ensemble de votre cycle de développement logiciel (SDLC).
Nous allons vous montrer comment utiliser Snyk pour savoir si vous êtes vulnérable à Log4Shell, que ce soit au moment du codage, grâce à nos intégrations SCM ou via les alertes de notre service de surveillance continue. Nous vous montrerons également comment utiliser notre service de reporting et notre API pour effectuer ces vérifications à grande échelle.
Commande Snyk CLI pour le code non géré et non déclaré : snyk log4shell
Snyk CLI propose une nouvelle commande conçue pour une tâche précise : détecter les traces de la bibliothèque Log4j touchée par la vulnérabilité Log4Shell. snyk log4shell analyse votre projet Java compilé et détecte les traces de la bibliothèque vulnérable, même si celle-ci n’est pas déclarée dans les fichiers manifestes. Découvrez snyk log4shell et apprenez à l’utiliser dans vos projets.
Détecter la vulnérabilité Log4Shell au moment du codage
Pour détecter la vulnérabilité le plus rapidement possible, les développeurs peuvent utiliser nos plugins IDE et notre CLI, gratuits pour commencer. Les résultats de l’analyse incluent toutes les vulnérabilités détectées par Snyk et, pour chacune d’entre elles, indiquent comment elle a été introduite dans l’application (en tant que dépendance directe ou indirecte) et fournissent des instructions claires pour la corriger.

Snyk CLI (veillez à utiliser la dernière version, v1.792.0) affiche un avertissement spécial pour mettre davantage en évidence la vulnérabilité si elle est détectée (pour installer ou mettre à jour Snyk CLI, consultez notre documentation) :

Analyse de log4j-core ajouté sous forme de fichier JAR
Si vous n’utilisez pas de gestionnaire de packages (par exemple Maven), Snyk peut également détecter la vulnérabilité dans les fichiers JAR. Pour cela, exécutez simplement la commande snyk test --scan-all-unmanaged afin d’analyser tous les fichiers JAR du dossier actuel (cette option fonctionne aussi avec la commande snyk monitor, pour surveiller le projet en continu).

Tester vos projets à la recherche de vulnérabilités Log4j grâce aux intégrations SCM de Snyk
En quelques clics, vous pouvez importer tous vos projets pris en charge par Snyk, les analyser à la recherche de vulnérabilités open source et obtenir immédiatement des informations détaillées : vulnérabilités détectées, mode d’introduction et méthode de correction :


Snyk fournit une foule d’informations sur les vulnérabilités détectées, essentielles pour comprendre comment les corriger et les hiérarchiser selon leur degré d’urgence.
Le score de priorité de Snyk est calculé à partir de différents signaux : existence d’un exploit dans la nature, disponibilité d’un correctif ou popularité de la vulnérabilité sur Twitter, par exemple. Ce score permet ensuite de parcourir rapidement la liste des vulnérabilités et de prioriser les correctifs en conséquence. Dans le cas de Log4Shell, le score de priorité est naturellement élevé, comme le montre l’info-bulle qui apparaît lorsque vous le survolez.
L’arborescence des dépendances du projet vous permet de comprendre précisément comment une vulnérabilité a été introduite dans une application, directement ou via une dépendance indirecte :

Surveillance continue pour prévenir de futurs cas de vulnérabilités Log4j
Si vous aviez déjà importé vos projets avant la divulgation de cette nouvelle vulnérabilité, votre projet a été automatiquement analysé dans le cadre de notre cycle quotidien de tests (sauf si la configuration par défaut a été modifiée). Si vous avez activé les notifications, vous devriez déjà avoir reçu une alerte vous indiquant si la vulnérabilité a été détectée dans l’un de vos projets.
PR/MR de correction automatique pour Log4Shell
Si Snyk surveillait déjà votre dépôt avant la divulgation de cette nouvelle vulnérabilité, Snyk a automatiquement créé une pull request/merge request de correction pour mettre à niveau log4j-core vers une version non vulnérable.

S’il s’agit d’un nouvel import ou si vous n’avez pas activé les PR de correction automatiques, vous pouvez créer la PR de correction manuellement depuis la page du projet.

Détecter et corriger Log4Shell dans tous les services de votre entreprise
Si vous êtes client et avez accès à notre API et à notre service de reporting, vous pouvez les utiliser pour déterminer où la dépendance log4j-core est utilisée dans l’ensemble de vos projets open source surveillés.
Utiliser les rapports Snyk pour trouver les projets qui utilisent log4j-core
Vous pouvez rechercher les usages de log4j-core dans la nomenclature logicielle (disponible dans l’onglet des dépendances des rapports au niveau de votre groupe et de votre organisation). Ouvrez le filtre Dépendances, commencez à saisir le nom de la dépendance (log4j-core), puis sélectionnez-la pour limiter les résultats à ce package. Si aucun résultat ne s’affiche, cela signifie que cette dépendance n’est présente dans aucun des projets que vous surveillez avec Snyk.

Si la dépendance apparaît dans les résultats, vous pourrez voir précisément où elle est utilisée. Cliquez sur le lien Projets pour afficher la liste des projets qui utilisent log4j-core comme dépendance. Cliquez ensuite sur un projet pour consulter les instructions de correction. Si une mise à niveau est possible, vous pourrez alors ouvrir une pull request/merge request de correction.

Utiliser l’API Snyk pour trouver les projets qui utilisent log4j-core
Vous pouvez également utiliser notre API pour trouver où la dépendance log4j-core est utilisée. Notre endpoint Dépendances par organisation vous permet de répertorier toutes les dépendances utilisées et d’obtenir des résultats indiquant où elles le sont. Vous pouvez affiner les résultats à l’aide de plusieurs filtres, notamment le langage (Java dans ce cas), la gravité et bien d’autres. Si votre groupe comporte plusieurs organisations et que vous souhaitez les parcourir toutes, utilisez notre endpoint Répertorier toutes les organisations d’un groupe.

La réponse inclut la liste de tous les projets contenant le package concerné. Vous pouvez ensuite consulter les projets dans l’interface utilisateur et corriger les vulnérabilités, ou obtenir des instructions de correction à l’aide d’autres API.
Laissez Snyk vous aider !
Commencer avec Snyk est gratuit, rapide et facile. Rejoignez-nous dès aujourd’hui : nous vous aiderons à trouver où vous utilisez le package vulnérable log4j-core (et bien plus encore), puis à le corriger facilement pour que vous puissiez profiter du reste de votre week-end !
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.
