1.漏洞描述

Apache Log4j2 是一款优秀的 Java 日志框架。阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞。由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。

由于 Log4j2 作为日志记录基础第三方库,被大量 Java 框架及应用使用,只要用到 Log4j2 进行日志输出且日志内容能被攻击者部分可控,即可能会受到漏洞攻击影响。因此,该漏洞也同时影响全球大量通用应用及组件,例如:

  • Apache Struts2
  • Apache Solr
  • Apache Druid
  • Apache Flink
  • Apache Flume
  • Apache Dubbo
  • Apache Kafka
  • Spring-boot-starter-log4j2
  • List item
  • ElasticSearch
  • Redis
  • Logstash
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/428bead3dca447a78e2510bda2196bff.png#pic_center

2.下面是升级log4J版本的思路和步骤

![在这里插入图片描述](https://img-blog.csdnimg.cn/c74417ccd21a46949daafff4e5a36c51.jpg#pic_center
因为新版本2.16.0的log4j2日志性能更好和安全性更高,所以我们采用新版本的日志打印来提高系统安全和性能,那么如何替换新版本的日志打印,下面是步骤:
步骤1:

修改log4j版本的依赖。

<log4j.version>2.16.0</log4j.version>

pom中添加依赖:

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${log4j.version}</version>
</depenency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${log4j.version}</version>
</dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>${log4j.version}</version>
</dependency><dependency> <!-- 桥接:告诉Slf4j使用Log4j2 --><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${log4j.version}</version>
</dependency><dependency> <!-- 桥接:告诉commons logging使用Log4j2 --><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-jcl</artifactId><version>${log4j.version}</version>
</dependency>

为了方便后期升级可能替换为其他框架,所以我们采用slf4j框架的api来输入日志。所以需要添加对应的桥接依赖。

步骤2:
删除掉原有的log4j版本和logback日志依赖,如果系统中有的话。将系统中的API调用全部修改为根据slf4j的api来调用。


import org.slf4j.Logger;import org.slf4j.LoggerFactory;private Logger logger = LoggerFactory.getLogger(Controller.class);

步骤3:
添加log4j2需要的配置文件,log4j2.xml,而且log4j2版本的日志不再支持properties的配置。

<?xml version="1.0" encoding="UTF-8"?>

<properties><!-- 本地测试日志写路径--><property name="LOG_HOME">/data/home/logs/***</property><property name="FILE_NAME">XXXName</property></properties><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} |-%-5level %logger{80} - %msg%n" /><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/></Console><RollingFile name="info-rolling" fileName="${LOG_HOME}/${FILE_NAME}.log"filePattern="${LOG_HOME}/${LOG_FILENAME}.%d{yyyy-MM-dd}.log"immediateFlush="false"><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss} |-%-5level %logger{80} - %msg%n"/><Policies><TimeBasedTriggeringPolicy interval="24" modulate="true"/></Policies><Filters><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /></Filters><DefaultRolloverStrategy max="15" /></RollingFile><RollingFile name="error-rolling" fileName="${LOG_HOME}/${FILE_NAME}.err"filePattern="${LOG_HOME}/${LOG_FILENAME}-%d{yyyy-MM-dd}.err"immediateFlush="false"><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss} |-%-5level %logger{80} - %msg%n"/><Policies><TimeBasedTriggeringPolicy interval="24" modulate="true"/></Policies><Filters><ThresholdFilter level="warn" onMatch="ACCEPT"onMismatch="DENY" /></Filters><DefaultRolloverStrategy max="15" /></RollingFile></Appenders><Loggers><!-- <Logger name="com.cssweb.test.app" level="trace" additivity="true"><AppenderRef ref="running-log" /> </Logger> --><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><Root level="all"><!-- 这里是输入到控制台--><AppenderRef ref="Console" /><!-- 这里是输入到文件,很重要--><AppenderRef ref="info-rolling" /><AppenderRef ref="error-rolling" /></Root></Loggers>

步骤4:

   前面三步完成的话,其实可以启动试试,但是通常情况下不会成功,因为项目里面还有其他的组件依赖有使用到低版本的日志依赖。会导致我们新版本的日志不起作用

步骤5:
去掉低版本的日志依赖
打开maven工具栏,选中其中需要编译的项目,然后点击show Dependencies然后可以看到整体依赖图哦!

再点击Exclude去掉低版本依赖哦!

这里需要一个个去掉低版本的日志依懒即可!
完结…亲测有用,看到这里麻烦点个赞哦!-------------------------------------------------------------------------------------------------

Apache Log4j 2升级到2.16.0最新版本的解决方案相关推荐

  1. Rasa课程、Rasa培训、Rasa实战Rasa 3.1.0最新版本发布 2022-03-25

    Rasa课程.Rasa培训.Rasa实战Rasa 3.1.0最新版本发布 2022-03-25 Rasa 3.1.0 新版本升级内容 10203:为库日志添加配置选项(通过 env 变量). 1047 ...

  2. ZLMS教学管理平台系统V1.2.0最新版本发布,支持纯Web视频直播点播,还带运营在线支付功能!完全免费提供!...

    ZLMS教学管理平台系统V1.2.0最新版本发布,支持纯Web视频直播,点播!还带在线支付功能! ZLMS 开发团队在综合参考了各方面的合理建议之后,经过两个多月的紧张开发及测试,终于发布V1.2.0 ...

  3. echarts4.8.0最新版本下载,亲测可用

    echarts4.8.0最新版本下载: 百度网盘: https://pan.baidu.com/s/1UTw6mHwXzuBWT5lnYfMLAg 提取码:9vqv

  4. 小月域名防红程序 V2.0最新版本

    介绍: PHP源码_小月域名防红程序V2.0最新版本 网盘下载地址: https://zijiewangpan.com/8872KClCF20 图片:

  5. HG680LC 线刷固件。可救砖!集成了大部分遥控器驱动。安卓9.0最新版本。无语音!~无语音!~介意的不要刷!~CPU支持:晶晨S905L3(B)——理论上通刷L3其他型号机型

    HG680LC 线刷固件.可救砖!集成了大部分遥控器驱动. 安卓9.0最新版本.无语音!~无语音~介意的不要刷!~ CPU支持:晶晨S905L3(B)--理论上通刷L3其他型号机型(M411A测试OK ...

  6. tensorflow2.0对应python版本_TensorFlow2.1.0最新版本安装详细教程

    TensorFlow是一款优秀的深度学习框架,支持多种常见的操作系统,例如Windows10,Mac Os等等,同时也支持运行在NVIDIA显卡上的GPU版本以及仅使用CPU进行运算的CPU版本.此篇 ...

  7. EDA开源仿真工具verilator入门8:verilator 5.0 最新版本仿真玄铁性能对比

    verilator最新已经升级到到了5.005,新版本的verilator在功能上更加完善,加入对Semantic Scheduling算法标准的支持,但因此效率肯定会有所损失,本节将接上一节测试最新 ...

  8. ESXI6.7-7.0最新版本如何封装网卡驱动补丁

    是否在安装esxi6.x的时候遇到过如下报错问题,No Network Adapters,这是因为当前esxi镜像版本中不包含该服务器网卡对应的驱动程序,所以需要我们手工将该网卡型号的驱动添加到esx ...

  9. oracle 119(11.2.0.4),ORACLE 从 11.2.0.1 升级到 11.2.0.4 版本之ORA-00119问题处理纪实

    [oracle@ht_121_90 dbs]$ ps -eaf|grep oracle oracle    1918     1  0 20:31 ?        00:00:00 ora_pmon ...

最新文章

  1. HTML5小游戏《智力大拼图》发布,挑战你的思维风暴
  2. solidworks钣金插件_SolidWorks钣金三圆弧交点如何展开?大神和小白请进
  3. 配置开发者本地hadoop-3.0.0环境
  4. 适配器和绑定 没找到_亚马逊如何收款?附亚马逊收款绑定流程
  5. postgresql数据类型转换
  6. 我的女朋友漏电了–论C++中的失败(failure),缺陷(bug)和异常(exception)
  7. 水面船舶雷达监视-信天翁雷达监视系统
  8. 编写属于自己的Python第三方库
  9. Android加载超大图片
  10. HTML5游子吟网页的完整代码,游子吟教学完整版古诗
  11. 千万不要急着 返城上班!
  12. 2022-2028年中国工业互联网预测性维护(PdM)行业市场调查及未来前景预测报告
  13. 什么是数据分析,主要有什么目的,数据分析的处理流程是什么?
  14. SCSI, IED, SATA 具体是什么
  15. 微信小程序 java校园跑腿服务平台uniapp
  16. Linux如何才能ping通外网(详细设置过程,基于Qracle VM VirtualBox)
  17. ildasm Reflector
  18. 一个假冒的序列号被用来注册Internet Download Manager。IDM正在退出...解决办法
  19. etf持仓如何影响现货金价?
  20. 驱寒药不妨试试这几种食物

热门文章

  1. rust 入门笔记: rustlings(推荐一些学习rust语法的一些非常好的小练习)
  2. 人生没有白读的书,每一本都算数~
  3. Java如何快速获取网站图片
  4. kali中无线密码的破解
  5. 绘声绘影X4 个人MV制作
  6. 一文了解复旦大学NLP实验室的14篇EMNLP 2022长文内容
  7. Kotlin:对let,apply,run,also等作用域函数的理解
  8. 帕德逼近matlab算法,一种基于帕德逼近的通信误差函数逼近方法与流程
  9. uniapp教室实验室会议室预约app源码
  10. 基于FPGA的遥控数字时钟设计