
Локальный сканер байт-кода для уязвимости Log4JShell (CVE-2021-44228)
Log4jShell Bytecode Detector — это инструмент с открытым исходным кодом, который помогает определить, подвержен ли jar-файл критической уязвимости CVE-2021-44228. Инструмент сканирует jar-файл и сравнивает классы с набором хешей уязвимых классов внутри файла. Хеши были предварительно вычислены для артефактов на Maven Central.
ВАЖНОЕ ОБНОВЛЕНИЕ: Мы расширили список затронутых артефактов на Maven Central. Список содержит 18 816 артефактов. Эти артефакты либо используют log4j-core в качестве объявленной зависимости, либо мы обнаружили в них файлы .class, соответствующие уязвимым версиям log4j-core.
java -cp <ПУТЬ_К_СКАЧАННОМУ_JAR> de.codeshield.log4jshell.Log4JDetector <АБСОЛЮТНЫЙ_ПУТЬ_К_ПРОВЕРЯЕМОМУ_JAR>Если jar затронут, инструмент выводит информацию в командную строку:
CVE-2021-44228 found declared as dependency in META-INF/maven/org.apache.logging.log4j/log4j-core/pom.xml
CVE-2021-44228 found in class file org/apache/logging/log4j/core/net/JndiManager$1.class
java -cp <ПУТЬ_К_СКАЧАННОМУ_JAR> de.codeshield.log4jshell.Log4JProcessDetectorВ log4j была обнаружена серьёзная уязвимость удалённого выполнения кода, затрагивающая версии с 2.0-beta9 по 2.14. Уязвимость признана критической, так как она поразила log4j — одну из наиболее используемых библиотек для логирования в Java. Существует множество ссылок и статей.
Log4j используется (и использовался) практически в любом Java-проекте для целей логирования. Теперь нам нужно понять, какие проекты и библиотеки на самом деле затронуты. Из-за механизма зависимостей Java приложение также может быть уязвимо, если оно транзитивно включает уязвимую версию библиотеки. Проект A включает библиотеку lib транзитивно, если одна из прямых зависимостей B проекта A имеет зависимость от lib. Простой тест на подверженность можно выполнить с помощью дерева зависимостей Maven:
Пример: Выполните команду mvn dependency:tree в проекте Maven.
[INFO] exampleProject:mainProject:jar:0.0.1-SNAPSHOT
[INFO] +- exampleProject:lib-using-log4j:jar:0.0.1-SNAPSHOT:compile
[INFO] | \- org.apache.logging.log4j:log4j-core:jar:2.14.1:compile
Однако эта проверка — лишь первое указание и недостаточна по следующим причинам:
Java-программы часто:
Следовательно, любая библиотека, используемая Java-проектом, может внести уязвимость в ваш проект. Углублённый анализ байткода помогает, и именно его мы публикуем в рамках этого репозитория.
Для сборки этого инструмента выполните
mvn compile
Для сборки исполняемого jar используйте
mvn clean compile assembly:single
Набор хешей уязвимых классов был предварительно вычислен для всего репозитория Maven Central. Хеши классов содержат все хеши, которые мы идентифицировали как байткодно-подобные с помощью технологии Fingerprinting.
Предварительно вычисленная информация включает:
В качестве затронутого диапазона версий мы рассматриваем [2.0-beta9, 2.15) Ссылка.
Этот инструмент использует новую технологию фингерпринтинга байткода для Java, разработанную Андреасом Данном. Основной процесс выглядит следующим образом.
Примечание: Для простоты развёртывания этот репозиторий содержит SHA-хеши уязвимых классов; информация была вычислена с помощью Fingerprinting.
Список хешей и артефактов Maven не является полным. Мы будем регулярно обновлять списки.
Этот инструмент был создан сооснователями CodeShield
Ждём обратную связь!
Мы работаем над расширением списка затронутых артефактов и всегда стремимся улучшить наше предложение. вклад приветствуется
Также поставьте ⭐️ этому репозиторию, если наш сканер помог вам!
Если вам нужна поддержка или вы хотите узнать о наших технологиях, свяжитесь с нами по адресу [email protected].
Ваша команда CodeShield 💚