
Escáneres para archivos Jar que puedan ser vulnerables a CVE-2021-44228
Las aplicaciones vulnerables al problema log4j CVE-2021-44228 pueden ser detectables escaneando archivos jar, war y ear en busca de la presencia de JndiLookup.class.
Dependiendo de la plataforma que esté investigando, puede tener más sentido ejecutar el script de PowerShell o el de Python3. En ambos casos, el argumento opcional es el directorio de nivel superior que desea utilizar para comenzar su búsqueda.
Cualquier archivo descubierto merece una investigación para determinar si la aplicación que lo utiliza es vulnerable. Para cualquier JndiLookup.class presente, log4j comúnmente 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.
Por ejemplo, aquí hay una invocación de la versión de PowerShell del escáner:

Del mismo modo, aquí hay una invocación de la versión de Python3:

Finalmente, aquí hay una invocación de la versión de Bash:

Tenga en cuenta que las versiones Bash y Python de este script, por diseño, limitarán los escaneos a un solo sistema de archivos. Con la versión de PowerShell, se pueden canalizar las ubicaciones a escanear al script para tener control sobre lo que se verifica. Por ejemplo, para escanear una lista de rutas contenida en el archivo paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Veamos la primera coincidencia en nuestra ejecución de escaneo en Windows:
WARNING: C:\tmp\2.15\log4j-core-2.15.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Basándose en el nombre del jar, esta es una biblioteca de log4j 2.15. Si bien esta versión de log4j corrige CVE-2021-44228, aún contenía una falla que se describe como CVE-2021-45046. El impacto de CVE-2021-45046 es una denegación de servicio solo para ciertas aplicaciones Java que usan log4j 2.15. Para aplicaciones Java que usan versiones de log4j anteriores a la 2.15 y que también cumplen con los requisitos previos para aplicar CVE-2021-45046, el impacto es RCE.
Veamos la segunda coincidencia:
C:\tmp\2.16\log4j-core-2.16.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
Este archivo jar contiene una versión 2.16 de log4j, que no es vulnerable a CVE-2021-44228. Este resultado se informa con fines informativos, lo que demuestra que un proveedor ha parcheado su producto.
Veamos la tercera coincidencia:
WARNING: C:\tmp\ghidra_10.0_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, por lo que debemos asumir que es vulnerable. Y de hecho, las versiones de Ghidra anteriores a la 10.1 son vulnerables a CVE-2021-44228.
Debe investigar cualquier coincidencia reportada por cualquiera de estos scripts y confirmar que la versión de log4j sea efectivamente la versión corregida 2.16, o comunicarse con su proveedor de software para obtener una versión corregida del software. Alternativamente, VU#930724 tiene 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 informe UnauthorizedAccessException es indicativo de un problema de permisos al acceder a un directorio y/o archivo. Cualquier error Unable to scan que informe InvalidDataException generalmente se debe a un archivo corrupto.