
Scanners para arquivos JAR que podem ser vulneráveis ao CVE-2021-44228
Aplicações vulneráveis ao problema do log4j CVE-2021-44228 podem ser detectadas ao escanear arquivos jar, war e ear para procurar pela presença de JndiLookup.class.
Dependendo da plataforma que você está investigando, o script PowerShell ou o Python3 pode fazer mais sentido para executar. Em ambos os casos, o argumento opcional é o diretório de nível superior que você deseja usar para iniciar sua busca.
Qualquer arquivo descoberto vale a pena ser investigado para determinar se a aplicação que o utiliza é vulnerável. Para qualquer JndiLookup.class presente, o log4j geralmente inclui a versão no nome do arquivo jar. Por exemplo, um resultado em log4j-core-2.14.1.jar indicaria 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. Veja VU#930724 para mais detalhes.
Por exemplo, aqui está uma execução da versão PowerShell do scanner:

Da mesma forma, aqui está uma execução da versão Python3:

Finalmente, aqui está uma execução da versão Bash:

Observe que as versões Bash e Python deste script, por design, limitam as varreduras a um único sistema de arquivos.
Com a versão PowerShell, locais para escanear podem ser canalizados para o script para ter controle sobre o que é verificado. Por exemplo, para escanear uma lista de caminhos contida no arquivo paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Vamos olhar para o primeiro resultado em nossa execução de varredura no Windows:
WARNING: C:\tmp\2.15\log4j-core-2.15.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Com base no nome do jar, esta é uma biblioteca do log4j 2.15. Embora esta versão do log4j corrija a CVE-2021-44228, ela ainda continha uma falha descrita como CVE-2021-45046. O impacto da CVE-2021-45046 é uma negação de serviço apenas para certas aplicações Java que usam log4j 2.15. Para aplicações Java que usam versões do log4j anteriores a 2.15 e que também se encaixam nos pré-requisitos para aplicação da CVE-2021-45046, o impacto é RCE.
Vamos olhar para o segundo resultado:
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 arquivo jar contém uma versão 2.16 do log4j, que não é vulnerável à CVE-2021-44228. Este resultado é relatado para fins de informação, mostrando que um fornecedor corrigiu seu produto.
Vamos olhar para o terceiro resultado:
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
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 à CVE-2021-44228.
Você deve investigar qualquer resultado relatado por qualquer um desses 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 o 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.