漏洞概述
Oracle官方發佈了7月份的關鍵補丁更新CPU(Critical Patch Update),其中包含一個啟明星辰ADLab安全研究人員發現並通報給Oracle的高危遠程代碼執行漏洞(CVE-2018-2893),通過該漏洞攻擊者可以在未授權的情況下遠程執行任意代碼。該漏洞通過JRMP 協議利用RMI機制的缺陷達到執行任意反序列化代碼的目的。攻擊者可以在未授權的情況下將payload封裝在T3協議中,通過對T3協議中的payload進行反序列化,從而實現對存在漏洞的WebLogic組件進行遠程攻擊,執行任意代碼並可獲取目標系統的所有權限。
漏洞影響範圍
WebLogic 10.3.6.0
WebLogic 12.1.3.0
WebLogic 12.2.1.2
WebLogic 12.2.1.3
以上均為官方支持的版本。
基礎知識
- T3協議
WebLogic Server 中的 RMI 通信使用 T3 協議在WebLogic Server和其他 Java程序(包括客戶端及其他 WebLogic Server 實例)間傳輸數據(序列化的類)。由於WebLogic的T3協議和Web協議共用同一個端口,因此只要能訪問WebLogic就可利用T3協議實現payload和目標服務器的通信。
- JRMP協議
RMI目前使用Java遠程消息交換協議JRMP(Java Remote Messaging Protocol)進行通信。JRMP協議是專為Java的遠程對象制定的協議。
漏洞簡析
為了阻止惡意反序列化,WebLogic已經設置了8個黑名單。如下圖所示:
並且對commons.collections這個包也做了限制。核心利用類調用readObject方法反序列化時都進行了檢查。如下圖所示:
但經過啟明星辰ADLab安全研究人員深入研究分析後發現,JDK固有類中存在可被序列化並且在反序列化時可以調用RMI的類,使用該類可構造出繞過WebLogic黑名單以及commons.collections限制的payload,ADLab第一時間通報給Oracle官方並獲得相應的漏洞編號(CVE-2018-2893)。
解決方案
- 關注Oracle官方CPU更新補丁
- 控制T3協議的訪問
此漏洞產生於WebLogic的T3服務,因此可通過控制T3協議的訪問來臨時阻斷針對該漏洞的攻擊。當開放WebLogic控制檯端口(默認為7001端口)時,T3服務會默認開啟。
具體操作:
(1)進入WebLogic控制檯,在base_domain的配置頁面中,進入“安全”選項卡頁面,點擊“篩選器”,進入連接篩選器配置。
(2)在連接篩選器中輸入:weblogic.security.net.ConnectionFilterImpl,在連接篩選器規則中輸入:127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s(t3和t3s協議的所有端口只允許本地訪問)。
(3)保存後需重新啟動,規則方可生效。
- 升級到 jdk-8u20以上的版本
閱讀更多 信息安全搬運工 的文章