Maison  >  Article  >  Java  >  Guide de réparation des vulnérabilités Log4j : Comprendre parfaitement et résoudre rapidement les vulnérabilités log4j

Guide de réparation des vulnérabilités Log4j : Comprendre parfaitement et résoudre rapidement les vulnérabilités log4j

WBOY
WBOYoriginal
2024-02-19 08:20:07717parcourir

Guide de réparation des vulnérabilités Log4j : Comprendre parfaitement et résoudre rapidement les vulnérabilités log4j

Tutoriel de réparation des vulnérabilités log4j : compréhension complète et résolution rapide des vulnérabilités log4j, des exemples de code spécifiques sont nécessaires

Introduction :
Récemment, des vulnérabilités graves dans Apache log4j ont attiré une large attention et de nombreuses discussions. Cette vulnérabilité permet à un attaquant d'exécuter à distance du code arbitraire via un fichier de configuration log4j construit de manière malveillante, compromettant ainsi la sécurité du serveur. Cet article présentera de manière exhaustive le contexte, les causes et les méthodes de réparation des vulnérabilités log4j, et fournira des exemples de code spécifiques pour aider les développeurs à corriger la vulnérabilité en temps opportun.

1. Contexte de la vulnérabilité
Apache log4j est une bibliothèque de journalisation largement utilisée en Java. Il existe une vulnérabilité grave (CVE-2021-44228) entre les versions 1.2 à 2.14.x de log4j, connue sous le nom de vulnérabilité log4shell ou log4j. La gravité de cette vulnérabilité réside dans le fait qu'un attaquant peut injecter des commandes arbitraires sur le serveur distant dans les enregistrements de journalisation de l'application en construisant un fichier de configuration log4j malveillant, et finalement conduire à l'exécution de commandes à distance.

2. Cause de la vulnérabilité
La cause de cette vulnérabilité réside dans une fonctionnalité de log4j, qui prend en charge l'utilisation des attributs JNDI (Java Naming and Directory Interface) dans les fichiers de configuration pour le chargement dynamique des configurations de journaux. L'intention initiale de cette fonctionnalité est de faciliter la commutation dynamique des configurations de journaux sans redémarrer l'application. Cependant, un attaquant peut créer un fichier de configuration log4j malveillant et utiliser les attributs JNDI pour charger des commandes malveillantes à distance, réalisant ainsi l'exécution à distance de code arbitraire.

3. Méthode de réparation
Afin de corriger la vulnérabilité log4j, nous devons prendre les mesures suivantes :

1 Mettre à niveau la version log4j : Tout d'abord, nous devons mettre à niveau la version log4j que nous utilisons vers la version 2.16.0 ou supérieure. . Apache a corrigé la vulnérabilité et publié un correctif de sécurité.

2. Désactiver les attributs JNDI : Deuxièmement, nous devons désactiver l'utilisation des attributs JNDI dans le fichier de configuration log4j. Cela peut être réalisé en ajoutant l'extrait de code suivant au fichier de configuration :

log4j2.formatMsgNoLookups=true

Cela désactivera toutes les recherches d'attributs JNDI et empêchera les attaquants d'utiliser cette fonctionnalité pour l'exécution de commandes à distance.

3. Filtrer les journaux d'entrée : afin d'augmenter la sécurité, nous devons filtrer les journaux d'entrée pour garantir qu'aucun code malveillant ne peut être inséré. Ceci peut être réalisé en utilisant un filtrage de caractères anormaux ou un filtrage d'expressions régulières.

4. Correctifs de mise à jour en temps opportun : à mesure que des correctifs de vulnérabilité sont introduits, Apache continuera à mettre à jour et à publier de nouveaux correctifs de sécurité. Par conséquent, nous devons prêter une attention particulière aux canaux de publication officiels d'Apache et mettre à jour les correctifs en temps opportun.

Exemple de code spécifique :
Ce qui suit est un exemple de code Java pour corriger la vulnérabilité log4j :

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class ExempleClass {
private static final Logger logger = LogManager.getLogger(ExampleClass.class);

public static void main(String[] args) {

logger.info("This is a log message");
// 其他业务逻辑

}
}

L'exemple de code ci-dessus est basé sur la dernière version de log4j 2.16.0. Les principes de désactivation des attributs JNDI et de filtrage des journaux d'entrée sont suivis.

Conclusion : 
La vulnérabilité Apache log4j constitue un risque de sécurité sérieux, et un attaquant peut exploiter cette vulnérabilité pour effectuer l'exécution de commandes à distance sur le serveur. Afin de protéger la sécurité de l'application, nous devons rapidement mettre à niveau la version log4j, désactiver les attributs JNDI, filtrer les journaux d'entrée et mettre à jour les correctifs de sécurité en temps opportun. Nous espérons que l'introduction et l'exemple de code de cet article aideront les développeurs à corriger les vulnérabilités de log4j.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn