日前,JFrog的研究人員披露在Apache Cassandra數(shù)據(jù)庫(kù)中發(fā)現(xiàn)高嚴(yán)重性安全漏洞(CVE-2021-44521),如果不加以解決,該漏洞可幫助惡意人員在受影響的計(jì)算設(shè)備上獲得遠(yuǎn)程代碼執(zhí)行(RCE)權(quán)限。
Apache Cassandra是一個(gè)應(yīng)用廣泛的開源分布式NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng),用于跨商用服務(wù)器管理大量結(jié)構(gòu)化數(shù)據(jù)。該漏洞體現(xiàn)在Cassandra的非默認(rèn)配置中,由于Cassandra提供了創(chuàng)建用戶定義函數(shù)(UDF)的功能,允許用戶對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)執(zhí)行自定義處理。管理員可以使用Java和JavaScript來(lái)編寫UDF。
在JavaScript中,它使用了Java運(yùn)行時(shí)環(huán)境(JRE)中的Nashorn 引擎;接受不可信賴的代碼時(shí),就無(wú)法保證該引擎的安全。JFrog的研究人員發(fā)現(xiàn),用戶定義函數(shù)(UDF)的配置被啟用后,惡意人員就可以利用Nashorn 引擎逃逸沙箱,并遠(yuǎn)程執(zhí)行代碼。
目前,Cassandra的開發(fā)團(tuán)隊(duì)已針對(duì)UDF執(zhí)行實(shí)施了一個(gè)自定義沙箱,該沙箱使用兩種機(jī)制來(lái)限制UDF代碼。研究發(fā)現(xiàn),當(dāng)cassandra.yaml配置文件含有以下定義時(shí),就有可能被利用:
?enable_user_defined_functions:true
?enable_scripted_user_defined_functions:true
?enable_user_defined_functions_threads:false
研究人員表示:“當(dāng)[enable_user_defined_functions_threads]選項(xiàng)設(shè)置為false時(shí),所有調(diào)用的UDF函數(shù)都在Cassandra守護(hù)程序線程中運(yùn)行,該線程具有某些權(quán)限的安全管理器,從而允許對(duì)手禁用安全管理器并打破沙箱及在服務(wù)器上運(yùn)行任意shell命令?!?/p>
據(jù)了解,Apache已經(jīng)發(fā)布了版本3.0.26、3.11.12和4.0.2來(lái)應(yīng)對(duì)該漏洞,新版本中添加了一個(gè)新標(biāo)志“allow_extra_insecure_udfs”(默認(rèn)設(shè)置為false),可以防止關(guān)閉安全管理器,并且禁止對(duì)java.lang.System進(jìn)行訪問(wèn)。企業(yè)組織需要盡快進(jìn)行版本升級(jí),避免漏洞造成更大危害。