Apache Kafka read Object漏洞的分析報告
I.背景介紹

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