近期,德國(guó)安全團(tuán)隊(duì)@codewhitesec發(fā)現(xiàn)了Java AMF3的多個(gè)功能實(shí)現(xiàn)漏洞,美國(guó)CERT/CC也發(fā)出了安全預(yù)警。攻擊者可以遠(yuǎn)程通過(guò)欺騙或控制服務(wù)連接方式,在AMF3反序列動(dòng)作時(shí)執(zhí)行任意代碼。部分受影響產(chǎn)品的補(bǔ)丁已經(jīng)發(fā)布。
AMF3實(shí)際上是Adobe Action Message Format的最新版本,是用于對(duì)ActionScript對(duì)象圖形序列化的壓縮二進(jìn)制格式。AMF首次出現(xiàn)是在2001年的Flash Player 6之中,而AMF3則伴隨Flash Player 9出現(xiàn)。
序列化是指,一個(gè)對(duì)象轉(zhuǎn)為字節(jié)流的過(guò)程,以便將對(duì)象存儲(chǔ)或傳輸?shù)絻?nèi)存或文件中。而序列化的數(shù)據(jù)釋放的過(guò)程就是反序列化——這個(gè)過(guò)程如果處理不到位就會(huì)出現(xiàn)重大安全問(wèn)題。
CERT/CC的安全公告提到了3個(gè)漏洞,第一個(gè)漏洞可讓攻擊者欺騙或控制RMI(Remote Method Invocation)服務(wù)器來(lái)執(zhí)行代碼。第二個(gè)漏洞則可被攻擊者利用實(shí)現(xiàn)任意代碼執(zhí)行——該漏洞影響到了Flamingo,Apache的Flex BlazeDS和GraniteDS。XXE漏洞也影響到了這些產(chǎn)品,另外還有WebORB。詳情如下:
漏洞概述
Java AMF3功能存在不安全的反序列化和XML外部實(shí)體注入漏洞,導(dǎo)致多個(gè)應(yīng)用程序產(chǎn)品受到影響,漏洞概要參見(jiàn)KB-CERT VU#307983,詳細(xì)技術(shù)分析參見(jiàn)codewhitesec博客。
漏洞描述
不可信數(shù)據(jù)的反序列化漏洞
一些Java AMF3反序列化器實(shí)現(xiàn)不是從推薦規(guī)范類flash.utils.IExternalizable,而是從java.io.Externalizable中派生類實(shí)例。因此,遠(yuǎn)程攻擊者可以通過(guò)欺騙或控制用來(lái)序列化Java對(duì)象的RMI服務(wù)連接,實(shí)現(xiàn)反序列化動(dòng)作時(shí)執(zhí)行任意代碼。
一些Java AMF3反序列化器不是從推薦規(guī)范類flash.utils.IExternalizable,而是從java.io.Externalizable中派生類實(shí)例。因此,遠(yuǎn)程攻擊者可以通過(guò)欺騙或控制用來(lái)序列化Java對(duì)象的RMI服務(wù)連接,實(shí)現(xiàn)反序列化動(dòng)作時(shí)執(zhí)行任意代碼。
受該漏洞影響的產(chǎn)品程序和CVE編號(hào)如下:
Atlassian JIRA, 4.2.4至6.3.0版本 – CVE-2017-5983
Flamingo amf-serializer by Exadel, 2.2.0版本 – CVE-2017-3201
GraniteDS, 3.1.1.GA版本 – CVE-2017-3199
Pivotal/Spring spring-flex – CVE-2017-3203
WebORB for Java by Midnight Coders, 5.1.1.0版本 – CVE-2017-3207
使用以上這些庫(kù)程序的其它產(chǎn)品也可能將受到影響。
動(dòng)態(tài)托管代碼資源的不正確控制漏洞
一些Java AMF3反序列化器實(shí)現(xiàn)可以通過(guò)其公開(kāi)的無(wú)參數(shù)構(gòu)造函數(shù)構(gòu)造任意類實(shí)例,或調(diào)用任意Java Beans setter方法。漏洞的可利用情況于取決于使用反序列化的類路徑中的類的可用性。遠(yuǎn)程攻擊者可以發(fā)送預(yù)先設(shè)置好的序列化java對(duì)象,以欺騙或控制方式在反序列動(dòng)作時(shí)執(zhí)行任意代碼。
受該漏洞影響的產(chǎn)品程序和CVE編號(hào)如下:
Flamingo amf-serializer by Exadel, 2.2.0版本 – CVE-2017-3202
Flex BlazeDS , 4.6.0.23207版本和4.7.2版本 – CVE-2017-5641
GraniteDS, 3.1.1.GA版本 – CVE-2017-3200
使用以上這些庫(kù)程序的其它產(chǎn)品也可能將受到影響。
XML外部實(shí)體引用的不當(dāng)限制漏洞(XXE漏洞)
一些Java AMF3反序列化器實(shí)現(xiàn)允許從AMF3消息嵌入的XML文件中執(zhí)行外部實(shí)體引用,一旦XML解析發(fā)生錯(cuò)誤處理,將會(huì)泄露服務(wù)器敏感信息,同時(shí)也會(huì)導(dǎo)致DDoS、SSRF服務(wù)器端請(qǐng)求偽造攻擊。
受該漏洞影響的產(chǎn)品程序和CVE編號(hào)如下:
Flex BlazeDS , 4.6.0.23207版本 – CVE-2015-3269
GraniteDS, 3.1.1.GA版本 – CVE-2016-2340 (see VU#279472)
WebORB for Java by Midnight Coders, 5.1.1.0版本 – CVE-2017-3208
使用以上這些庫(kù)程序的其它產(chǎn)品也可能將受到影響。
漏洞影響
攻擊者可以遠(yuǎn)程通過(guò)欺騙或控制服務(wù)連接,發(fā)送序列化的java對(duì)象,在反序列動(dòng)作時(shí)執(zhí)行任意代碼。
解決方案
程序更新至最新版本;
程序開(kāi)發(fā)者應(yīng)該使用更新版本的JDK程序,如JDK 8 update 121、JDK 7 update 131 和JDK 6 update 141中都包含了序列化黑名單過(guò)濾器,而即將發(fā)布的JDK9則更安全;
開(kāi)發(fā)者應(yīng)該提高對(duì)不信任來(lái)源反序列化數(shù)據(jù)的安全警惕;
配置防火墻規(guī)則或文件系統(tǒng)限制。
目前受影響的供應(yīng)商信息
部分庫(kù)如GraniteDS和Flamingo都已經(jīng)不再受支持;而Atlassian和Apache則已經(jīng)針對(duì)自家產(chǎn)品發(fā)布了補(bǔ)丁。CERT/CC表示,HPE、SonicWall和VMware的產(chǎn)品可能也受到影響。
轉(zhuǎn)載來(lái)源Freebuf.COM
原文地址:http://www.freebuf.com/vuls/131335.html