- 相關(guān)推薦
Apache Kafka read Object漏洞的分析報(bào)告
I.背景介紹
Apache Kafka 是開(kāi)源的Apache流處理平臺(tái),由 Apache編寫(xiě),采用scala與java。該項(xiàng)目旨在于提供一個(gè)統(tǒng)一的、高吞吐量的、低延遲的實(shí)時(shí)數(shù)據(jù)處理平臺(tái)。
II.漏洞概述
Kafka 內(nèi)部實(shí)現(xiàn)一個(gè)帶有readObject方法的并且未帶有任何校驗(yàn)的危險(xiǎn)類,如果用戶在使用該框架中,使用了該類的話,通過(guò)設(shè)置相關(guān)參數(shù)后實(shí)例化該類的時(shí)候會(huì)導(dǎo)致遠(yuǎn)程代碼執(zhí)行。
360CERT對(duì)此漏洞進(jìn)行跟蹤分析,考慮到實(shí)際生產(chǎn)環(huán)境這樣的代碼邏輯并不常見(jiàn),根據(jù)影響,確認(rèn)為中低危漏洞。
III.漏洞詳情
A.簡(jiǎn)要技術(shù)細(xì)節(jié)
漏洞成因描述和簡(jiǎn)要技術(shù)細(xì)節(jié)(可參考官方安全公告technical details)
org.apache.kafka.connect.storage.FileOffsetBackingStore 這個(gè) class 擁有一個(gè)反序列化操作,在執(zhí)行
FileOffsetBackingStore 對(duì)象的start方法時(shí)候會(huì)觸發(fā)并反序列惡意序列化對(duì)象,導(dǎo)致代碼執(zhí)行。
因?yàn)镵afka是一個(gè)開(kāi)源的框架,如果用戶在使用的過(guò)程中實(shí)現(xiàn)了類似實(shí)例化FileOffsetBackingStore這個(gè)對(duì)象,并且傳入?yún)?shù)受到控制的業(yè)務(wù)邏輯的話就會(huì)受到該漏洞的影響。
B.影響版本
Apache Kafka
0.10.0.0 -> 0.11.0.0(latest)
均受到影響
IV.漏洞細(xì)節(jié)分析
首先生成一個(gè)惡意的對(duì)象,這個(gè)對(duì)象在反序列化后就會(huì)執(zhí)行惡意代碼,此處采用ysoserial.payloads.Jdk7u21這個(gè)開(kāi)源框架中的方法,直接產(chǎn)生一個(gè)惡意對(duì)象
生成這個(gè)惡意對(duì)象后,將這個(gè)對(duì)象序列化,然后存儲(chǔ)成一個(gè)文件,漏洞是FileOffsetBackingStore這個(gè)只接受文件的class出的所以需要傳入這個(gè)文件。
可以看到我們將執(zhí)行的命令是touch 360CERT創(chuàng)建一個(gè)名為360CERT的文件。
接下來(lái)給即將實(shí)例化的FileOffsetBackingStore對(duì)象做一些初始化設(shè)置,將要讀取的文件路徑傳入。
調(diào)用configure方法后,會(huì)設(shè)置this.file這個(gè)屬性的值,為我們傳入的文件,調(diào)用start方法后,所以直接進(jìn)入load方法,可以看到這里將this.file的值讀取到is中,這里就是我們構(gòu)造的惡意序列化的對(duì)象,而接下來(lái)調(diào)用的readObject()方法正好會(huì)序列化這個(gè)對(duì)象,可以看到360CERT這個(gè)文件已經(jīng)被我們創(chuàng)建了。
【Apache Kafka read Object漏洞的分析報(bào)告】相關(guān)文章:
投資分析報(bào)告02-15
試卷分析報(bào)告02-24
專業(yè)分析報(bào)告12-28
事故分析報(bào)告04-14
需求分析報(bào)告01-11
培訓(xùn)分析報(bào)告12-21
自我分析報(bào)告01-06
考試分析報(bào)告12-27
考試情況分析報(bào)告02-17
壽險(xiǎn)公司分析報(bào)告01-06