安全人員在甲骨文 WebLogic 服務(wù)器(WLS)中發(fā)現(xiàn)了一個新的可遠(yuǎn)程利用的?洞。該?洞編號 CVE-2019-2725 ,其無需用戶身份驗證即可被遠(yuǎn)程利用,且 CVSS 評分達 9.3 分(滿分 10 分),是一個關(guān)鍵?洞
甲骨文發(fā)布了一個 安全警報 ,指出受此?洞影響的服務(wù)器版本包括 10.3.6.0 和 12.1.3.0。這個?洞很容易被利用,黑色產(chǎn)業(yè)已經(jīng)有很多攻擊者用它來植入 勒索程序 , 挖礦程序 及其它惡意程序。甲骨文“強烈建議客戶盡快應(yīng)用更新”。
此?洞的主要缺陷在于對反序列化的 XML 數(shù)據(jù)的驗證不充分。通過特制的 SOAP 請求,攻擊者可以在服務(wù)器上獲得完整的代碼執(zhí)行權(quán)限。
具體而言,該?洞存在于 /_async/AsyncResponseService 端點上的 WLS 的異步組件中。此端點是用于處理異步請求——響應(yīng)功能的內(nèi)部端點。
當(dāng) AsyncResponseService 端點收到請求時,它會遍歷 handler 列表,從而允許?個 handler 都有機會處理請求。一個名為 WorkAreaServerHandler 的特殊 handler 會用到 WorkContextXmlInputAdapter,后者又用到 XMLDecoder,這里就是?洞的源頭了。
XMLDecoder 本質(zhì)上與用來接收 Serializable 對象的 ObjectInputStream 非常相似,區(qū)別在于 XMLDecoder 使用 XML 格式而非二進制格式來描述序列化對象。如果?有合適干凈的輸入內(nèi)容,任何 Java 對象都可以被反序列化。
不幸的是,這個?洞并不是 WebLogic 或 Java 的第一個?洞。2017 年,WebLogic 報告了一個類似的?洞( CVE-2017-10271 )。反序列化?洞在 Java 中很常見,正如 InfoQ 文章《 Java 序列化的狀態(tài) 》中所提到的一樣。為了阻止這類?洞,Java 9 引入了 JEP-290 。
甲骨文建議立即使用修補程序解決此問題。其它非官方的建議有:阻止訪問所有的 /_async/* 地址,或刪除 WAR 文件以及同異步功能相關(guān)的所有文件。