如何缓解 Log4j 1.2 版本中的 Log4Shell 漏洞?

mli*_*ner 19 log4j log4shell

我有一个非常旧的Solr版本,我一直在尝试查看它是否受到每个人都担心的Log4Shell 漏洞( CVE-2021-44228 ) 的影响。

CVE似乎只适用于更高版本,但一位同事并不买账,所以我试图找出真相。

mli*_*ner 23

我大约 95% 确信这对于旧版本的 Log4j 来说没问题。三个原因:

  1. 我的是1.2版本。我在系统上找到了 Log4j JAR 文件,将其解压缩,然后查找任何提及 JNDI 的内容:

    find / -iname '*log4j*'
    unzip /etc/opt/jetty/lib/ext/log4j-1.2.17.jar | grep -i jndi
    
    Run Code Online (Sandbox Code Playgroud)

    那什么也没带回来,所以我在那里感觉很好。CVE 表示您通常可以通过查看 JAR 文件来找到某些内容。它建议你这样做:

     zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    
    Run Code Online (Sandbox Code Playgroud)

    那对我没有任何作用。

  2. 我深入研究了Log4j 的变更日志。对于 2.0-beta9 版本,它说:

    添加 JNDILookup 插件。修复 LOG4J2-313。感谢高云山。

    所以我认为可以肯定地说,在此之前 Log4j 中不存在 JNDI。添加它的 Jira 票证在这里。

  3. 我查看了1.2版本的旧手册并将其与最新版本进行了比较。最新的“查找”部分解释了 JNDI 的工作原理。在 1.2 版本中,该部分不存在。

我觉得这……还好吧?

  • 但请记住,Log4j 1 已于 **2015** 终止生命周期。无论哪种方式,您都应该切换到不同的日志记录框架,无论是 Log4j 2、Logback 还是其他框架。 (2认同)
  • 如果使用“JMSAppender”,log4j 1.x 似乎容易受到攻击。请参阅https://github.com/apache/logging-log4j2/pull/608#issuecomment-990494126 (2认同)
  • @Maksim,阅读这些评论,似乎 log4j 1.x 中的漏洞比此处介绍的要少得多。他们似乎陷入了“你应该升级,但你的房子没有着火”的境地。例如,[此](https://github.com/apache/logging-log4j2/pull/608#issuecomment-991723301) 表明 1.x 漏洞依赖于使用可能不那么常见的特定配置。不过,我对 Java 并不熟悉,所以如果我遗漏了什么,请纠正我。 (2认同)

rob*_*bob 8

Ralph Goers(Apache Log4J 维护者)说:

\n
\n

该漏洞有两个方面。

\n
    \n
  1. Log4j 2\xe2\x80\x99s 查找机制(属性解析器)正在记录的消息文本上执行。这意味着,如果应用程序正在记录用户输入(几乎每个人都这样做),则用户可能会导致调用查找机制。
  2. \n
  3. Log4j 2 在多个地方支持 JNDI,包括作为查找。JNDI 本身非常不安全。这些因素的综合影响使其成为 Log4j 2 的严重严重问题。Log4j 1 和 Logback 都具有使用 JNDI 的组件,并且都没有采取任何措施来限制 JNDI 漏洞。对于 Log4j 1,它是 JMS\nAppender。曝光较小,但仍然存在。如果某人\n可以访问日志记录配置,他们\n可能会导致不好的事情发生。
  4. \n
\n
\n

因此,结论是 Log4J 1.x 是安全的,并且不会受到 Log4Shell 的影响,除非您使用 JMS 附加程序。在这种情况下,您必须分析您在附加程序中所做的事情。

\n

  • 参考链接?我似乎找不到 Goers 在哪里发布了此内容。 (2认同)

归档时间:

查看次数:

26425 次

最近记录:

3 年,4 月 前