69 votes

Comment vérifier si Log4j est installé sur mon serveur?

J'ai lu au sujet des vulnérabilités de sécurité liées à Log4j.

Comment puis-je vérifier si Log4j est installé sur mon serveur? Mes serveurs spécifiques utilisent Ubuntu 18.04.6 LTS.

J'ai installé de nombreux packages tiers et certains d'entre eux peuvent le contenir.

Y a-t-il une commande à exécuter sur mon serveur pour vérifier si Log4j est installé?

8 votes

Notez que ceci est une bibliothèque Java, donc si vous n'exécutez aucune application Java (et par extension, si vous n'avez pas Java installé), vous êtes en sécurité.

15 votes

Pas vrai - les applications peuvent venir avec leur propre JRE, vous n'êtes pas obligé d'avoir installé Java sur votre système pour exécuter des applications Java.

0 votes

Tout d'abord ... vous devez être sur une version LTS actuelle d'Ubuntu. 18.x en 2021 (maintenant 2023) n'est tout simplement pas une bonne idée :)

49voto

rubo77 Points 2294

Essayez ce script pour obtenir un indice :

echo "vérification de la vulnérabilité de log4j..."
OUTPUT="$(locate log4j|grep -v log4js)"
if [ "$OUTPUT" ]; then
  echo "[ATTENTION] peut-être vulnérable, ces fichiers contiennent le nom :"
  echo "$OUTPUT"
fi
OUTPUT="$(dpkg -l|grep log4j|grep -v log4js)"
if [ "$OUTPUT" ]; then
  echo "[ATTENTION] peut-être vulnérable, paquets installés par dpkg :"
  echo "$OUTPUT"
fi
if [ "$(command -v java)" ]; then
  echo "Java est installé, notez que les applications Java incluent souvent leurs bibliothèques à l'intérieur de fichiers jar/war/ear, il pourrait donc encore y avoir log4j dans de telles applications."
fi
echo "Si vous ne voyez aucune sortie au-dessus de cette ligne, vous êtes en sécurité. Sinon, vérifiez les fichiers et paquets répertoriés."

Assurez-vous que votre base de données locate est à jour avec updatedb.

Ou mieux vérifiez et exécutez le script amélioré sur GitHub qui cherche également à l'intérieur des fichiers Java compressés. Exécutez d'un seul coup avec

wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q -O - | bash   

Je ne sais pas s'il pourrait y avoir des programmes Java compilés s'exécutant sur le serveur sans même que Java soit installé ?

Ou même des versions compilées où les fichiers sources ne sont même plus trouvés à l'intérieur des archives compressées ?


Il y a aussi beaucoup de développement sur GitHub, où vous trouverez des attaques et des contre-mesures.


Cela prend trop de temps pour moi. Je cherche quelqu'un à qui je peux transférer la propriété du dépôt sur GitHub

4 votes

Cela a les mêmes avertissements que la réponse fournie par Tero Kilkanen. Et juste parce que Java n'est pas sur le chemin ne garantit pas qu'il n'est pas installé.

0 votes

Cela fonctionne pour moi. log4j n'est pas installé sur mes serveurs. Bien qu'il soit possible que j'ai installé une application qui l'utilise, les chances sont faibles.

0 votes

À propos des programmes Java compilés : oui, il pourrait y en avoir avec GraalVM / Quarkus / Micronaut / Spring Native et d'autres. Je ne suis pas sûr si Log4J est compatible avec les constructions natives cependant.

27voto

Gerald Schneider Points 17588

Il n'y a pas de commande qui vous le dira sûrement. Certaines applications expédient les bibliothèques qu'elles utilisent directement sous forme de fichier jar, d'autres les incluront dans une archive.

Et même dans ce cas, vous ne savez pas quelle version est expédiée et comment elle est utilisée. La seule façon d'être sûr de réduire le risque CVE est de lire les annonces de sécurité et les notes de version de vos applications et de suivre leurs avis.

10voto

vairakkani Points 101

Essayez ces commandes :

  • dpkg -l | grep liblog4j

  • dpkg -l | grep log4

  • find / -name log4j-core-*.jar

  • locate log4j | grep -v log4js

0 votes

Est-ce que `log4js` dans la dernière ligne est une faute de frappe?

0 votes

Dois-je faire find / -name log4j-core-*.jar 2>/dev/null ou utiliser sudo/root ?

5 votes

@JanDorniak Je ne pense pas. Leur idée est de trouver toutes les mentions de log4j, mais d'exclure log4js.

6voto

yun Points 51

J'ai écrit ce script Python pour trouver les versions vulnérables de Log4j2 sur votre système : https://github.com/fox-it/log4j-finder

Il fonctionne en scannant le disque et à l'intérieur des fichiers d'archive Java de manière récursive et en recherchant des fichiers potentiellement dangereux.

0 votes

Je recommande personnellement ceci. Le code est facilement inspectable et fonctionne de manière récursive sur les archives.

0 votes

Pendant qu'il est sympa, ça tourne sans fin sur ma machine. Je ne sais pas si c'est normal.

0 votes

Avez-vous essayé de le faire fonctionner avec -v et/ou un arborescence de répertoires limitée ? Si vous avez un lecteur réseau attaché, cela pourrait causer des problèmes.

4voto

Paul Points 2607

log4jscanner

Publié par Google sous la licence Apache-2.0, log4jscanner est un scanner de vulnérabilité log4j pour les systèmes de fichiers et un package Go pour analyser les fichiers JAR.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X