
Analyse les fichiers jar, war et ear pour détecter la présence de JndiLookup.class afin d'identifier les applications vulnérables à CVE-2021-44228 (Log4Shell).
Script et dépôt d'origine : https://github.com/CERTCC/CVE-2021-44228_scanner
Modifié par : Alex Pena
Les applications vulnérables au problème log4j CVE-2021-44228 peuvent être détectables en analysant les fichiers jar, war et ear pour rechercher la présence de JndiLookup.class.
Tout fichier découvert mérite une enquête pour déterminer si l'application qui l'utilise est vulnérable. Pour tout JndiLookup.class présent, log4j inclut généralement la version dans le nom du fichier jar. Par exemple, une correspondance sur log4j-core-2.14.1.jar indiquerait une application vulnérable. Alternativement, log4j-core-2.16.jar peut également produire une correspondance car le code JndiLookup est toujours présent dans la version 2.16 de log4j, mais il est désactivé par défaut. Voir VU#930724 pour plus de détails.
Paramètres
-Force Allow scanning of system and hidden files (The Force parameter doesn't override security restrictions)
-Verbose Extra scanning output and messages
Analyser le répertoire courant
.\checkjndi.ps1
Analyser le répertoire test_folder, avec sortie supplémentaire et analyse des fichiers système/cachés
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
Par exemple, voici une exécution de la version PowerShell du scanner :

Les emplacements à analyser peuvent être redirigés (piped) vers le script pour contrôler ce qui est vérifié. Par exemple, pour analyser une liste de chemins contenue dans un fichier paths.txt :
get-content .\paths.txt | .\checkjndi.ps1
Examinons la première correspondance de notre analyse Windows :
C:\Users\unst0\Desktop\test_folder\apache-log4j-2.17.1-bin.zip contains apache-log4j-2.17.1-bin/log4j-core-2.17.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
Ce fichier jar contient une version 2.17 de log4j, qui n'est pas vulnérable à CVE-2021-44228. Ce résultat est rapporté à titre informatif et montre qu'un fournisseur a corrigé son produit.
Examinons la deuxième correspondance :
WARNING: C:\Users\unst0\Desktop\test_folder\ghidra_10.0.4_PUBLIC_20210928.zip contains ghidra_10.0.4_PUBLIC/Ghidra/Framework/Generic/lib/log4j-core-2.12.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Ici, nous voyons que Ghidra utilise log4j version 2.12.1, et par conséquent nous devrions supposer qu'il est vulnérable. Et en effet, les versions de Ghidra antérieures à 10.1 sont vulnérables à CVE-2021-44228.
Examinons la troisième correspondance :
WARNING: C:\Users\unst0\Desktop\test_folder\server.jar contains META-INF/libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Ici, nous voyons que le fichier server.jar de Minecraft utilise log4j version 2.14.1, et par conséquent nous devrions supposer qu'il est vulnérable. Et en effet, les versions du serveur Minecraft: Java Edition antérieures à 1.18.1 sont vulnérables à CVE-2021-44228.
Vous devriez enquêter sur toute correspondance signalée par l'un ou l'autre de ces scripts, et confirmer que la version de log4j est bien la version corrigée 2.16, ou contacter votre fournisseur de logiciel pour obtenir une version corrigée du logiciel. Alternativement, VU#930724 contient des informations sur la façon dont JndiLookup.class peut être supprimé des fichiers jar vulnérables.
La version PowerShell du scanner dispose de rapports d'erreurs supplémentaires lorsque des fichiers ou des répertoires ne peuvent pas être examinés. En particulier, toute erreur Unable to scan signalant UnauthorizedAccessException indique un problème de permission pour accéder à un répertoire et/ou un fichier. Toute erreur Unable to scan signalant InvalidDataException est généralement due à une archive corrompue.