
Verifica arquivos jar, war e ear quanto à presença de JndiLookup.class para detectar aplicativos vulneráveis ao CVE-2021-44228 (Log4Shell).
Script e Repositório Originais: https://github.com/CERTCC/CVE-2021-44228_scanner
Modificado por: Alex Pena
Aplicações vulneráveis ao problema log4j CVE-2021-44228 podem ser detectáveis ao escanear arquivos jar, war e ear para buscar a presença de JndiLookup.class.
Qualquer arquivo descoberto merece investigação para determinar se a aplicação que o utiliza é vulnerável. Para qualquer JndiLookup.class presente, o log4j normalmente inclui a versão no nome do arquivo jar. Por exemplo, um resultado em log4j-core-2.14.1.jar seria indicativo de uma aplicação vulnerável. Alternativamente, log4j-core-2.16.jar também pode produzir um resultado porque o código JndiLookup ainda está presente na versão 2.16 do log4j, mas está desabilitado por padrão. Consulte VU#930724 para mais detalhes.
Parâmetros
-Force Allow scanning of system and hidden files (The Force parameter doesn't override security restrictions)
-Verbose Extra scanning output and messages
Escanear diretório atual
.\checkjndi.ps1
Escanear o diretório test_folder, com saída extra e escaneamento de arquivos de sistema/ocultos
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
Por exemplo, aqui está uma execução da versão PowerShell do scanner:

Locais para escanear podem ser canalizados para o script para ter controle sobre o que é verificado. Por exemplo, para escanear uma lista de caminhos contidos no arquivo paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Vejamos o primeiro resultado em nossa execução de escaneamento no 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 arquivo jar contém uma versão 2.17 do log4j, que não é vulnerável ao CVE-2021-44228. Este resultado é relatado para fins informativos, mostrando que um fornecedor corrigiu seu produto.
Vejamos o segundo resultado:
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
Aqui podemos ver que o Ghidra usa a versão 2.12.1 do log4j e, portanto, devemos assumir que é vulnerável. E de fato, versões do Ghidra anteriores à 10.1 são vulneráveis ao CVE-2021-44228.
Vejamos o terceiro resultado:
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
Aqui podemos ver que o arquivo server.jar do Minecraft usa a versão 2.14.1 do log4j e, portanto, devemos assumir que é vulnerável. E de fato, versões do servidor Minecraft: Java Edition anteriores à 1.18.1 são vulneráveis ao CVE-2021-44228.
Você deve investigar quaisquer resultados relatados por qualquer um destes scripts e confirmar se a versão do log4j é de fato a versão corrigida 2.16, ou entrar em contato com seu fornecedor de software para obter uma versão corrigida do software. Alternativamente, VU#930724 contém informações sobre como JndiLookup.class pode ser removido de arquivos jar vulneráveis.
A versão PowerShell do scanner possui relatórios de erro adicionais quando arquivos ou diretórios não podem ser investigados. Em particular, qualquer erro Unable to scan relatando UnauthorizedAccessException é indicativo de um problema de permissão ao acessar um diretório e/ou arquivo. Qualquer erro Unable to scan relatando InvalidDataException geralmente é devido a um arquivo corrompido.