
Scanner für Jar-Dateien, die möglicherweise anfällig für CVE-2021-44228 sind
Anwendungen, die anfällig für das log4j CVE-2021-44228 Problem sind, können möglicherweise durch Scannen von jar-, war- und ear-Dateien erkannt werden, um nach dem Vorhandensein von JndiLookup.class zu suchen.
Abhängig von der Plattform, die Sie untersuchen, kann das PowerShell- oder das Python3-Skript sinnvoller sein. In beiden Fällen ist das optionale Argument das Stammverzeichnis, das Sie für Ihre Suche verwenden möchten.
Jede entdeckte Datei ist eine Untersuchung wert, um festzustellen, ob die Anwendung, die sie verwendet, anfällig ist. Für jedes vorhandene JndiLookup.class enthält log4j üblicherweise die Version im jar-Dateinamen. Beispielsweise würde ein Treffer auf log4j-core-2.14.1.jar auf eine anfällige Anwendung hindeuten. Alternativ kann auch log4j-core-2.16.jar einen Treffer erzeugen, da der JndiLookup-Code in der Version 2.16 von log4j noch vorhanden ist, aber standardmäßig deaktiviert ist. Weitere Details finden Sie unter VU#930724.
Hier ist beispielsweise ein Aufruf der PowerShell-Version des Scanners:

Ähnlich hier ein Aufruf der Python3-Version:

Schließlich ein Aufruf der Bash-Version:

Beachten Sie, dass die Bash- und Python-Versionen dieses Skripts standardmäßig Scans auf ein einzelnes Dateisystem beschränken.
Mit der PowerShell-Version können Scan-Pfade an das Skript weitergeleitet werden, um die Kontrolle darüber zu haben, was überprüft wird. Beispielsweise zum Scannen einer Liste von Pfaden aus der Datei paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Betrachten wir den ersten Treffer unserer Windows-Scan-Ausführung:
WARNING: C:\tmp\2.15\log4j-core-2.15.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Basierend auf dem Jar-Namen handelt es sich um eine Bibliothek von log4j 2.15. Obwohl diese Version von log4j CVE-2021-44228 behebt, enthielt sie immer noch einen Fehler, der als CVE-2021-45046 beschrieben wird. Die Auswirkung von CVE-2021-45046 ist ein Denial-of-Service für nur bestimmte Java-Anwendungen, die log4j 2.15 verwenden. Für Java-Anwendungen, die log4j-Versionen vor 2.15 verwenden und ebenfalls die Voraussetzungen für CVE-2021-45046 erfüllen, ist die Auswirkung RCE.
Betrachten wir den zweiten Treffer:
C:\tmp\2.16\log4j-core-2.16.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
Diese Jar-Datei enthält eine 2.16-Version von log4j, die nicht anfällig für CVE-2021-44228 ist. Dieses Ergebnis wird zu Informationszwecken gemeldet und zeigt, dass ein Anbieter sein Produkt gepatcht hat.
Betrachten wir den dritten Treffer:
WARNING: C:\tmp\ghidra_10.0_PUBLIC\Ghidra\Framework\Generic\lib\log4j-core-2.12.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Hier sehen wir, dass Ghidra log4j Version 2.12.1 verwendet, und daher sollten wir davon ausgehen, dass es anfällig ist. Und tatsächlich sind Ghidra-Versionen vor 10.1 anfällig für CVE-2021-44228.
Sie sollten alle von diesen Skripten gemeldeten Treffer untersuchen und bestätigen, dass entweder die log4j-Version tatsächlich die reparierte Version 2.16 ist, oder wenden Sie sich an Ihren Softwareanbieter, um eine reparierte Version der Software zu erhalten. Alternativ finden Sie unter VU#930724 Informationen dazu, wie JndiLookup.class aus anfälligen Jar-Dateien entfernt werden kann.
Die PowerShell-Version des Scanners verfügt über eine zusätzliche Fehlerberichterstattung, wenn Dateien oder Verzeichnisse nicht untersucht werden können. Insbesondere weisen Unable to scan-Fehler mit UnauthorizedAccessException auf ein Berechtigungsproblem beim Zugriff auf ein Verzeichnis und/oder eine Datei hin. Unable to scan-Fehler mit InvalidDataException sind in der Regel auf ein beschädigtes Archiv zurückzuführen.