当前位置: 首页 > 知识库问答 >
问题:

Log4j 1:如何在不将版本更新为2.15的情况下缓解Log4j中的漏洞。0

关学
2023-03-14

我使用的是log4j1.2。16.我将其用于maven selenium testng java项目。我正在寻找一个不升级log4j版本的解决方案。

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
</dependency>

共有2个答案

仉昱
2023-03-14

由于您使用的是log4j 1,因此不存在特定的漏洞。但是,请注意以下几点:http://slf4j.org/log4shell.html:

log4j 1. x是否存在漏洞?鉴于log4j版本1. x的部署仍然非常广泛,可能是log4j 2. x的10倍,我们收到了一系列关于log4j版本1. x漏洞的问题。

如log4j1所示。x不提供消息级别的JNDI查找机制,它不受CVE-2021-44228的影响。

但是,log4j 1. x附带了JMSAppender,如果在log4j的配置文件中启用,它将执行JNDI查找,即log4j.properties或log4j.xml.

已经对log4j配置文件具有写访问权限的攻击者需要将JMSAppender添加到被恶意连接参数毒害的配置中。请注意,先前合法使用JMSAppender与攻击者成功发起攻击的能力无关。

还要注意的是,仅对配置文件下毒是不够的。攻击者还需要强制log4j重新加载带有有毒参数的配置文件。考虑到log4j1。x不提供自动重新加载,中毒的配置文件通常只在应用程序重新启动时生效。

然而,这种攻击虽然不容易,但也不是不可能的。因此,通过从log4j-1.2.17.jar.中完全删除JMSAppender,使攻击者的工作更加困难是有意义的

在没有新的log4j 1的情况下。在x版本中,您可以从log4j-1.2中删除JMSAppender。17.jar人工制品你自己。命令如下:

zip -d log4j-1.2.17.jar org/apache/log4j/net/JMSAppender.class

如果无法访问zip,也可以使用jar命令。

#assuming log4j-1.2.17.jar exists in current directory
mkdir tmp
cd tmp
jar xvf ../log4j-1.2.17.jar
rm org/apache/log4j/net/JMSAppender.class
jar cvf ../log4j-1.2.17-patched.jar .

不用说,一旦log4j-1.2。17.jar已修补,您需要部署它。

糜宜民
2023-03-14

另一个答案是不正确的。版本1还存在一个漏洞。x、 CVE-2021-4104https://access.redhat.com/security/cve/CVE-2021-4104:

在1. x版的Java日志库Apache Log4j中发现一个缺陷。Log4j 1. x中的JMSAppender易受不受信任数据反序列化的攻击。如果部署的应用程序被配置为使用JMSAppender和攻击者的JMS Broker,则远程攻击者可以在服务器上执行代码。

为了缓解这一脆弱性:

这些是版本1中此缺陷的可能缓解措施。x:

  • 注释掉或删除Log4j配置中的JMSApender(如果使用)

zip-q-d log4j-*。jarorg/apache/log4j/net/JMSAppender。班

  • 限制操作系统用户在运行应用程序的平台上的访问,以防止攻击者修改Log4j配置
 类似资料:
  • 我有一个非常旧的Solr版本,我一直在试图看看它是否受到每个人都很害怕的Log4Shell漏洞的影响(CVE-2021-44228)。 CVE似乎只适用于更高版本,但一位同事不买账,所以我试图找出真相。

  • 正如标题所说,我想知道更新Java的最佳途径。如果可能的话,我希望过程简单到只更新到最新的jdk8uXXX。

  • 问题内容: 我在我的网站上设置了一个滑动面板。 完成动画制作后,我像这样设置哈希 (这是一个回调,并且在前面已分配)。 这很好用,可以使用户在面板上添加书签,也可以使非JavaScript版本正常工作。 但是,当我更新哈希时,浏览器跳到该位置。我想这是预期的行为。 我的问题是:如何预防这种情况?即如何更改窗口的哈希值,但是如果哈希值存在,浏览器 不能 滚动到该元素?某种东西吗? 我正在使用jQue

  • 我正在使用咖啡因缓存,并寻找一种方法来更新缓存中的值,而不更改其过期时间。 场景是我使用缓存来加速数据加载。数据更改延迟5秒是可以接受的,而我希望返回速度很快。此外,我希望这些缓存在第一次命中1天后过期,以避免不必要的内存使用。 因此,我希望每个缓存的密钥持续一天,但其值每5秒更新一次。 方法似乎已关闭,但刷新持续时间后的第一个返回值仍然是旧值。这对我来说并不理想,因为两次点击之间的持续时间可能是

  • 问题内容: 我在JSF页面中有这3个字段 我也有一个具有以下属性的后备豆: 我希望在将某些值插入字段val1和val2中而不刷新页面时,outputText元素自动更改其值。结果变量应以这种方式计算(它正在计算百分比):(val1 * val2)/ 100 您能帮我解决我的一些疑问吗?: 我知道为此,我需要javascript或AJAX之类的东西。您认为最好的方法是什么? 我很想知道我如何使用AJ

  • 如何检测SonarQube LTS 8.2版本中的log4j漏洞。 我尝试了这个社区参考,但是找不到8.2版本的。 https://community.sonarsource.com/t/sonarqube-sonarcloud-and-the-log4j-vulnerability/54721