Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
hotpatch-for-apache-log4j2 — An agent to hotpatch the log4j RCE from CVE-2021-44228. | Kitploit
Инструменты/GitHubGitHub/corretto/hotpatch-for-apache-log4j2
Defensive ToolsVulnerability AnalysisExploitationSupply Chain SecurityIncident Response
GitHubcorretto/hotpatch-for-apache-log4j2

hotpatch-for-apache-log4j2

An agent to hotpatch the log4j RCE from CVE-2021-44228.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
497723 лет назадПроверено Kitploit

Log4jHotPatch

Это инструмент, который внедряет Java-агент в работающий процесс JVM. Агент попытается исправить метод lookup() всех загруженных экземпляров org.apache.logging.log4j.core.lookup.JndiLookup, чтобы безусловно возвращать строку "Patched JndiLookup::lookup()". Он предназначен для устранения уязвимости удаленного выполнения кода CVE-2021-44228 в Log4j без перезапуска Java-процесса. Этот инструмент также устраняет CVE-2021-45046.

В настоящее время протестировано только с JDK 8, 11, 15 и 17 на Linux!

Сборка

Gradle

Для сборки на Linux, Mac и подсистеме Windows для Linux

root@kitploit:~
./gradlew build

Для сборки на Windows

root@kitploit:~
.\gradlew.bat build

В зависимости от платформы, на которой вы собираете. Будет сгенерирован файл build/libs/Log4jHotPatch.jar.

Maven

Для сборки с помощью Maven используйте

root@kitploit:~
mvn clean package

Это создаст файл target/Log4jHotPatch.jar.

Запуск

JDK 8

root@kitploit:~
java -cp <java-home>/lib/tools.jar:Log4jHotPatch.jar Log4jHotPatch <java-pid>

JDK 11 и новее

root@kitploit:~
java -jar Log4jHotPatch.jar <java-pid>

Запуск статического агента

Просто добавьте агент в командную строку Java следующим образом:

root@kitploit:~
java -classpath <class-path> -javaagent:Log4jHotPatch.jar <main-class> <arguments>

Тестирование агента

Существует набор тестов, которые можно запустить вне Gradle или Maven.

root@kitploit:~
build-tools/bin/run_tests.sh Log4jHotPatch.jar <JDK_ROOT>

Известные проблемы

Если вы получите ошибку вроде:

root@kitploit:~
Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: The VM does not support the attach mechanism
	at jdk.attach/sun.tools.attach.HotSpotAttachProvider.testAttachable(HotSpotAttachProvider.java:153)
	at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:56)
	at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
	at Log4jHotPatch.loadInstrumentationAgent(Log4jHotPatch.java:115)
	at Log4jHotPatch.main(Log4jHotPatch.java:139)

это означает, что ваша JVM отказывается от любой помощи, поскольку запущена с флагом -XX:+DisableAttachMechanism.

Если вы получите ошибку вроде:

root@kitploit:~
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
	at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
	at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
	at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
	at Log4jHotPatch.loadInstrumentationAgent(Log4jHotPatch.java:182)
	at Log4jHotPatch.main(Log4jHotPatch.java:259)

это означает, что вы запущены от имени другого пользователя (включая root), отличного от целевой JVM. JDK 8 не может выполнять патчинг от пользователя root (и вызывает дамп потоков в целевой JVM, что безвредно). В JDK 11 патчинг процесса не-root от процесса root работает нормально.

Если вы получите ошибку вроде этой в целевом процессе:

root@kitploit:~
Exception in thread "Attach Listener" java.lang.ExceptionInInitializerError
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
        at sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:411)
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "log4jFixerAgentVersion" "write")
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
        at java.security.AccessController.checkPermission(AccessController.java:886)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.System.setProperty(System.java:794)
        at Log4jHotPatch.<clinit>(Log4jHotPatch.java:66)

это означает, что в целевом процессе установлен менеджер безопасности. Ищите этот параметр командной строки в целевом процессе:

root@kitploit:~
-Djava.security.policy=/local/apollo/.../apollo-security.policy

Если вы столкнулись с этой ошибкой, убедитесь, что используете последнюю версию инструмента

Важно: Если вы пытались выполнить патчинг от неправильного пользователя, возможно, вам потребуется удалить файлы .attach_pid<pid> (находящиеся в /tmp и/или рабочем каталоге процесса JVM) перед повторной попыткой. Эти файлы должны иметь правильное владение для успешного присоединения.

Скачать инструмент