
Lokaler Bytecode-Scanner für die Log4JShell-Schwachstelle (CVE-2021-44228)
Log4JShell Bytecode Detector ist ein Open-Source-Tool, das dabei hilft zu erkennen, ob eine Jar-Datei von der kritischen Schwachstelle CVE-2021-44228 betroffen ist. Das Tool scannt die Jar-Datei und vergleicht die Klassen mit einer Reihe von anfälligen Hashes für Klassen innerhalb der Jar-Datei. Die Hashes wurden für Artefakte auf Maven Central vorab berechnet.
WICHTIGES UPDATE: Wir haben die Liste der betroffenen Artefakte auf Maven Central erweitert. Die Liste enthält 18.816 Artefakte. Die Artefakte verwenden entweder log4j-core als deklarierte Abhängigkeit, oder wir haben .class-Dateien innerhalb der Artefakte identifiziert, die zu den betroffenen Versionen von log4j-core passen.
java -cp <PFAD_ZUR_HERGELADENEN_JAR> de.codeshield.log4jshell.Log4JDetector <ABSOLUTER_PFAD_ZUR_ZU_PRÜFENDEN_JAR> aus.Wenn die Jar-Datei betroffen ist, gibt das Tool Informationen auf der Kommandozeile aus:
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 <PFAD_ZUR_HERGELADENEN_JAR> de.codeshield.log4jshell.Log4JProcessDetector aus.Eine schwerwiegende Schwachstelle zur Remote Code Execution wurde in log4j entdeckt; die Versionen 2.0-beta9 bis 2.14 sind betroffen. Die Schwachstelle wurde als kritisch eingestuft, da sie log4j betrifft, eine der am häufigsten verwendeten Logging-Bibliotheken für Java. Es gibt viele Referenzen und Artikel dazu.
Log4j wird und wurde in fast jedem Java-Projekt zu Logging-Zwecken verwendet. Nun müssen wir verstehen, welche Projekte und Bibliotheken tatsächlich betroffen sind. Aufgrund des Java-Abhängigkeitsmechanismus kann eine Anwendung auch dann betroffen sein, wenn sie die anfällige Bibliotheksversion transitiv enthält. Ein Projekt A enthält eine Bibliothek lib transitiv, wenn eine der direkten Abhängigkeiten B von A eine Abhängigkeit zu lib hat. Ein einfacher Test, um zu prüfen, ob man betroffen ist, kann mit dem Maven-Abhängigkeitsbaum durchgeführt werden:
Beispiel: Führe den Befehl mvn dependency:tree in einem Maven-Projekt aus.
[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
Diese Prüfung ist jedoch nur ein erster Hinweis und reicht aus folgenden Gründen nicht aus:
Java-Programme werden häufig:
Folglich kann jede Bibliothek, die ein Java-Projekt verwendet, die Schwachstelle in dein Projekt einschleusen. Eine eingehende Bytecode-Analyse hilft dabei – genau das veröffentlichen wir als Teil dieses Repositorys.
Um dieses Tool zu bauen, führe aus:
mvn compile
Zum Erstellen einer ausführbaren jar-Datei verwende:
mvn clean compile assembly:single
Die Menge an anfälligen Hashes für Klassen wurde über das gesamte Maven Central-Repository vorab berechnet. Die Hashes der Klassen enthalten alle Hashes, die wir mithilfe der Fingerprinting-Technologie als bytecode-ähnlich identifiziert haben.
Die vorab berechneten Informationen enthalten:
Als betroffenen Versionsbereich haben wir [2.0-beta9, 2.15) berücksichtigt. Referenz.
Dieses Tool verwendet eine neue Bytecode-Fingerprinting-Technologie für Java, die von Andreas Dann entwickelt wurde. Der grundlegende Ablauf ist wie folgt:
Hinweis: Für eine einfachere Bereitstellung enthält dieses Repository SHA-Hashes der anfälligen Klassen; die Informationen wurden mithilfe von Fingerprinting berechnet.
Die Liste der Hashes und Maven-Artefakte ist nicht vollständig. Wir werden die Listen regelmäßig aktualisieren.
Dieses Tool wurde von den CodeShield-Mitbegründern gemeinsam entwickelt:
Feedback ist willkommen!
Wir arbeiten daran, die Liste der betroffenen Artefakte zu erweitern, und sind stets bestrebt, unser Angebot zu verbessern. contribution welcome
Außerdem: ⭐️ dieses Repository, wenn dir unser Scanner geholfen hat!
Wenn du Unterstützung benötigst oder mehr über unsere Technologie erfahren möchtest, kontaktiere uns unter [email protected].
Dein CodeShield-Team 💚