
Scanner del filesystem più veloce per log4shell (CVE-2021-44228, CVE-2021-45046) e altre istanze vulnerabili (CVE-2017-5645, CVE-2019-17571, CVE-2022-23305, CVE-2022-23307 ... ) della libreria log4j. Prestazioni eccellenti e basso consumo di memoria.

Porting Python di https://github.com/mergebase/log4j-detector log4j-detector è copyright (C) Copyright 2021 Mergebase Software Inc. https://mergebase.com/ Concesso in licenza GPLv3.
La motivazione per portare in Python era migliorare le prestazioni, ridurre il consumo di memoria e aumentare la leggibilità del codice. Vedi la sezione su prestazioni per il confronto.
*E sembra che questo sia lo strumento di scansione più veloce con il minor fabbisogno di memoria *
Identifica le versioni di log4j (1.x), reload4j (1.2.18+) e log4j-core (2.x) sul tuo file system vulnerabili a CVE-2021-44228, CVE-2021-45046 e molti altri - vedi tabella sotto. È in grado di trovare istanze incorporate in applicazioni più grandi a diversi livelli di profondità. Funziona su Linux, Windows, Mac o ovunque sia eseguito Python 3.8+.
Può rilevare correttamente log4j all'interno di jar/war eseguibili spring-boot, dipendenze mescolate in
uber jar, jar shaded e persino
file jar esplosi non compressi sul file system (aka *.class).
Può anche gestire file di classe shaded - estensioni .esclazz (elastic) e .classdata (Azure).
Estensioni di archivio Java cercate: .zip, .jar, .war, .ear, .aar, .jpi,
.hpi, .rar, .nar, .wab, .eba, .ejb, .sar, .apk, .par, .kar
| Rileva | CVE | CVSSv3 | Gravità | Java | Vulnerabile da | Vulnerabile fino a | Risolto in | libreria |
|---|---|---|---|---|---|---|---|---|
| YES | CVE-2021-44228 | 10.0 | Critica | 8 | 2.0-beta9 | 2.14.1 | 2.15.0 | log4jv2 |
| YES | CVE-2017-5645 | 9.8 | Critica | 7 | 2.0-alpha1 | 2.8.1 | 2.8.2 | log4jv2 |
| YES | CVE-2019-17571 | 9.8 | Critica | 1.2.0 | 1.2.17 | nofix | log4jv1 | |
| YES | CVE-2021-45046 | 9.0 | Critica | 7/8 | 2.0-beta9 | 2.15.0 esclusa 2.12.2 | 2.12.2/2.16.0 | log4jv2 |
| YES | CVE-2022-23305 | 9.8 | Critica | 1.2.0 | 1.2.17 | nofix / 1.2.18.1 | log4jv1, reload4j | |
| YES | CVE-2022-23307 | 9.8 | Critica | 1.2.0 | 1.2.17 | nofix / 1.2.18.1 | log4jv1, reload4j | |
| YES | CVE-2022-23302 | 8.8 | Alta | 1.0 | 1.2.17 | nofix / 1.2.18.1 | log4jv1, reload4j | |
| YES | CVE-2021-4104 | 7.5 | Alta | - | 1.0 | 1.2.17 | nofix | log4jv1 |
| YES | CVE-2021-44832 | 6.6 | Media | 6/7/8 | 2.0-alpha7 | 2.17.0, esclusa 2.3.2/2.12.4 | 2.3.2/2.12.4/2.17.1 | log4jv2 |
| - | CVE-2021-42550 | 6.6 | Media | - | 1.0 | 1.2.7 | 1.2.8 | logback |
| YES | CVE-2021-45105 | 5.9 | Media | 6/7/8 | 2.0-beta9 | 2.16.0, esclusa 2.12.3 | 2.3.1/2.12.3/2.17.0 | log4jv2 |
| - | CVE-2020-9488 | 3.7 | Bassa | 7/8 | 2.0-alpha1 | 2.13.1 | 2.12.3/2.13.2 | log4jv2 |
Ogni istanza viene segnalata con l'elenco appropriato di CVE. Per ogni CVE, il file della libreria log4j viene analizzato per verificare se le soluzioni alternative raccomandate (ad es. JndiLookup.class o JMSAppender.class rimossi) sono state applicate e in tal caso è considerato non vulnerabile. Lo stato STRANGE viene segnalato per archivi con file pom.properties di log4j-core, ma senza classi di bytecode effettive, di solito si tratta di pacchetti sorgente e possono essere ignorati.
Attenzione La funzionalità
--fixè sperimentale, usala a tuo rischio, assicurati di eseguire il backup dei tuoi file jar prima di usarla.
L'argomento --fix tenta di rinominare le istanze di JndiLookup.class in JndiLookup.vulne, impedendo così il caricamento della classe. All'interno degli archivi Java viene eseguito tramite rinomina in-place, non richiede la rizippatura dell'archivio ed è istantaneamente veloce.
I binari sono disponibili per Linux 64bit, MS Windows 64bit e 32bit - vedi Releases
La versione minima supportata di Python è 3.8. Secondo i miei test, l'implementazione zip di Python 3.6 non può aprire molti file
.jardai miei dati di test.
log4shell finder è ottimizzato per prestazioni e basso consumo di memoria.
Aggiornato il 23.1.2022, prestazioni misurate su una directory con 26237 file in 2005 cartelle.
Tempo di esecuzione ridotto della metà, consumo di memoria di 2/3, letture del file system di almeno il 90%
Command being timed: "./test_log4shell.py /home/hynek/war/ --exclude-dirs /mnt --same-fs"
User time (seconds): 17.68
System time (seconds): 1.20
Percent of CPU this job got: 127%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:14.47
Maximum resident set size (kbytes): 64144
File system inputs: 114424
Command being timed: "./log4j-finder.py /home/hynek/war/"
User time (seconds): 23.59
System time (seconds): 1.09
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.18
Maximum resident set size (kbytes): 38604
File system inputs: 142824
Command being timed: "java -jar log4j-detector-latest.jar /home/hynek/war"
User time (seconds): 30.56
System time (seconds): 1.39
Percent of CPU this job got: 113%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:28.26
Maximum resident set size (kbytes): 214116
File system inputs: 14416
Command being timed: "./log4j2-scan /home/hynek/war --scan-log4j1 --scan-zip"
User time (seconds): 52.05
System time (seconds): 25.32
Percent of CPU this job got: 88%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:27.86
Maximum resident set size (kbytes): 593080
File system inputs: 215416
all--no-csv-header per omettere l'intestazione csv per consentire un più facile unione dei risultati da più host--threads per regolare manualmente il numero di thread di scansione--cvs-clean per scrivere una riga "CLEAN" nell'output csv in caso non venga rilevata alcuna libreria log4j--cvs-stats per scrivere una riga "STATS" nell'output csv con tempo di esecuzione in secondi e numero di file e cartelle scansionati--fix nelle versioni 1.19 e 1.20 poteva corrompere gli archivi .jar.Per le modifiche precedenti vedi Release Notes