
Script y repositorio originales: https://github.com/CERTCC/CVE-2021-44228_scanner
Modificado por: Alex Pena
Las aplicaciones que son vulnerables al problema log4j CVE-2021-44228 pueden detectarse escaneando archivos jar, war y ear para buscar la presencia de JndiLookup.class.
Cualquier archivo descubierto merece una investigación para determinar si la aplicación que lo utiliza es vulnerable. Para cualquier JndiLookup.class presente, log4j normalmente incluye la versión en el nombre del archivo jar. Por ejemplo, una coincidencia en log4j-core-2.14.1.jar sería indicativa de una aplicación vulnerable. Alternativamente, log4j-core-2.16.jar también puede producir una coincidencia porque el código JndiLookup todavía está presente en la versión 2.16 de log4j, pero está deshabilitado por defecto. Consulte VU#930724 para más detalles.
Parámetros
-Force Permite escanear archivos del sistema y ocultos (El parámetro Force no anula las restricciones de seguridad)
-Verbose Salida y mensajes de escaneo adicionales
Escanear el directorio actual
.\checkjndi.ps1
Escanear el directorio test_folder, con salida adicional y escaneo de archivos del sistema/ocultos
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
Por ejemplo, aquí se muestra una invocación de la versión de PowerShell del escáner:

Las ubicaciones a escanear se pueden canalizar al script para tener control sobre lo que se comprueba. Por ejemplo, para escanear una lista de rutas contenidas en el archivo paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Veamos la primera coincidencia de nuestra ejecución de escaneo en 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 **
Este archivo jar contiene una versión 2.17 de log4j, que no es vulnerable a CVE-2021-44228. Este resultado se informa con fines informativos y muestra que un proveedor ha parcheado su producto.
Veamos la segunda coincidencia:
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
Aquí podemos ver que Ghidra usa log4j versión 2.12.1 y, por lo tanto, debemos asumir que es vulnerable. Y efectivamente, las versiones de Ghidra anteriores a la 10.1 son vulnerables a CVE-2021-44228.
Veamos la tercera coincidencia:
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
Aquí podemos ver que el archivo server.jar de Minecraft usa log4j versión 2.14.1 y, por lo tanto, debemos asumir que es vulnerable. Y efectivamente, las versiones del servidor de Minecraft: Java Edition anteriores a la 1.18.1 son vulnerables a CVE-2021-44228.
Debe investigar cualquier coincidencia notificada por cualquiera de estos scripts y confirmar que la versión de log4j es efectivamente la versión corregida 2.16, o comunicarse con el proveedor del software para obtener una versión corregida. Alternativamente, VU#930724 contiene información sobre cómo se puede eliminar JndiLookup.class de los archivos jar vulnerables.
La versión de PowerShell del escáner tiene informes de errores adicionales cuando no se pueden investigar archivos o directorios. En particular, cualquier error Unable to scan que notifique UnauthorizedAccessException indica un problema de permisos para acceder a un directorio y/o archivo. Cualquier error Unable to scan que notifique InvalidDataException suele deberse a un archivo comprimido corrupto.