
Scanner local de bytecode para a vulnerabilidade Log4JShell (CVE-2021-44228)
Log4JShell Bytecode Detector é uma ferramenta de código aberto que ajuda a identificar se um arquivo jar é afetado pela vulnerabilidade crítica CVE-2021-44228. A ferramenta verifica o arquivo jar e compara as classes com um conjunto de hashes vulneráveis de classes dentro do arquivo jar. Os hashes foram pré-calculados para artefatos no Maven Central.
ATUALIZAÇÃO IMPORTANTE: Ampliamos a lista de artefatos afetados no Maven Central. A lista contém 18.816 artefatos. Os artefatos usam log4j-core como dependência declarada, ou identificamos arquivos .class dentro dos artefatos que correspondem às versões afetadas do log4j-core.
java -cp <PATH_TO_DOWNLOADED_JAR> de.codeshield.log4jshell.Log4JDetector <ABSOLUTE_PATH_TO_JAR_TO_CHECK>Se o jar estiver afetado, a ferramenta exibe informações na linha de comando:
CVE-2021-44228 found declared as dependency in META-INF/maven/org.apache.logging.log4j/log4j-core/pom.xml
CVE-2021-44228 found in class file org/apache/logging/log4j/core/net/JndiManager$1.class
java -cp <PATH_TO_DOWNLOADED_JAR> de.codeshield.log4jshell.Log4JProcessDetectorUma grave vulnerabilidade de Execução Remota de Código foi descoberta no log4j, e as versões 2.0-beta9 a 2.14 são afetadas. A vulnerabilidade foi classificada como crítica, pois afeta o log4j, uma das bibliotecas de logging mais utilizadas para Java. Existem muitas referências e artigos disponíveis.
O Log4j é e tem sido usado em praticamente qualquer projeto Java para fins de logging. Agora precisamos entender quais projetos e bibliotecas estão realmente afetados. Devido ao mecanismo de dependências do Java, uma aplicação também pode ser afetada se incluir transitively a versão vulnerável da biblioteca. Um projeto A inclui uma biblioteca lib transitively se uma das dependências diretas B de A tiver uma dependência de lib. Um teste simples para verificar se você é afetado pode ser feito usando a árvore de dependências do maven:
Exemplo: Execute o comando mvn dependency:tree em um projeto maven.
[INFO] exampleProject:mainProject:jar:0.0.1-SNAPSHOT
[INFO] +- exampleProject:lib-using-log4j:jar:0.0.1-SNAPSHOT:compile
[INFO] | \- org.apache.logging.log4j:log4j-core:jar:2.14.1:compile
Essa verificação, no entanto, é apenas uma primeira indicação e não é suficiente pelos seguintes motivos:
Os programas Java são frequentemente:
Consequentemente, qualquer biblioteca que um projeto Java utiliza pode incluir a vulnerabilidade no seu projeto. Uma análise aprofundada de bytecode ajuda, e é isso que publicamos como parte deste repositório.
Para compilar esta ferramenta execute
mvn compile
Para montar um jar executável use
mvn clean compile assembly:single
O conjunto de hashes vulneráveis para classes foi pré-calculado em todo o repositório Maven Central. Os hashes das classes contêm todos os hashes que identificamos como semelhantes em bytecode usando a tecnologia de Fingerprinting.
As informações pré-calculadas contêm:
Como faixa de versões afetadas consideramos [2.0-beta9, 2.15) Referência.
Esta ferramenta utiliza uma nova tecnologia de fingerprinting de bytecode para Java inventada por Andreas Dann. O fluxo básico é o seguinte:
Nota: Para uma implementação mais simples, este repositório fornece hashes SHA das classes vulneráveis; as informações foram calculadas usando Fingerprinting
A lista de hashes e artefatos maven não está completa. Atualizaremos as listas regularmente.
Esta ferramenta foi criada em conjunto pelos cofundadores da CodeShield
Feedback é bem-vindo!
Estamos trabalhando para ampliar a lista de artefatos afetados e sempre buscamos melhorar nossa oferta. contribution welcome
Além disso, ⭐️ este repositório se nosso scanner ajudou você!
Se precisar de suporte ou quiser saber mais sobre nossa tecnologia, entre em contato pelo e-mail [email protected].
Sua equipe CodeShield 💚