1. 漏洞分析
2021年12月9日,apache log4j2开源日志记录组件发现一个未编号的远程代码执行漏洞。
此漏洞来源于log4j-core-2.*.jar,(简单来说攻击者利用此漏洞可以远程攻击、接管接入互联网运行的java应用),保守估计此漏洞分值至少9.8,属于危急漏洞
分值介绍:


建议重点修复外网可直接访问java的应用。
2. 影响范围及风险
All versions from 2.0-beta9 to 2.16.0, excluding 2.12.3
2.0>=影响范围 <=2.16 (根据apache最新文档,2.16仍然修复不完整)


利用此漏洞,可以直接弹出本地的计算器
3. 排查
检查java应用程序lib目录下是否存在 log4j-core-2.*.0.jar文件,如果*的范围是在影响范围内,那么需要重点关注,并修复。
此外,只要有使用上面版本的log4j的其他 产品本身也需要检查。
4. 整改建议
升级到 Log4j 2.3.1(适用于 Java 6)、2.12.3(适用于 Java 7)或 2.17.0(适用于 Java 8 及更高版本)
4.1 升级版本到2.17.0(jdk8用户或更改版本)
示例:用下面2个jar替换旧版本的log4j 2
log4j-api-2.17.0.jar
log4j-core-2.17.0.jar
下载路径: https://dlcdn.apache.org/logging/log4j/2.17.0/apache-log4j-2.17.0-bin.zip
更改后需重启server生效,一般来说同大版本下更新小版本不影响功能使用,请先测试环境验证。
4.2 升级版本到2.12.3(jdk7用户)
示例:用下面2个jar替换旧版本的log4j 2
log4j-api-2.12.3.jar
log4j-core-2.12.3.jar
下载路径: https://archive.apache.org/dist/logging/log4j/2.12.3/apache-log4j-2.12.3-bin.zip
更改后需重启server生效,一般来说同大版本下更新小版本不影响功能使用,请先测试环境验证。
4.3 升级版本到2.3.1(jdk6用户)
示例:用下面2个jar替换旧版本的log4j 2
log4j-api-2.3.1.jar
log4j-core-2.3.1.jar
下载路径: https://archive.apache.org/dist/logging/log4j/2.3.1/apache-log4j-2.3.1-bin.zip
更改后需重启server生效,一般来说同大版本下更新小版本不影响功能使用,请先测试环境验证。
4.4 临时解决方案(废弃)
如果当前版本是:
2.10.0<=当前版本<= 2.14.1
在启动jvm中添加如下参数可以修复此漏洞
-Dlog4j2.formatMsgNoLookups=true
示例:
Tomcat:
修改catalina.sh
export
JAVA_OPTS="$JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true"
重启后验证 ps -ef |grep java 是否加入了上面参数
4.3 临时解决方案(对CVE-2021-45105无效)
如果当前版本是:
2.0<=当前版本<= 2.15
使用下面命令删除 JndiLookup 类
示例:
进入log4j-core-*.jar 包的目录,执行
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
把删除了JndiLookup 类的log4j-core-*.jar替换原始的
重启后对应的server
删除此类不会对系统功能使用造成影响
5. 参考:
https://logging.apache.org/log4j/2.x/download.html
https://issues.apache.org/jira/browse/LOG4J2-3198
https://securityonline.info/apache-log4j2-remote-code-execution-vulnerability-alert/




