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

Log4j漏洞-Log4j 1.2.17是否存在漏洞(无法在源代码中找到任何JNDI代码)?

居乐池
2023-03-14

关于已经在CVE-2021-44228发现的Log4j JNDI远程代码执行漏洞-(另见参考文献)-我想知道Log4j-v1.2是否也受到影响,但是我从源代码审查中得到的最接近的是JMS-Appender。

问题是,虽然互联网上的帖子表明Log4j 1.2也存在漏洞,但我找不到相关的源代码。

我是否遗漏了其他人已经确认的东西?

Log4j 1.2在socket server类中似乎有一个漏洞,但我的理解是,首先需要启用该漏洞才能适用,因此与识别的JNDI查找漏洞不同,它不是一个被动威胁。

我的理解是Log4j v1.2不容易受到jndi远程代码执行错误的攻击,对吗?

>

  • Apache Log4j安全漏洞

    无处不在的Log4j工具中的零日对互联网构成了严重威胁

    最差的Apache Log4j RCE零日掉落在互联网上

    “Log4Shell”漏洞对使用“无处不在”Java日志包Apache Log4j的应用程序构成严重威胁

    Cloudflare的这篇博文也指出了与AKX相同的观点。。。。它是从log4j2引入的!

  • 共有3个答案

    宗政权
    2023-03-14

    除了giraffesyo的答案,如果它对任何人都有帮助的话——我编写了这个Bash脚本——它删除了被识别为漏洞的类(链接到Log4j dev线程),并设置属性文件为只读——正如在Red Hat Bugzilla线程中建议的那样。

    注1-它不检查这些类在属性中的任何用法-这纯粹是一种查找和删除的方法-使用风险自负!

    注意2-这取决于安装的zipunzip

    #!/bin/bash
    
    DIR=$1
    APPLY=$2
    
    # Classes to be searched for/removed
    CLASSES="org/apache/log4j/net/SimpleSocketServer.class
    org/apache/log4j/net/SocketServer.class
    org/apache/log4j/net/JMSAppender.class"
    
    
    PROGNAME=`basename $0`
    PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
    
    usage () {
        echo >&2 Usage: ${PROGNAME} DIR [APPLY]
        echo >&2        Where DIR is the starting directory for find
        echo >&2        and   APPLY = "Y" - to perform purification
        exit 1
    }
    
    # Force upper case on Apply
    APPLY=$(echo "${APPLY}" | tr '[:lower:]' '[:upper:]')
    
    # Default Apply to N
    if [ "$APPLY" == "" ] ; then
       APPLY="N"
    fi
    
    # Check parameters
    if [ "$DIR" == "" ] ; then
       usage
    fi
    echo $APPLY | grep -q -i -e '^Y$' -e '^N$' || usage
    
    # Search for log4j jar files - for class file removal
    FILES=$(find $DIR -name *log4j*jar)
    for f in $FILES
    do
       echo "Checking Jar [$f]"
    
       for jf in $CLASSES
       do
          unzip -v $f | grep -e "$jf"
          if [ "$APPLY" = "Y" ]
          then
             echo "Deleting $jf from $f"
             zip -d $f $jf
          fi
       done
    done
    
    # Search for Log4j properties files - for read-only setting
    PFILES=$(find $DIR -name *log4j*properties)
    for f in $PFILES
    do
       echo "Checking permissions [$f]"
    
       if [ "$APPLY" = "Y" ]
       then
          echo "Changing permissons on $f"
          chmod 444 $f
       fi
    
       ls -l $f
    done
    
    卜鹏
    2023-03-14

    虽然不受完全相同的Log4Shell问题的影响,但Apache Log4j团队建议从JAR文件中删除在CVE-2019-17571中存在漏洞的JMSAppender和SocketServer。

    您可以使用zip命令删除受影响的类。将文件名/版本替换为您的:

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

    您可以使用less和grep浏览zip中的文件,例如lesslog4j-1.2.16.jar|grep JMSAppender

    尽管如此,Apache建议您升级到2。如果可能,请选择x版本。根据他们的安全页面:

    请注意,Log4j 1. x已达到生命周期结束,不再受支持。2015年8月后针对Log4j 1. x报告的漏洞未被检查,也不会修复。用户应该升级到Log4j 2以获得安全修复。

    徐俊楚
    2023-03-14

    JNDI特性被添加到Log4j 2.0-beta9中。

    log4j1。因此,x没有易受攻击的代码。

     类似资料:
    • 正如我们在新闻中看到的,针对流行的库报告了一个新的零日漏洞,该漏洞允许攻击者远程执行代码。在我们的应用程序中,我们仍然使用以下依赖项。 是否仅针对报告该问题?或适用于版本是否也是?是否有测试该漏洞的示例代码?

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

    • 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 原理 由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句,并交由服务端执行。命令注入攻击中,Web 服务器没有过滤类似system、eval和exec等函数,是该漏洞攻击成功的主要原因。 实例代码 <?php // code-exe.php: $code=@$_GET['code

    • 我目前的项目完全与大量Spring Boot容器对接。它们中的大多数都是使用log4j2(对于java8,小于2.7)版本构建的。如何充分证明来自JNDI攻击CVE-2021-45105的应用程序? 我知道最好的解决方案是用log4j版本重建这些容器,但这需要时间和预算。 但是,如果我使用下面的命令,在docker compose级别为每个容器禁用查找功能,它能工作吗? “JVM_EXTRA_OP

    • 我使用的是带有Scala 2.12的Databricks群集版本7.3 LTS。这个版本确实使用Log4J。 官方文件说它使用Log4J版本。这是否意味着我没有这个漏洞?如果我这样做了,我可以在集群上手动修补它,还是需要将集群升级到下一个LTS版本?

    • 是否存在一种“内部安全应用程序”场景,其中由于早期的Log4J版本,软件比没有它时更容易受到攻击? 我在下面概述了这个问题的一些细节。 我正在做一些工作来减轻最近Log4J漏洞的风险。我知道有一些方法涉及从组织的所有计算机、服务器、远程桌面等中删除早期Log4J jar文件的所有痕迹,在完成之前,组织被视为“处于危险之中”。然而,我也想知道如此大规模的全面努力支出是否相称[编辑22-12月21日1