
Сканирует jar, war и ear файлы на наличие JndiLookup.class для обнаружения приложений, уязвимых к CVE-2021-44228 (Log4Shell).
Оригинальный скрипт и репозиторий: https://github.com/CERTCC/CVE-2021-44228_scanner
Изменено: Алекс Пена (Alex Pena)
Приложения, уязвимые для проблемы log4j CVE-2021-44228, могут быть обнаружены путём сканирования jar-, war- и ear-файлов на наличие JndiLookup.class.
Любой обнаруженный файл заслуживает проверки, чтобы определить, уязвимо ли использующее его приложение. Для любого присутствующего JndiLookup.class log4j обычно содержит версию в имени jar-файла. Например, попадание в log4j-core-2.14.1.jar будет указывать на уязвимое приложение. Альтернативно, log4j-core-2.16.jar также может дать совпадение, поскольку код JndiLookup всё ещё присутствует в версии 2.16 log4j, но он отключён по умолчанию. Дополнительную информацию см. в VU#930724.
Параметры
-Force Разрешить сканирование системных и скрытых файлов (параметр Force не переопределяет ограничения безопасности)
-Verbose Дополнительный вывод сканирования и сообщения
Сканировать текущий каталог
.\checkjndi.ps1
Сканировать каталог test_folder с дополнительным выводом и сканированием системных/скрытых файлов
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
Например, вот вызов версии сканера на PowerShell:

Пути для сканирования можно передавать в скрипт через конвейер, чтобы контролировать, что проверяется. Например, для сканирования списка путей, содержащихся в файле paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Давайте посмотрим на первое совпадение из нашего выполнения сканирования на Windows:
C:\Users\unst0\Desktop\test_folder\apache-log4j-2.17.1-bin.zip содержит apache-log4j-2.17.1-bin/log4j-core-2.17.1.jar содержит org/apache/logging/log4j/core/lookup/JndiLookup.class ** НО КАЖЕТСЯ ИСПРАВЛЕННЫМ **
Этот jar-файл содержит версию 2.17 log4j, которая не уязвима для CVE-2021-44228. Этот результат сообщается для информации, показывая, что поставщик исправил свой продукт.
Давайте посмотрим на второе совпадение:
WARNING: C:\Users\unst0\Desktop\test_folder\ghidra_10.0.4_PUBLIC_20210928.zip содержит ghidra_10.0.4_PUBLIC/Ghidra/Framework/Generic/lib/log4j-core-2.12.1.jar содержит org/apache/logging/log4j/core/lookup/JndiLookup.class
Здесь мы видим, что Ghidra использует log4j версии 2.12.1, и, следовательно, мы должны считать его уязвимым. И действительно, версии Ghidra до 10.1 уязвимы для CVE-2021-44228.
Давайте посмотрим на третье совпадение:
WARNING: C:\Users\unst0\Desktop\test_folder\server.jar содержит META-INF/libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar содержит org/apache/logging/log4j/core/lookup/JndiLookup.class
Здесь мы видим, что файл server.jar Minecraft использует log4j версии 2.14.1, и, следовательно, мы должны считать его уязвимым. И действительно, версии сервера Minecraft: Java Edition до 1.18.1 уязвимы для CVE-2021-44228.
Вам следует изучить любые совпадения, сообщённые любым из этих скриптов, и убедиться, что либо версия log4j действительно является исправленной версией 2.16, либо обратиться к вашему поставщику программного обеспечения для получения исправленной версии. Альтернативно, VU#930724 содержит информацию о том, как JndiLookup.class может быть удалён из уязвимых jar-файлов.
Версия сканера на PowerShell имеет дополнительные сообщения об ошибках, когда файлы или каталоги не могут быть исследованы. В частности, любые ошибки Unable to scan, сообщающие об UnauthorizedAccessException, указывают на проблему с правами доступа к каталогу и/или файлу. Любые ошибки Unable to scan, сообщающие об InvalidDataException, обычно вызваны повреждённым архивом.