(轉)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