转自:http://www.sohu.com/a/154670296_99890213?qq-pf-to=pcqq.c2c
我选择的是第五种方法解决的。
一、WebLogic Server Security Alert
安全问题描述
WebLogic Server反序列化安全漏洞补丁:CVE-2015-4852;
Apache Commons Collections 3和4,Groovy,Spring,只要目标应用的Class Path中包含这些库,可让readObject()实现任意命令执行。影响比较广泛的就是Apache Commons Collections这个库,中间件基本都会涉及使用此库。
受影响的WLS版本
Oracle WebLogic Server, 版本9及10.0.1mp,10.0.2mp,10.3.2,10.3.3,10.3.4.X10.3.5.X,10.3.6.X, 12.1.1.X,12.1.2.X, 12.1.3.X, 12.2.1.X;
已发布补丁的WLS版本
Oracle WebLogic Server, 版本10.0.1mp,10.0.2mp,10.3.2,10.3.3,10.3.4.X10.3.5.X,10.3.6.X, 12.1.1.X, 12.1.2.X, 12.1.3.X, 12.2.1.X;
Oracle支持weblogic版本补丁
January 2016 CPU Update:
CVE-2015-4852现在修复包括在下面的weblogic补丁集更新(PSU)和更高PSU:
12.2.1.0.1
12.1.3.0.6
12.1.2.0.8
10.3.6.0.13
WLS Release | Required Patches |
12.2.1.0 | 12.2.1.0.0 Patch 22248372 for CVE-2015-4852 |
12.1.3.0 | PSU 12.1.3.0.5 (Patch 21370953) + 12.1.3.0.5 Patch 22248372 for CVE-2015-4852 |
12.1.2.0 | PSU 12.1.2.0.7 (Patch 21364493) + 12.1.2.0.7 Patch 22248372 for CVE-2015-4852 |
10.3.6.0 | PSU 10.3.6.0.12 (Patch 20780171) + 10.3.6.0.12 Patch 22248372 for CVE-2015-4852 |
参考:CVE-2015-4852 Patch Availability Document for Oracle WebLogic Server Component of Oracle Fusion Middleware (文档 ID 2075927.1)
Oracle提供补丁列表
补丁程序名 | 说明 | 发行版 | 平台 (语言) |
22248372 | SU Patch [RMW6]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 10.3.3 | Generic Platform (American English) |
22248372 | SU Patch [JQNK] :10.3.4.0.5 Overlay: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 10.3.4.0.5 | Generic Platform (American English) |
22248372 | SU Patch [JF2L] :10.3.5.0.7 Overlay: MERGE REQUEST ON TOP OF WLS PSU 10.3.5.0.7 FOR BUGS 21495475 22175246 22200449 (补丁程序) | 10.3.5.0.7 | Generic Platform (American English) |
22248372 | SU Patch [L9CG]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 10.3.2.0 | Generic Platform (American English) |
22248372 | SU Patch [YWAF]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 10.3 | Generic Platform (American English) |
22248372 | SU Patch [JH3R]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 10.0.1MP | Generic Platform (American English) |
22248372 | SU Patch [2H6C] :12.1.1.0.12 Overlay: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 12.1.1.0.12 | Generic Platform (American English) |
22248372 | SU Patch [VUMR]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (补丁程序) | 10.0.2MP | Generic Platform (American English) |
22248372 | WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 12.2.1.0.0 | Generic Platform (American English) |
22248372 | WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 12.1.3.0.5 | Generic Platform (American English) |
22248372 | WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 12.1.2.0.7 | Generic Platform (American English) |
22248372 | SU Patch [ZLNA] :10.3.6.0.12 Overlay: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序) | 10.3.6.0.12 | Generic Platform (American English) |
根据自己所打的PSU版本,升级相应对应的补丁。
二、备份weblogic及domain
首先将对应的域文件和中间件安装目录打包备份。
tar{WL_HOME}yyyymmdd.tar{WL_HOME}
tar{MW_HOME}yyyymmdd.tar{MW_HOME}
三、Oracle官方解决方案
查出weblogic的版本号之后,根据补丁列表找到对应的补丁包。
需要执行语句修补的步骤如下:
用Linux主机的weblogic软件安装用户在{MW_HOME}/utils/bsu下执行第一步中查询版本的语句,这时在{MW_HOME}/utils/bsu会生成一个cache_dir文件夹
向这个文件夹上传对应的补丁包并解压
将解压后的patch-catalog_*.xml文件重命名为patch-catalog.xml这个标准文件名,否则系统会出现不自动读取的问题。
回到上一级目录,即{MW_HOME}/utils/bsu下,执行语句vi bsu.sh ,将其中的内存大小改为1G,即MEM_ARGS=”-Xms1521m –Xmx1521m”
修改增加内存:
vi/Oracle/Middleware/utils/bsu/bsu.sh
#!/bin/sh
JAVA_HOME="/Oracle/Middleware/jrockit_160_22_D1.1.1-3"
"$JAVA_HOME/bin/java"-Xms1521m-Xmx1512m-jar patch-client.jar$*
命令行方式
查看版本语句:
/Oracle/Middleware/utils/bsu/bsu.sh-prod_dir=/Oracle/Middleware/wlserver_10.3-status=applied-verbose–view
如果有老补丁已经安装请确认补丁是否被包含此补丁内,卸载补丁后再安装最新补丁,防止冲突
在{MW_HOME}/utils/bsu下,执行补丁安装命令
./bsu.sh-install-patch_download_dir={MW_HOME}/utils/bsu/cache_dir-patchlist={PATCH_ID}-prod_dir={MW_HOME}/{WL_HOME}
为了防止主机连接断开导致安装失败,可以使用后台安装命令
nohup./bsu.sh-install-patch_download_dir={MW_HOME}/utils/bsu/cache_dir-patchlist={PATCH_ID}-prod_dir={MW_HOME}/{WL_HOME}&tail-fnohup.out
例如:
/Oracle/Middleware/utils/bsu/bsu.sh-install-patch_download_dir=/Oracle/Middleware/utils/bsu/cache_dir-patchlist=K25M-prod_dir=/Oracle/Middleware/wlserver_10.3
安装后查看版本:
/Oracle/Middleware/utils/bsu/bsu.sh-prod_dir=/Oracle/Middleware/wlserver_10.3-status=applied-verbose–view
gui方式
设置环境变量:export DISPLAY=192.168.1.2:0.0
执行:
/Oracle/Middleware/utils/bsu/bsu.sh
图形界面
如果没有找不到,补丁程序->刷新 ,弹出验证窗口
检测补丁是否冲突,时间较长
然后点击’应用’
安装完成后
四、Oracle官方建议临时解决方案
不在Oracle 生命周期的weblogic产品建议采用MOS建议的T3协议过滤来缓解漏洞带来的危害
登入weblogic console控制台:
点击base_domain,-> ” 安全 “->” 筛选器 ”
修改连接筛选器,填入weblogic.security.net.ConnectionFilterImp
填入筛选规则:
当前测试规则为:
10.64.158.0/255.255.254.0 * 7001 allow t3 t3s
0.0.0.0/0 * * deny t3 t3s
规则解释为:只允许10.64.158网段的服务器可以通过7001端口使用T3协议访问该weblogic服务
引用文档:
http://docs.oracle.com/middleware/1221/wls/SCPRG/con_filtr.htm#SCPRG377
五、非Oracle官方临时解决方案一
在非Oracle官方的修复方法中,包含以下两种方法:
调整应用程序,使用SerialKiller类包替换进行反序列化操作的ObjectInputStream类。
下载jar包和实施步骤请参考链接:https://github.com/ikkisoft/SerialKiller
Apache官方最近发布了commons-collections的新版本,修复方法为替换有漏洞的commons-collections组件
下载地址:http://commons.apache.org/proper/commons-collections/download_collections.cgi
建议:原来是3.2.x就替换为3.2.2,原来是4.x就替换为4.4.1,若出现不兼容,请尝试替换另一个版本。
具体方法:
先停止weblogic,在中间件modules目录下存在名为
com.bea.core.apache.commons.collections_x.x.x.jar的文件
以及在应用目录下查找相关jar包:
find/{WL_HOME}-name'*commons.collections*'
find/{domain_home}-name'*commons.collections*'
下载最新的commons-collections(bin包,不是源码包),如:
用压缩包中的commons-collections-3.2.2.jar替换掉有漏洞的jar包,保持原jar包的名字,即名字不变换掉jar包
启动weblogic
六、非Oracle官方临时解决方案二
按照oracle官网所说8和9版本没有反序列漏洞,但是实际中,如果在应用中包含’*commons.collections*’的jar包,还是会在安全软件中扫描出反序列化漏洞。所以下面有对应版本的不同处理方式
weblogic8和weblogic9版本的反序列化漏洞修补
这两个系列版本的weblogic扫描出反序列化漏洞后,可以通过测试机先行测试,避免操作影响生产运行。可以直接克隆一台虚拟机进行测试,在主机上执行以下语句来查找导致漏洞的jar包
find/{WL_HOME}-name'*commons.collections*'
find/{domain_home}-name'*commons.collections*'
然后有两种处理方式:
使用 SerialKiller 替换进行序列化操作的 ObjectInputStream 类;
在不影响业务的情况下,临时删除掉项目里的
“org/apache/commons/collections/functors/InvokerTransformer.class” 文件;
这样就可以解决这两个系列版本的weblogic反序列化漏洞。
七、总结
上述的解决方案,提出如下建议:
首先掌握一种正确的测试方法,并在测试环境中进行验证测试。可参考github网站上老外提供的工具ysoserial-0.0.2,生成应用中间件脚步测试。
优先选择Oracle官方提供的打补丁的方式,影响范围比较小,不涉及应用程序。
在打补丁不能解决的情况下,再考虑非Oracle官方的方式,替换类包或删除相关类,但涉及应用程序,需要由应用维护人员进行测试、评估和实施。
反序列漏洞具体分析网上很多都已经分析透彻,如下:
http://www.tuicool.com/articles/ZvMbIne
http://www.2cto.com/article/201604/497315.html
https://github.com/frohoff/ysoserial.gitfrohoff/ysoseria