将 formatMsgNoLookups 放在 Log4j XML 配置文件的什么位置

互联网 行业动态 更新时间:2024-06-13 00:19:06

Dun*_*ncG 43

CVE-2021-44228 Log4Shell 漏洞

如果可以,请按照Apache 日志记录站点上的安全详细信息的建议升级到 Log4j2 + Java 版本。自从我原来的帖子以来,这个网站已经改变了;始终遵循 Apache 网站推荐的指南。

Apache 站点之前针对 Log4j2 早期版本报告的 JNDI 查找漏洞提出了一些解决方法。

IMO:这是一个非常严重的漏洞,你不应该考虑这些变通办法,当你阅读本文时,它们可能无论如何都无济于事。升级 Log4j JAR 文件并查看下面关于检查位置的注释。

log4j2.formatMsgNoLookups启动 VM 时 设置系统属性,传递为java -Dlog4j2.formatMsgNoLookups=true .... 将环境变量设置LOG4J_FORMAT_MSG_NO_LOOKUPS为 true。 对于从 2.0-beta9 到 2.10.0 的版本,缓解措施是/apache/logging/log4j/core/lookup/JndiLookup.class从类路径中删除 - 请参阅log4j-core-*.jar. 对于某些版本,将格式模式替换%m%m{nolookups}

在 的 Java 源代码上LOG4J_FORMAT_MSG_NO_LOOKUPS运行时我找不到,所以不清楚这是否有帮助。grep2.14.0

某些 JDK 版本降低了风险:大于 6u211、7u201、8u191 和 11.0.1 的 JDK 由于应用于 LDAP 查找的默认值不受影响。尽可能升级。

一些检查 Log4j 使用的地方

检查您使用的 Java 版本是否足够新:

java -version

扫描您的应用程序发布结构、应用程序服务器、开发环境以查找可能的 Log4j 旧版本:

find yourReleaseDir -type f -name log4j\*jar

如果您不确定您在 ZIP 工具中打开 JAR 文件并查看的 Log4j 版本META-INF\MANIFEST.MF- 可能会有一行包含版本的详细信息:

 Log4jReleaseVersion: A.B.C

查看每台发布机器上正在运行的进程,看看是否有任何打开的 Log4j JAR 文件句柄:

lsof | grep log4j

同时扫描机器以验证 Java VM 是您期望的版本。这可能会发现更多要处理的应用程序:

ps -ef | egrep "(java|jdk)"    #OR: | grep -v grep

扫描应用服务器上的 EAR 和 WAR 档案,以验证容器档案内没有任何嵌入式 Log4j JAR 文件。您可以使用findandunzip命令执行此操作,或者尝试ShowClassVersions我编写的类来检测此答案中的 Java 编译器版本。这将打印出WAR和EAR文件中的 JAR 文件的名称:

java ShowClassVersions.java app_server_dir |grep log4j
app_server_dir/somewebapp.war => WEB-INF/lib/log4j2-core.jar

dpr*_*dpr 18

正如DuncG 所评论的,禁用 Log4j 查找的选项不是配置选项,而是系统属性

log4j2.formatMsgNoLookups

根据您的环境(Spring、独立可执行文件、Tomcat Web 应用程序等),系统属性的设置方式可能会有所不同。从 JAR 文件启动 Java 进程的最简单方法是添加

-Dlog4j2.formatMsgNoLookups=true

到你的命令行:

java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar

@AndyLester 完全正确。我认为“禁用 log4j 查找的选项不是配置选项”这句话会准确说明这一点。 (3认同) @AndyLester 在 log4j.xml 配置中禁用查找的选项将使用 `%m{nolookups}` 而不是在每个模式中仅使用 `%m`。由于没有选项可以通过单个开关禁用对所有模式的查找,因此此选项容易出错(如果没有此参数,模式可能会丢失或稍后添加)。因此,这不是推荐的方法。 (2认同) 由于 Log4j 2.x 至少从三个来源读取属性(参见 [文档](logging.apache./log4j/2.x/manual/configuration.html#SystemProperties)),因此也可以将设置放入应用程序类路径中的“log4j2.ponent.properties”文件中。 (2认同)

小智 7

您可以这样做:%m{nolookups}在布局中。

{nolookups}是您log4j2.formatMsgNoLookups=true在配置 XML 内容中设置属性的方式。

引用 Log4j 源:

public static final boolean FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS = PropertiesUtil.getProperties().getBooleanProperty("log4j2.formatMsgNoLookups", false);

及其javadoc:

LOG4J2-2109 如果为真,MessagePatternConverter 将始终像

%m{不查找}

已配置。

自从:

2.10

更多推荐

放在,配置文件,位置,formatMsgNoLookups,XML

本文发布于:2023-04-20 20:25:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/fb285b99c5e06be5dfd6cf4b0684a653.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:放在   配置文件   位置   formatMsgNoLookups   XML

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!