
Сканеры для JAR-файлов, которые могут быть уязвимы для CVE-2021-44228
Приложения, уязвимые к проблеме log4j CVE-2021-44228, могут быть обнаружены путем сканирования файлов jar, war и ear на наличие JndiLookup.class.
В зависимости от исследуемой платформы, может иметь смысл запустить скрипт PowerShell или Python3. В обоих случаях необязательным аргументом является корневой каталог, с которого вы хотите начать поиск.
Любой обнаруженный файл стоит исследовать, чтобы определить, уязвимо ли использующее его приложение. Для любого присутствующего JndiLookup.class log4j обычно включает версию в имя jar-файла. Например, совпадение с log4j-core-2.14.1.jar будет указывать на уязвимое приложение. Альтернативно, log4j-core-2.16.jar также может дать совпадение, потому что код JndiLookup все еще присутствует в версии 2.16 log4j, но он отключен по умолчанию. Подробнее см. VU#930724.
Например, вот вызов версии сканера на PowerShell: 
Аналогично, вот вызов версии на Python3: 
Наконец, вот вызов версии на Bash:

Обратите внимание, что версии этого скрипта на Bash и Python по дизайну ограничивают сканирование одной файловой системой.
В версии для PowerShell пути для сканирования можно передавать в скрипт через конвейер, чтобы контролировать, что проверяется. Например, для сканирования списка путей, содержащихся в файле paths.txt:
get-content .\paths.txt | .\checkjndi.ps1
Давайте посмотрим на первое совпадение при выполнении сканирования в Windows:
WARNING: C:\tmp\2.15\log4j-core-2.15.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
Судя по имени jar-файла, это библиотека из log4j 2.15. Хотя эта версия log4j исправляет CVE-2021-44228, она все еще содержит недостаток, описанный как CVE-2021-45046. Влияние CVE-2021-45046 — отказ в обслуживании только для определенных Java-приложений, использующих log4j 2.15. Для Java-приложений, использующих версии log4j до 2.15 и также удовлетворяющих предварительным условиям для применения CVE-2021-45046, влияние — RCE.
Давайте посмотрим на второе совпадение:
C:\tmp\2.16\log4j-core-2.16.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
Этот jar-файл содержит версию log4j 2.16, которая не уязвима к CVE-2021-44228. Этот результат сообщается для информации и показывает, что поставщик исправил свой продукт.
Давайте посмотрим на третье совпадение:
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
Здесь мы видим, что Ghidra использует log4j версии 2.12.1, и поэтому мы должны предположить, что она уязвима. И действительно, версии Ghidra до 10.1 уязвимы к CVE-2021-44228.
Вам следует исследовать любые совпадения, сообщенные любым из этих скриптов, и подтвердить, что версия log4j действительно исправленная 2.16, или обратиться к поставщику программного обеспечения для получения исправленной версии. Альтернативно, VU#930724 содержит информацию о том, как JndiLookup.class может быть удален из уязвимых jar-файлов.
Версия сканера для PowerShell имеет дополнительное сообщение об ошибках, когда файлы или каталоги не могут быть исследованы. В частности, любые ошибки Unable to scan, сообщающие UnauthorizedAccessException, указывают на проблему с разрешениями при доступе к каталогу и/или файлу. Любые ошибки Unable to scan, сообщающие InvalidDataException, обычно вызваны поврежденным архивом.