原文链接:https://www.jylt.cc/#/detail?id=7a5e2df603b098b9a08bc1b71ca80a15
2021年12月10日晚上,许许多多开发小伙伴都要被迫加班了,只因为Log4j曝出了一个影响特别广的大bug。
在12月11日早上,各个头条都推送了该bug的消息。因为之前有过FastJson
等漏洞曝出,没意识到这次漏洞的严重性,也就没有太在意。
下午的时候公司安全部门就发通知要求所有业务线都要做该版本的安全更新,才意识到原来这么严重。😅
何为log4j
Log4j全称是
log for java
,也就是java 日志框架
,是Apache的一个开源项目,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
正是因为Log4j的易用性、高性能,使其在IT项目中赫赫有名,使用率也比较高。
漏洞说明
- 攻击者利用该漏洞可获得服务器权限;
- 漏洞攻击代码可以造成业务拒绝服务甚至宕机;
- 漏洞利用方法极其简单;
- log4j依赖包在java工程大量使用,该漏洞影响广泛;
影响范围
Apache log4j 版本区间 [2.0, 2.14.1]
解决方案
升级 log4j 版本,将Log4j相关依赖升级到最新版本2.15.0
。并不仅仅log4j-core
。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
检查项目中Log4j版本
在项目pom.xml
目录执行命令,一一查看log4j版本是否还有在[2.0, 2.14.1]内的依赖,如果有,将其从项目中排除即可。手动排除以来比较麻烦,可以参考IDEA插件分享中Maven Helper
的使用。
mvn dependency:tree