
Script e repository originali: https://github.com/CERTCC/CVE-2021-44228_scanner
Modificato da: Alex Pena
Le applicazioni vulnerabili al problema log4j CVE-2021-44228 possono essere individuate scansionando file jar, war ed ear per cercare la presenza di JndiLookup.class.
Qualsiasi file scoperto merita un'indagine per determinare se l'applicazione che lo utilizza è vulnerabile. Per ogni JndiLookup.class presente, log4j include comunemente la versione nel nome del file jar. Ad esempio, un'occorrenza su log4j-core-2.14.1.jar sarebbe indicativa di un'applicazione vulnerabile. In alternativa, anche log4j-core-2.16.jar potrebbe produrre un'occorrenza perché il codice JndiLookup è ancora presente nella versione 2.16 di log4j, ma è disabilitato per impostazione predefinita. Consultare VU#930724 per maggiori dettagli.
Parametri
-Force Allow scanning of system and hidden files (The Force parameter doesn't override security restrictions)
-Verbose Extra scanning output and messages
Scansiona la directory corrente
.\checkjndi.ps1
Scansiona la directory test_folder, con output aggiuntivo e scansione dei file di sistema/nascosti
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
Ad esempio, ecco un'invocazione della versione PowerShell dello scanner:

È possibile passare tramite pipe le posizioni da scansionare allo script per avere il controllo su ciò che viene controllato. Ad esempio, per scansionare un elenco di percorsi contenuti in un file paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Diamo un'occhiata al primo risultato della nostra scansione su Windows:
C:\Users\unst0\Desktop\test_folder\apache-log4j-2.17.1-bin.zip contains apache-log4j-2.17.1-bin/log4j-core-2.17.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
Questo file jar contiene una versione 2.17 di log4j, che non è vulnerabile a CVE-2021-44228. Questo risultato viene riportato a scopo informativo e mostra che un fornitore ha corretto il proprio prodotto.
Diamo un'occhiata al secondo risultato:
WARNING: C:\Users\unst0\Desktop\test_folder\ghidra_10.0.4_PUBLIC_20210928.zip contains ghidra_10.0.4_PUBLIC/Ghidra/Framework/Generic/lib/log4j-core-2.12.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Qui possiamo vedere che Ghidra utilizza log4j versione 2.12.1, e pertanto dovremmo presumere che sia vulnerabile. E in effetti, le versioni di Ghidra precedenti alla 10.1 sono vulnerabili a CVE-2021-44228.
Diamo un'occhiata al terzo risultato:
WARNING: C:\Users\unst0\Desktop\test_folder\server.jar contains META-INF/libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Qui possiamo vedere che il file server.jar di Minecraft utilizza log4j versione 2.14.1, e pertanto dovremmo presumere che sia vulnerabile. E in effetti, le versioni del server di Minecraft: Java Edition precedenti alla 1.18.1 sono vulnerabili a CVE-2021-44228.
Dovresti investigare qualsiasi risultato segnalato da uno di questi script e confermare che la versione di log4j sia effettivamente la versione corretta 2.16, oppure contattare il fornitore del software per ottenere una versione corretta. In alternativa, VU#930724 contiene informazioni su come JndiLookup.class può essere rimosso dai file jar vulnerabili.
La versione PowerShell dello scanner ha una segnalazione di errori aggiuntiva quando non è possibile esaminare file o directory. In particolare, qualsiasi errore Unable to scan che riporta UnauthorizedAccessException è indicativo di un problema di autorizzazione nell'accesso a una directory e/o a un file. Qualsiasi errore Unable to scan che riporta InvalidDataException è solitamente dovuto a un archivio danneggiato.