暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache Log4j 远程代码执行漏洞(CVE-2021-44228、CVE-2021-45046)修复方案

闵栋 2022-12-23
737


漏洞概述




漏洞名称:Apache Log4j 远程代码执行漏洞(CVE-2021-44228、CVE-2021-45046)

影响范围:Apache Apache Log4j2 >= 2.0
Apache Apache Log4j2 <= 2.15.0-rc1

漏洞描述:由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特别构造的数据请求包,可在目标服务器上执行任意代码。

漏洞扫描结果:

    - log4j-core
    当前安装版本:2.8.2
    应用相关信息:
    - 应用路径:/opt/cloudera/cm/common_jars/log4j-core-2.8.2.f3f743bada8d698e2d116e5c9951fe2f.jar
    - log4j-core
    当前安装版本:2.8.2
    应用相关信息:
    - 应用路径:/opt/cloudera/cm/lib/log4j-core-2.8.2.jar
    - log4j-core
    当前安装版本:2.8.2
    应用相关信息:
      - 应用路径:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/log4j-core-2.8.2.jar


    漏洞相关介绍参考网上相关资料:

    http://www.nsfocus.net/vulndb/62211


    解决方案




    1、解决方案一 

    升级log4j版本到Apache Log4j 2.15.1-rc1以上版本

    下载链接:

    https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.1-rc1

    https://logging.apache.org/log4j/2.x/download.html

    也可以到maven里面下载jar包替换升级。

    下载链接:

    https://search.maven.org/artifact/org.apache.logging.log4j/log4j-core/2.19.0/jar

    下载方法:


    2、解决方案二

    不升级版本,删除jar包中的JndiLookup.class即可。

    由于 CDH/HDP/CDP 等大数据平台中,背后的大数据组件众多,并不是每一个组件背后的社区都能快速响应,修复上述 LOG4J JNDI 系列漏洞并提供正式的修复版本,所以 CDH/HDP/CDP 等大数据平台中,快速应对LOG4J的JNDI系列漏洞,采用的思路,就是使用上述临时解决方案,即删除类加载路径上的危险类 JndiLookup.class(本质是因为,这些大数据组件底层,都没有使用到 LOG4J 的“JNDI Lookup plugin support” 功能)。

    同时,为进一步简化临时解决方案的实施难度,Cloudera 在 GitHub 上提供了系列脚本,来辅助删除 CDH/HDP/CDP 等大数据平台上的危险类 JndiLookup.class。

    大家可以去 GITHUB 自行下载,GITHUB 下载链接如下:https://github.com/cloudera/cloudera-scripts-for-log4j.git

    备用下载链接:

    链接:https://pan.baidu.com/s/1UV_CXPkyiyyquYz4zTEtwA?pwd=YYDS 

    提取码:YYDS

    CDH6.3集群中,使用上述官方辅助脚本修复命令如下:sh run_log4j_patcher.sh cdh;

    3、解决方案三

    备用解决方案,手工删除命令,如下:

      #查找低版本log4j-core位置
      find / -name log4j-core-*
      #查看进程中有用到log4j相关的程序
      ps -ef|grep log4j


      # 查看是否存在JndiLookup.class
      jar -tf log4j-core-2.8.2.jar |grep 'log4j'|grep 'Jndi'
      备注:log4j-core另外还有其他命名


      # 删除JndiLookup.class
      zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
       备注:当log4j-core的文件名不是log4j-core-2.8.2.jar,
       相对路径可能不是这个org/apache/logging/log4j/core/lookup 
       
       # 验证是否存在JndiLookup.class
      jar -tf log4j-core-2.8.2.jar |grep 'log4j'|grep 'Jndi'
      备注:log4j-core另外还有其他命名

       一个一个删,也挺费劲的哈,该解决方案不推荐,但是可以作为备选或者验证方案使用。

      文章转载自闵栋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论