
Dateisystem-Scanner, der anfällige Log4J-Versionen (CVE-2021-44228, CVE-2021-45046) durch Analyse kompilierter Java-Klassen, einschließlich verschachtelter Archive, erkennt. Funktioniert unter Linux, Windows und Mac.

Scanner, der verwundbare Log4J-Versionen erkennt, um Teams bei der Bewertung ihrer Gefährdung durch CVE-2021-44228 (KRITISCH), CVE-2021-45046, CVE-2021-45105 und CVE-2021-44832 zu helfen. Kann nach Log4J-Instanzen suchen, indem das gesamte Dateisystem einschließlich aller installierten Anwendungen sorgfältig untersucht wird. Es ist in der Lage, Log4J-Instanzen zu finden, die mehrere Ebenen tief versteckt sind. Funktioniert unter Linux, Windows, Mac und überall sonst, wo Java läuft!
Meldet derzeit log4j-core-Versionen 2.3.2, 2.12.4 und 2.17.1 als _SAFE_, 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0 und 2.17.0 als _OKAY_ und alle anderen Versionen als _VULNERABLE_ (obwohl es Versionen vor 2.0-beta9 als _POTENTIALLY_SAFE_ meldet). Es meldet ältere log4j-1.x-Versionen als _OLD_.
Kann log4j in ausführbaren Spring-Boot-Jars/Wars, Abhängigkeiten, die in Uber-Jars vermischt sind, Shaded-Jars und sogar entpackte Jar-Dateien, die einfach unkomprimiert auf dem Dateisystem liegen (auch *.class), korrekt erkennen.
Wir pflegen derzeit eine Sammlung von log4j-Samples, die wir zum Testen verwenden.
java -jar log4j-detector-2021.12.29.jar ./samples
-- github.com/mergebase/log4j-detector v2021.12.29 (by mergebase.com) analyzing paths (could take a while).
-- Note: specify the '--verbose' flag to have every file examined printed to STDERR.
false-hits/log4j-core-2.12.2.jar contains Log4J-2.x == 2.12.2 _OKAY_
false-hits/log4j-core-2.12.3.jar contains Log4J-2.x == 2.12.3 _OKAY_
false-hits/log4j-core-2.12.4.jar contains Log4J-2.x == 2.12.4 _SAFE_
false-hits/log4j-core-2.15.0.jar contains Log4J-2.x == 2.15.0 _OKAY_
false-hits/log4j-core-2.16.0.jar contains Log4J-2.x == 2.16.0 _OKAY_
false-hits/log4j-core-2.17.0.jar contains Log4J-2.x == 2.17.0 _OKAY_
false-hits/log4j-core-2.17.1.jar contains Log4J-2.x >= 2.17.1 _SAFE_
false-hits/log4j-core-2.3.1.jar contains Log4J-2.x == 2.3.1 _OKAY_
false-hits/log4j-core-2.3.2.jar contains Log4J-2.x == 2.3.2 _SAFE_
true-hits/log4j-core-2.0-beta9.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.10.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.10.0.zip contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.2.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.2.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.3.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.1.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.9.1.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
old-hits/log4j-1.1.3.jar contains Log4J-1.x <= 1.2.17 _OLD_
old-hits/log4j-1.2.17.jar contains Log4J-1.x <= 1.2.17 _OLD_
old-hits/log4j-core-2.0-beta2.jar contains Log4J-2.x <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?)
_VULNERABLE_ -> Sie müssen diese Datei aktualisieren oder entfernen.
_OKAY_ -> Wir melden dies für Log4J-Versionen 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0 und 2.17.0. Wir empfehlen ein Upgrade auf 2.17.1.
_SAFE_ -> Wir melden dies derzeit nur für Log4J-Versionen 2.3.2, 2.12.4 und 2.17.1 (und höher).
_OLD_ -> Sie sind vor CVE-2021-44228 sicher, sollten aber ein Upgrade planen, da Log4J 1.2.x seit 7 Jahren EOL ist und mehrere bekannte Schwachstellen aufweist.
_POTENTIALLY_SAFE_ -> Die Datei "JndiLookup.class" ist nicht vorhanden, entweder weil Ihre Log4J-Version sehr alt ist (vor 2.0-beta9) oder weil jemand diese Datei bereits entfernt hat. Stellen Sie sicher, dass es sich um jemanden aus Ihrem Team oder Unternehmen handelte, der "JndiLookup.class" entfernt hat, wenn dies der Fall ist, da Angreifer dafür bekannt sind, diese Datei selbst zu entfernen, um zu verhindern, dass zusätzliche konkurrierende Angreifer Zugriff auf kompromittierte Systeme erhalten.
java -jar log4j-detector-2021.12.29.jar
Usage: java -jar log4j-detector-2021.12.29.jar [--verbose] [--json] [--stdin] [--exclude=X] [paths to scan...]
--json - Output STDOUT results in JSON. (Errors/warning still emitted to STDERR)
--stdin - Read STDIN for paths to explore (one path per line)
--exclude=X - Where X is a JSON list containing full paths to exclude. Must be valid JSON.
Example: --exclude='["/dev", "/media", "Z:\TEMP"]'
Exit codes: 0 = No vulnerable Log4J versions found.
1 = At least one legacy Log4J 1.x version found.
2 = At least one vulnerable Log4J version found.
About - MergeBase log4j detector (version 2021.12.29)
Docs - https://github.com/mergebase/log4j-detector
(C) Copyright 2021 Mergebase Software Inc. Licensed to you via GPLv3.
git clone https://github.com/mergebase/log4j-detector.git
cd log4j-detector/
mvn install
java -jar target/log4j-detector-latest.jar
Wir pflegen eine Sammlung von log4j-Beispielen hier: https://github.com/mergebase/log4j-samples
GPL Version 3.0
Der Java-Compiler speichert String-Literale direkt in den kompilierten *.class-Dateien. Wenn log4j-detector eine Datei namens "JndiManager.class" auf Ihrem Dateisystem erkennt, untersucht es diese Datei auf den String: "Invalid JNDI URI - {}". Es stellt sich heraus, dass dieses spezifische String-Literal nur in der gepatchten Version von Log4J (Version 2.15.0) vorhanden ist. Alle Versionen von Log4J ohne diesen String sind verwundbar.
Diese gleiche Technik der Untersuchung von *.class-Dateien auf String-Literale wird weiter erweitert, um sichere Versionen 2.3.2, 2.12.4 und 2.17.1 genau zu erkennen.
Viele Scanner (einschließlich GitHub's eigenem Dependabot) melden derzeit sowohl "log4j-core"- als auch "log4j-api"-Bibliotheken als verwundbar. Diese Scanner sind falsch. Derzeit gibt es keine existierende Version der "log4j-api"-Bibliothek, die durch eine dieser Schwachstellen ausgenutzt werden kann.
Bei MergeBase sind wir stolz auf unsere Scan-Genauigkeit. Sie sind bereits beschäftigt genug mit dem Patchen und Verteidigen Ihrer Systeme. Wir möchten nicht, dass Sie Ihre Zeit mit falschen Positiven verschwenden. Deshalb melden wir keine Treffer gegen log4j-api.
Version 2.10.0 ist wichtig, da dies die erste Version ist, in der die verwundbare "Nachrichtensuche-Funktion" von Log4J über die Log4J-Konfiguration deaktiviert werden kann.
Version 2.12.2 ist wichtig, da es sich um eine Java-7-kompatible Version von Log4J handelt, die nicht anfällig für CVE-2021-44228 ist.
Die Versionen 2.15.0 und 2.16.0 sind wichtig, da dies die ersten Versionen sind, in denen die Standard-Out-of-the-Box-Konfiguration von Log4J nicht anfällig für CVE-2021-44228 ist.
Und die Versionen 2.3.2, 2.12.4 und 2.17.1 sind wichtig, da sie nicht anfällig für kürzlich entdeckte CVEs wie CVE-2021-45046 und CVE-2021-45105 sind. Obwohl dies viel weniger schwerwiegende Schwachstellen sind, gehen wir davon aus, dass jeder auf eine der Versionen 2.3.2, 2.12.4 oder 2.17.1 patchen möchte.
Das "!" bedeutet, dass der log4j-detector ein Zip-Archiv betreten hat (z. B. *.zip, *.ear, *.war, *.aar, *.jar). Da Zip-Dateien Zip-Dateien enthalten können, kann ein einzelnes Ergebnis mehr als einen "!"-Indikator enthalten.
Hinweis: Der log4j-detector betritt nur rekursiv Zip-Archive. Er betritt keine tar-, gz- oder bz2-Archive. Der Hauptgrund dafür ist, dass Java-Systeme oft so konfiguriert sind, dass sie Jars innerhalb von Jars ausführen, aber sie sind nie so konfiguriert, dass sie andere Dateiformate ausführen (soweit ich weiß!). Und daher ist eine log4j-Kopie in einer *.tar.gz-Datei wahrscheinlich für ein laufendes Java-System nicht erreichbar und daher keine meldungswürdige Schwachstelle.
Nur Versionen von Log4J 2.x (von 2.0-beta9 bis 2.14.1) sind anfällig für CVE-2021-44228.
Gute Frage! Da wir den vollständigen Quellcode hier auf Github (alle 2500 Zeilen Java) sowie die Schritte zur Erstellung enthalten, und da dieses Tool null Abhängigkeiten hat, sollte es nicht zu lange dauern, den Code zu Ihrer Zufriedenheit sorgfältig zu studieren. Wenn Sie Maven nicht vertrauen, können Sie direkt in das Verzeichnis "src/main/java/com/mergebase/log4j" gehen und "javac *.java" eingeben. Das funktioniert auch!
Wir signieren auch das vorkompilierte Jar, das wir im Stammverzeichnis des Repositorys aufbewahren (./log4j-detector-2021.12.29.jar), mit dem MergeBase-Codesignaturschlüssel. Bitte führen Sie "jarsigner -verbose -verify log4j-detector-2021.12.29.jar" aus, um dies zu bestätigen.

MergeBase ist ein SCA-Unternehmen (Software Composition Analysis) mit Sitz in Vancouver, Kanada. Wir sind ähnlich wie Unternehmen wie Snyk, Sonatype, Blackduck usw., indem wir Unternehmen helfen, verwundbare Open-Source-Bibliotheken in ihrer Software zu erkennen und zu verwalten. Schauen Sie uns an! Wir haben eine großartige Genauigkeit, großartige Sprachunterstützung und sind auch nicht zu teuer: mergebase.com/pricing.
Wir würden uns freuen, wenn jemand eine 2-wöchige kostenlose Testversion unseres SCA-Produkts ausprobiert! Und wenn Sie unserem CEO ([email protected]) mit dem Betreff "log4j-detector" eine E-Mail senden, verlängern wir Ihre kostenlose Testversion auf 4 Wochen.