
Scan- und Patch-Tool für CVE-2021-44228 und verwandte log4j-Probleme.
Links zum Herunterladen der neuesten Version:
| Linux x64 mit glibc2.17+ (RHEL7+) | Windows & alle anderen Plattformen |
|---|---|
| Linux-Binary herunterladen | Java .jar herunterladen |
🚑 Hinweis: SAS-Kunden, die ihre SAS 9.4- oder SAS Viya 3.x-Bereitstellungen patchen möchten, sollten die spezifischen Anweisungen in der SAS Help Center-Dokumentation befolgen.
Dieses Projekt ist ein früher Fork von logpresso/CVE-2021-44228-Scanner, der zunächst modifiziert wurde, um Archive rekursiv zu untersuchen und Unterstützung für tar/gz-Komprimierung hinzuzufügen. Seit dem Fork hat sich das Projekt parallel zum Original weiterentwickelt und implementiert viele ähnliche Funktionen, obwohl der Großteil des Codes neu geschrieben wurde. Während die ursprüngliche 'fix'-Funktionalität durch eine patch-Methode ersetzt wurde, die einige tief verschachtelte Randfälle unterstützt und toleranter gegenüber Fehlern und Rollbacks ist, funktioniert der Erkennungsmechanismus (der scan-Befehl) weiterhin auf eine dem Original sehr ähnliche Weise.
Sie können eine Version des Tools von der Releases-Seite herunterladen oder den Links am Anfang dieser Seite folgen. Das native Image ist eine eigenständige ausführbare Datei, die auf EL7 und späteren Versionen läuft. Die Jar-Datei kann mit java -jar auf JRE 1.8+ ausgeführt werden. Dies ist derzeit die beste Möglichkeit, das Tool auf anderen Plattformen und älteren glibc-Versionen auszuführen (einschließlich Windows, AIX, Solaris usw.).
Nach dem Herunterladen des nativen Images muss die Datei mit chmod +x ausführbar gemacht werden, bevor sie ausgeführt werden kann.
Die Befehlssyntax ist dieselbe, unabhängig davon, ob Sie die .jar oder die native ausführbare Datei aufrufen. Zum Beispiel ist dies:
./loguccino help
funktional identisch mit diesem:
java -jar ./loguccino-all.jar help
Der Befehl loguccino help liefert Dokumentation zu den verfügbaren Befehlen.
./loguccino scan /path/to/approot
Dies durchläuft alle Unterverzeichnisse in /path/to/approot, einschließlich der rekursiven Durchquerung aller verschachtelten .tar.gz-, .tgz-, .tar-, .zip-, .ear-, .war- und .jar-Archive.
Eine .csv-Datei mit dem Namen loguccino-scan-[datetime].csv wird im Arbeitsverzeichnis erstellt und enthält die folgenden Daten:
/opt/sas/config/Lev1/Web/Staging/sas.webreportstudio4.4.21w47AIX.ear/install/deploy/21w47SASConfig/Lev5/Web/Staging/sas.webreportstudio4.4.21w47AIX.earopt/sas/config/Lev1/Web/Staging/sas.webreportstudio4.4.21w47AIX.ear::sas.webreportstudio.war::WEB-INF/lib/log4j-core-2.1.jarWeitere Informationen zum scan-Befehl finden Sie unter ./loguccino help scan.
Wenn Schwachstellen gefunden werden, wird die Datei loguccino-scan-[datetime].csv als Eingabe für den patch-Befehl verwendet:
./loguccino patch ./loguccino-scan-23122021003311.csv
Dies entfernt jede gefundene Schwachstelle und erstellt ein Verzeichnis loguccino-patch-[timestamp], das eine Sicherungskopie jeder gepatchten Datei enthält. Wenn eine Datei für mehrere Schwachstellen gepatcht wurde (z. B. ein größeres Sicherungsarchiv mit mehreren Tools oder Softwareversionen), werden mehrere Versionen der gepatchten Datei in jeder Phase des Prozesses gesichert, um ein schrittweises Rollback im Fehlerfall zu ermöglichen.
Hinweis:
Das Patchen einer Datei auf der Festplatte patcht nicht die Version des Programms, das bereits auf dem Host ausgeführt wird. Denken Sie daran, dass Sie die relevanten Dienste/Anwendungen vor dem Patchen stoppen und nach dem Patchen neu starten müssen, damit die Änderungen wirksam werden.
Weitere Informationen zum patch-Befehl finden Sie unter ./loguccino help patch.
Beim Scannen nach Schwachstellen können einige Archive als beschädigt gemeldet werden (dies geschieht auch bei verschachtelten Archiven, wenn die Komprimierungsmethoden nicht zur Erweiterung des Archivs passen). Der scan-Befehl gibt den Pfad zu diesen Archiven in der Datei logpresso-scan-[datetime].log aus. Wenn sie als signifikant erachtet werden, sollten diese Archive manuell dekomprimiert und untersucht (oder gescannt) werden, um zu bestätigen, dass sie tatsächlich beschädigt sind.
Wenn Sie auf Fehler oder unerwartetes Verhalten stoßen, öffnen Sie bitte ein Issue und fügen Sie Schritte zur Reproduktion des Fehlers sowie weitere Hintergrundinformationen bei.
Pull Requests und Aktualisierungen des Codes sind willkommen und werden ermutigt.