本文介紹了在Log4j XML配置文件中放置格式MsgNoLookup的位置的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用一個XML文件配置我的Log4j。我應該在哪里添加格式MsgNoLookup=true?
<?xml version="1.0" encoding="UTF-8"?>
<!-- Upload files compare config -->
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} %p - %msg%n"/>
</Console>
<!-- http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender -->
<RollingFile name="File" fileName="logs/MyLogFile.log"
filePattern="logs/MyLogFile-%d{yyyy-MM-dd}.log"
ignoreExceptions="false">
<PatternLayout>
<Pattern>%d %p %c{1.} %m%n</Pattern>
</PatternLayout>
</RollingFile>
</appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="File"/>
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</configuration>
<推薦答案-2021-44228 Log4外殼漏洞
如果可以,請按照Apache logging site上的安全詳情建議升級到Log4j2+Java版本。與我最初的帖子相比,此站點已更改;請始終遵循來自阿帕奇網(wǎng)站的建議指南。
之前,針對針對早期版本的Log4j2報告的JNDI查找漏洞,Apache站點建議了一些解決方法。
IMO:這是一個非常嚴重的漏洞,您不應該考慮這些解決方法,當您閱讀本文時,它們可能也幫不上什么忙。升級Log4j JAR文件,并查看下面有關(guān)檢查位置的說明。
-
在啟動VM時設(shè)置系統(tǒng)屬性
log4j2.formatMsgNoLookups
,作為java -Dlog4j2.formatMsgNoLookups=true ...
。將環(huán)境變量
LOG4J_FORMAT_MSG_NO_LOOKUPS
設(shè)置為True。對于從2.0-Beta9到2.10.0的版本,緩解措施是從類路徑中刪除
org/apache/logging/log4j/core/lookup/JndiLookup.class
-請參閱log4j-core-*.jar
。將某些版本的格式模式
%m
替換為%m{nolookups}
在2.14.0
的Java源代碼上運行grep
時找不到LOG4J_FORMAT_MSG_NO_LOOKUPS
,因此不清楚這是否有幫助。
某些JDK版本降低了風險:高于6u211、7u201、8u191和11.0.1的JDK不會受到影響,因為默認情況下會應用到LDAP查找。盡可能升級。
使用Log4j檢查的一些地方
檢查您使用的Java版本是否足夠新:
java -version
掃描您的應用程序發(fā)布結(jié)構(gòu)、應用程序服務器、開發(fā)環(huán)境以查找可能的舊版本Log4j:
find yourReleaseDir -type f -name log4j*jar
如果您不確定您使用的是哪個Log4j版本,請在ZIP工具中打開JAR文件并查看META-INFMANIFEST.MF
-可能有一行包含該版本的詳細信息:
Log4jReleaseVersion: A.B.C
查看每個版本計算機上正在運行的進程,以查看是否有任何打開的文件句柄指向Log4j JAR文件:
lsof | grep log4j
還要掃描機器以驗證Java VM是否為您所期望的版本。這可能會發(fā)現(xiàn)更多要處理的應用程序:
ps -ef | egrep "(java|jdk)" #OR: | grep -v grep
掃描應用程序服務器上的EAR和WAR歸檔文件,以驗證容器歸檔文件中沒有任何嵌入的Log4j JAR文件。您可以使用find
和unzip
命令來執(zhí)行此操作,或者嘗試使用我編寫的ShowClassVersions
類來檢測this answer中的Java編譯器版本。這將打印出WAR和EAR文件中的JAR文件的名稱:
java ShowClassVersions.java app_server_dir |grep log4j
app_server_dir/somewebapp.war => WEB-INF/lib/log4j2-core.jar
這篇關(guān)于在Log4j XML配置文件中放置格式MsgNoLookup的位置的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,