• 我的位置:
  • 首頁
  • -
  • 漏洞預警
  • -
  • 中間件
  • -
  • Oracle Coherence遠程代碼執(zhí)行漏洞
    • CNNVD編號:未知
    • 危害等級: 高危 
    • CVE編號:CVE-2020-2555
    • 漏洞類型: 代碼執(zhí)行
    • 威脅類型:未知
    • 廠       商:未知
    • 漏洞來源:深信服
    • 發(fā)布時間:2021-01-12
    • 更新時間:2021-01-13

    漏洞簡介

    1、Oracle Coherence組件介紹

    Coherence是Oracle為了建立一種高可靠和高擴展集群計算的一個關(guān)鍵部件,集群指的是多于一個應用服務器參與到運算里。Coherence的主要用途是共享一個應用的對象(主要是java對象,比如Web應用的一個會話java對象)和數(shù)據(jù)(比如數(shù)據(jù)庫數(shù)據(jù),通過OR-MAPPING后成為Java對象)。

    2、漏洞分析

    Zerodayinitiative公布的一篇博客中發(fā)布了一個Coherence反序列化漏洞,CVE編號為CVE-2020-2555,CVSS評分9.8分,危害性高。下面內(nèi)容來源于博客中的分析資料。

    漏洞公示

    通過補丁找到漏洞利用點

    CVE-2020-2555漏洞是由于攻擊者可以傳入可控參數(shù)并調(diào)用java方法。在Java中,類中的readObject()或readExternal()方法可以被自動調(diào)用。這兩種方法以及從它們內(nèi)部可獲得的任何其他方法都可以視為反序列化gadget的來源。

    CVE-2020-2555的補丁中更改了LimitFilter類中的toString()方法,如圖:

    補丁在toString()中刪除了對extract()方法的所有調(diào)用語句,下文將介紹extract()方法的重要性。此處修改特別有趣,因為我們可以通過各種標準JRE類(例如BadAttributeValueExpException)的readObject()方法訪問toString()
    如上面的代碼所示,BadAttributeValueExpException類的序列化實例可以用于調(diào)用任意類的toString()方法。此方法可用于訪問受此補丁影響的LimitFilter類的toString()方法。

    有關(guān)使用toString()作為入口點的gadget的示例,請參見ysererial項目的CommonsCollections5 gadget 。

    Sink點的尋找

    Sink點指的是具有各種副作用的Java方法調(diào)用,這類副作用包括:

          -通過調(diào)用FileOutputStream.write()任意創(chuàng)建文件。
          -通過調(diào)用Runtime.exec()任意執(zhí)行命令。
          -通過調(diào)用Method.invoke()的任意方法調(diào)用。
    對于此漏洞,我們的重點是對Method.invoke()的調(diào)用,此方法的調(diào)用可以通過反射來調(diào)用任意Java方法。了解該信息后,我們可以查找所有存在extract()方法的實例,并且最終會調(diào)用Method.invoke()。在Coherence庫中,似乎只有這樣一個可序列化類的實例(實現(xiàn)Serializable或Externalizable接口)。


    查看ReflectionExtractor類后,我們可以確認前面的猜測:


    實現(xiàn)RCE

    通常,利用遠程代碼執(zhí)行漏洞需要多個方法調(diào)用。例如,在流行的Apache Commons Collections的gadget,攻擊者需要使用ChainedTransformer將任意方法調(diào)用串接起來,從而實現(xiàn)RCE。與此類似,Coherence庫中也提供了這樣一個類(ChainedExtractor),可以讓我們串接extract()調(diào)用:


    將以上信息結(jié)合起來,我們可以使用如下調(diào)用鏈,最終實現(xiàn)遠程代碼執(zhí)行,
    如果目標環(huán)境使用了Coherence庫,并且攻擊者可以投遞惡意序列化對象,那么攻擊者就能實現(xiàn)遠程代碼執(zhí)行。


    參考網(wǎng)站

    暫無

    受影響實體

    目前受影響的Oracle Coherence版本:
    Oracle Coherence 12.2.1.4.0
    Oracle Coherence 12.2.1.3.0
    Oracle Coherence 12.1.3.0.0
    Oracle Coherence 3.7.1.17

    補丁

    官方已經(jīng)針對此漏洞發(fā)布補丁,請受影響的用戶參考以下鏈接安裝補丁更新:
    https://www.oracle.com/security-alerts/cpujan2020.html