1. 程式人生 > >(轉)Weblogic之反序列化高危漏洞

(轉)Weblogic之反序列化高危漏洞

轉自: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