Apache Spark 使用由 Apache 安全團隊提供的標準流程來報告漏洞。請注意,漏洞在項目回應之前不應公開披露。
如需報告可能的安全漏洞,請發送電子郵件至 security@spark.apache.org
。這是一個非公開的列表,將抵達 Apache 安全團隊和 Spark PMC。
此 CVE 僅對 CVE-2022-33891 進行更新,以澄清版本 3.1.3 也受影響。否則,這不是一個新的漏洞。請注意,Apache Spark 3.1.x 現已停用。
嚴重性:中
供應商:Apache 軟體基金會
受影響版本
描述
在 Apache Spark 版本 3.4.0 之前,使用 spark-submit 的應用程序可以指定要運行的 ‘代理用戶’,限制權限。但是,通過在類路徑上提供惡意的配置相關類,該應用程序可以以提交用戶的權限執行代碼。這影響了依賴代理用戶的架構,例如使用 Apache Livy 管理提交的應用程序的架構。
此問題正在以 SPARK-41958 追蹤
緩解措施
spark.submit.proxyUser.allowCustomClasspathInClusterMode
設置為其默認值“false”,並且不被提交的應用覆蓋。致謝
嚴重性:中
供應商:Apache 軟體基金會
受影響版本
描述
Apache Spark 3.2.1 及早期版本,以及 3.3.0 中存在存儲的跨站腳本(XSS)漏洞,允許遠程攻擊者通過將惡意有效載荷包含到日誌中,該有效載荷將在 UI 中呈現的日誌中返回,以執行用戶端的任意 JavaScript。
緩解措施
致謝
嚴重性:重要
供應商:Apache 軟體基金會
受影響版本
描述
Apache Spark UI 通過配置選項 spark.acls.enable 提供啟用 ACL 的可能性。通過身份驗證過濾器,這將檢查用戶是否具有查看或修改應用程序的許可權。如果啟用了 ACL,則 HttpSecurityFilter 中的代碼路徑可以允許某人通過提供任意用戶名來執行模擬。然後,惡意用戶可能能夠到達最終將基於其輸入構建 Unix shell 命令並執行它的權限檢查功能。這將導致作為當前 Spark 用戶運行的任意 shell 命令執行。
緩解措施
致謝
嚴重性:中
供應商:Apache 軟體基金會
受影響版本
描述
Apache Spark 通過 spark.authenticate
和 spark.network.crypto.enabled
支持 RPC 連接的端對端加密。在版本 3.1.2 及早期版本中,它使用自定義的互斥認證協議,允許完整的加密密鑰恢復。在初始交互式攻擊之後,這將允許某人離線解密明文流量。請注意,這不影響由 spark.authenticate.enableSaslEncryption
、spark.io.encryption.enabled
、spark.ssl
、spark.ui.strictTransportSecurity
控制的安全機制。
緩解措施
致謝
嚴重性:重要
供應商:Apache 軟體基金會
受影響版本
描述
在 Apache Spark 2.4.5 及更早版本中,獨立的資源管理器主節點可能會被配置為需要通過共享密鑰進行身份驗證(spark.authenticate
)。然而,當啟用時,一個特殊設計的 RPC 可以成功地在沒有共享密鑰的情況下在 Spark 集群上啟動應用程式的資源。這可被利用來在主機上執行 shell 命令。
這不會影響使用其他資源管理器(YARN、Mesos 等)的 Spark 集群。
緩解措施
致謝
嚴重性:重要
供應商:Apache 軟體基金會
受影響的版本
描述
在 Spark 2.3.3 之前的某些情況下,即使 spark.io.encryption.enabled=true
,Spark 也會將用戶數據未加密地寫入本地磁碟。這包括被緩存到磁碟的塊(由 spark.maxRemoteBlockSizeFetchToMem
控制);在 SparkR 中,使用 parallelize;在 Pyspark 中,使用 broadcast 和 parallelize;以及使用 Python udfs。
緩解措施
致謝
嚴重性:重要
供應商:Apache 軟體基金會
受影響的版本
描述
當使用 PySpark 時,不同的本地用戶可以連接到 Spark 應用程序並冒充運行 Spark 應用程序的用戶。這影響版本 1.x、2.0.x、2.1.x、2.2.0 到 2.2.2 和 2.3.0 到 2.3.1。
緩解措施
致謝
嚴重性:低
供應商:Apache 軟體基金會
受影響版本
描述
Spark 的獨立資源管理器接受要在「主機」上執行的程式碼,然後再在「工作節點」上執行該程式碼。主機本身並不會按設計執行使用者的程式碼。然而,對主機的一個特別設計的請求可能導致主機也執行程式碼。請注意,這不會影響啟用驗證的獨立叢集。儘管主機通常對其他資源的出站訪問不如工作節點多,但在主機上執行程式碼仍然是意外的。
緩解措施
在任何未受其他安全防護措施限制的 Spark 獨立叢集上啟用驗證,例如通過網路級別的限制。使用 spark.authenticate
和相關的安全屬性,詳細說明請參見 https://spark.dev.org.tw/docs/latest/security.html
致謝
嚴重性:低
供應商:Apache 軟體基金會
受影響版本
描述
Spark 的 Apache Maven 构建包括一个便捷脚本,‘build/mvn’,用于下载和运行一个 zinc 服务器以加快编译速度。默认情况下,该服务器将接受来自外部主机的连接。一個特別設計的請求可能導致 zinc 服务器揭示文件中的信息,這些文件可讀取用於運行構建的開發人員帳戶。請注意,這個問題不影響 Spark 的最終用戶,僅影響從源代碼構建 Spark 的開發人員。
緩解措施
致謝
嚴重性:中
供應商:Apache 軟體基金會
受影響版本
描述
從版本1.3.0開始,Spark的獨立主機除了使用spark-submit
的提交機制外,還提供了REST API來提交作業。在獨立模式下,配置屬性spark.authenticate.secret
確立了一個用於驗證通過spark-submit
提交作業的請求的共享密鑰。然而,REST API並不使用這個或任何其他驗證機制,並且這並沒有得到充分的文檔化。在這種情況下,用戶可以在不進行身份驗證的情況下運行驅動程序,但無法使用REST API啟動執行器。這個REST API也被Mesos使用,當設置為在集群模式下運行時(即當也運行MesosClusterDispatcher
時),用於提交作業。未來版本的Spark將改進這些方面的文檔,並禁止在運行REST API時設置spark.authenticate.secret
,以明確表明這一點。未來版本還將通過將spark.master.rest.enabled
的默認值更改為false
來默認禁用獨立主機上的REST API。
緩解措施
對於獨立主機,如果未使用REST API,請將spark.master.rest.enabled
設置為false
以禁用它,並/或確保對REST API(默認情況下為端口6066)的所有網絡訪問僅限於信任的主機以提交作業。Mesos用戶可以停止MesosClusterDispatcher
,但這將阻止它們以集群模式運行作業。或者,他們可以確保對MesosRestSubmissionServer
(默認情況下為端口7077)的訪問僅限於信任的主機。
致謝
嚴重性:中
受影響版本
描述
在Apache Spark 2.1.0到2.1.2、2.2.0到2.2.1和2.3.0中,惡意用戶可以構造一個指向Spark集群UI的作業和階段信息頁面的URL,如果用戶被誘導訪問該URL,則可用於執行腳本並暴露用戶在Spark UI中的視圖的信息。雖然一些瀏覽器像最新版本的Chrome和Safari能夠阻止這種類型的攻擊,但當前版本的Firefox(可能還有其他瀏覽器)無法阻止。
緩解措施
致謝
嚴重程度:高
供應商:Apache 軟體基金會
受影響的版本
描述
在 Apache Spark 包括 2.1.2、2.2.0 到 2.2.1 以及 2.3.0 版本中,使用 PySpark 或 SparkR 時,可能會使不同的本地用戶連接到 Spark 應用程序並冒充運行 Spark 應用程序的用戶。
緩解措施
致謝
JIRA: SPARK-20922
嚴重性:中
供應商:Apache 軟體基金會
受影響版本
描述
在 Apache Spark 1.6.0 到 2.1.1 版本中,啟動器 API 對其套接字接收的數據進行了不安全的反序列化。這使得使用啟動器 API 以編程方式啟動的應用程序潛在地易受攻擊者在本地計算機上的任何用戶帳戶上執行任意代碼的攻擊。這不會影響由 spark-submit 或 spark-shell 運行的應用程序。攻擊者將能夠以執行 Spark 應用程序的用戶的身份執行代碼。建議用戶升級到 2.1.2 版本、2.2.0 或更新版本。
緩解措施
升級到 Apache Spark 2.1.2、2.2.0 或更新版本。
致謝
JIRA: SPARK-20393
嚴重性:中
供應商:Apache 軟體基金會
受影響版本
描述
攻擊者可以利用用戶對服務器的信任,誘使他們訪問指向共享 Spark 集群並提交包括 MHTML 的數據到 Spark 主機或歷史服務器的鏈接。這些數據可能包含腳本,然後將被反射回用戶並且可能被 MS Windows 客戶端評估和執行。這不是針對 Spark 本身的攻擊,而是針對用戶,當用戶查看 Spark 網頁 UI 元素時可能會意外執行腳本。
緩解措施
升級到 Apache Spark 2.1.2、2.2.0 或更新版本。
範例
請求
GET /app/?appId=Content-Type:%20multipart/related;%20boundary=_AppScan%0d%0a--
_AppScan%0d%0aContent-Location:foo%0d%0aContent-Transfer-
Encoding:base64%0d%0a%0d%0aPGh0bWw%2bPHNjcmlwdD5hbGVydCgiWFNTIik8L3NjcmlwdD48L2h0bWw%2b%0d%0a
HTTP/1.1
回應中的摘錄
<div class="row-fluid">No running application with ID Content-Type: multipart/related;
boundary=_AppScan
--_AppScan
Content-Location:foo
Content-Transfer-Encoding:base64
PGh0bWw+PHNjcmlwdD5hbGVydCgiWFNTIik8L3NjcmlwdD48L2h0bWw+
</div>
結果: 在上述載荷中,BASE64 資料解碼為
<html><script>alert("XSS")</script></html>
致謝