
Scanner de sistema de arquivos que detecta versões vulneráveis do Log4J (CVE-2021-44228, CVE-2021-45046) analisando classes Java compiladas, incluindo arquivos aninhados. Funciona em Linux, Windows e Mac.

Scanner que detecta versões vulneráveis do Log4J para ajudar equipes a avaliar sua exposição ao CVE-2021-44228 (CRÍTICO), CVE-2021-45046, CVE-2021-45105 e CVE-2021-44832. Pode pesquisar instâncias do Log4J examinando cuidadosamente todo o sistema de arquivos, incluindo todos os aplicativos instalados. É capaz de encontrar instâncias do Log4J que estão ocultas várias camadas abaixo. Funciona no Linux, Windows e Mac, e em todos os outros lugares onde o Java roda também!
log4j-core. E a log4j-api?Atualmente reporta as versões log4j-core 2.3.2, 2.12.4 e 2.17.1 como _SAFE_, 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0 e 2.17.0 como _OKAY_ e todas as outras versões como _VULNERABLE_ (embora reporte versões anteriores a 2.0-beta9 como _POTENTIALLY_SAFE_). Reporta versões antigas do log4j-1.x como _OLD_.
Consegue detectar corretamente log4j dentro de jars/wars executáveis spring-boot, dependências misturadas em uber jars, jars sombreados (shaded) e até arquivos jar explodidos apenas sentados descomprimidos no sistema de arquivos (também conhecido como *.class).
Atualmente mantemos uma coleção de amostras de log4j que usamos para testes.
java -jar log4j-detector-2021.12.29.jar ./samples
-- github.com/mergebase/log4j-detector v2021.12.29 (by mergebase.com) analyzing paths (could take a while).
-- Note: specify the '--verbose' flag to have every file examined printed to STDERR.
false-hits/log4j-core-2.12.2.jar contains Log4J-2.x == 2.12.2 _OKAY_
false-hits/log4j-core-2.12.3.jar contains Log4J-2.x == 2.12.3 _OKAY_
false-hits/log4j-core-2.12.4.jar contains Log4J-2.x == 2.12.4 _SAFE_
false-hits/log4j-core-2.15.0.jar contains Log4J-2.x == 2.15.0 _OKAY_
false-hits/log4j-core-2.16.0.jar contains Log4J-2.x == 2.16.0 _OKAY_
false-hits/log4j-core-2.17.0.jar contains Log4J-2.x == 2.17.0 _OKAY_
false-hits/log4j-core-2.17.1.jar contains Log4J-2.x >= 2.17.1 _SAFE_
false-hits/log4j-core-2.3.1.jar contains Log4J-2.x == 2.3.1 _OKAY_
false-hits/log4j-core-2.3.2.jar contains Log4J-2.x == 2.3.2 _SAFE_
true-hits/log4j-core-2.0-beta9.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.10.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.10.0.zip contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.2.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.2.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.3.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.1.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.9.1.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
old-hits/log4j-1.1.3.jar contains Log4J-1.x <= 1.2.17 _OLD_
old-hits/log4j-1.2.17.jar contains Log4J-1.x <= 1.2.17 _OLD_
old-hits/log4j-core-2.0-beta2.jar contains Log4J-2.x <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?)
_VULNERABLE_ -> Você precisa atualizar ou remover este arquivo.
_OKAY_ -> Reportamos isso para as versões 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0 e 2.17.0 do Log4J. Recomendamos atualizar para a versão 2.17.1.
_SAFE_ -> Atualmente reportamos isso apenas para as versões 2.3.2, 2.12.4 e 2.17.1 (e superiores) do Log4J.
_OLD_ -> Você está seguro em relação ao CVE-2021-44228, mas deve planejar atualizar porque o Log4J 1.2.x está EOL há 7 anos e possui várias vulnerabilidades conhecidas.
_POTENTIALLY_SAFE_ -> O arquivo "JndiLookup.class" não está presente, seja porque sua versão do Log4J é muito antiga (anterior a 2.0-beta9), ou porque alguém já removeu este arquivo. Certifique-se de que foi alguém da sua equipe ou empresa que removeu "JndiLookup.class" se for o caso, porque atacantes têm removido este arquivo eles mesmos para impedir que outros atacantes concorrentes obtenham acesso a sistemas comprometidos.
java -jar log4j-detector-2021.12.29.jar
Usage: java -jar log4j-detector-2021.12.29.jar [--verbose] [--json] [--stdin] [--exclude=X] [paths to scan...]
--json - Output STDOUT results in JSON. (Errors/warning still emitted to STDERR)
--stdin - Read STDIN for paths to explore (one path per line)
--exclude=X - Where X is a JSON list containing full paths to exclude. Must be valid JSON.
Example: --exclude='["/dev", "/media", "Z:\TEMP"]'
Exit codes: 0 = No vulnerable Log4J versions found.
1 = At least one legacy Log4J 1.x version found.
2 = At least one vulnerable Log4J version found.
About - MergeBase log4j detector (version 2021.12.29)
Docs - https://github.com/mergebase/log4j-detector
(C) Copyright 2021 Mergebase Software Inc. Licensed to you via GPLv3.
git clone https://github.com/mergebase/log4j-detector.git
cd log4j-detector/
mvn install
java -jar target/log4j-detector-latest.jar
Mantemos uma coleção de amostras de log4j aqui: https://github.com/mergebase/log4j-samples
GPL versão 3.0
O compilador Java armazena literais de String diretamente nos arquivos *.class compilados. Se o log4j-detector detectar um arquivo chamado "JndiManager.class" em seu sistema de arquivos, ele então examina esse arquivo em busca desta String: "Invalid JNDI URI - {}". Acontece que essa String literal específica está presente apenas na versão corrigida do Log4J (versão 2.15.0). Quaisquer versões do Log4J sem essa String são vulneráveis.