闪电般的统一分析引擎

Reporting Security Issues

Apache Spark使用Apache安全团队概述的标准过程来报告漏洞. 请注意,在项目做出响应之前,不应公开披露漏洞.

要报告可能的安全漏洞,请发送电子邮件至security@spark.apache.org . 这是将提交给Apache安全团队以及Spark PMC的非公开列表.

Known Security Issues

CVE-2019-10099: Apache Spark unencrypted data on local disk

严重程度:重要

供应商:Apache软件基金会

受影响的版本:

  • 所有Spark 1.x,Spark 2.0.x,Spark 2.1.x和2.2.x版本
  • Spark 2.3.0至2.3.2

Description:

在Spark 2.3.3之前,在某些情况下,即使spark.io.encryption.enabled=true ,Spark也会将用户数据未加密地写入本地磁盘. 这包括提取到磁盘的缓存块(由spark.maxRemoteBlockSizeFetchToMem控制); 在SparkR中,使用parallelize; 在Pyspark中,使用广播和并行化; 并使用python udfs.

Mitigation:

  • 1.x,2.0.x,2.1.x,2.2.x,2.3.x用户应升级到2.3.3或更高版本,包括2.4.x

Credit:

  • NVIDIA的Thomas Graves报告了此问题.

CVE-2018-11760: Apache Spark local privilege escalation vulnerability

严重程度:重要

供应商:Apache软件基金会

受影响的版本:

  • 所有Spark 1.x,Spark 2.0.x和Spark 2.1.x版本
  • Spark 2.2.0至2.2.2
  • Spark 2.3.0至2.3.1

Description:

使用PySpark时,其他本地用户可能会连接到Spark应用程序并假冒运行Spark应用程序的用户. 这会影响1.x,2.0.x,2.1.x,2.2.0至2.2.2和2.3.0至2.3.1版本.

Mitigation:

  • 1.x,2.0.x,2.1.x和2.2.x用户应升级到2.2.3或更高版本
  • 2.3.x用户应升级到2.3.2或更高版本
  • 否则,受影响的用户应避免在多用户环境中使用PySpark.

Credit:

  • 欧洲核子研究组织(CERN)的卢卡·卡纳利(Luca Canali)和何塞·卡洛斯·卢纳·杜兰(Jose Carlos Luna Duran)

CVE-2018-17190: Unsecured Apache Spark standalone executes user code

严重程度:低

供应商:Apache软件基金会

受影响的版本:

  • 所有版本的Apache Spark

Description:

Spark的独立资源管理器接受要在"主"主机上执行的代码,然后在"工作"主机上运行该代码. 主机本身不会执行设计的用户代码. 但是,对主机的特制请求也可能导致主机也执行代码. 请注意,这不会影响启用了身份验证的独立群集. 尽管主服务器主机通常对其他资源的出站访问权限少于工作服务器,但是在主服务器上执行代码仍然是意外的.

Mitigation:

在无法通过其他方式防止不必要的访问(例如,通过网络级别的限制)来防止任何Spark独立群集上启用身份验证. 使用https://spark.apache.org/docs/latest/security.html中描述的spark.authenticate和相关安全属性

Credit:

  • 苹果信息安全公司Andre Protas

CVE-2018-11804: Apache Spark build/mvn runs zinc, and can expose information from build machines

严重程度:低

供应商:Apache软件基金会

受影响的版本

  • 1.3.x版本分支及更高版本

Description:

Spark的基于Apache Maven的构建包括一个便捷脚本" build / mvn",该脚本下载并运行一个锌服务器以加快编译速度. 默认情况下,该服务器将接受来自外部主机的连接. 对锌服务器的特制请求可能导致它显示运行该版本的开发人员帐户可读的文件中的信息. 请注意,此问题不会影响Spark的最终用户,只会影响从源代码构建Spark的开发人员.

Mitigation:

  • Spark用户不会受到影响,因为锌只是构建过程的一部分.
  • Spark开发人员可以仅使用本地Maven安装的'mvn'命令进行构建,而避免运行build / mvn和锌.
  • 构建主动开发的分支(2.2.x,2.3.x,2.4.x,master)的Spark开发人员可以更新其分支,以接收已经修补到build / mvn脚本中的缓解措施
  • 单独运行锌的Spark开发人员可能在其命令行中包含" -server 127.0.0.1",并考虑使用其他标志(例如" -idle-timeout 30m")来实现类似的缓解效果.

Credit:

  • 苹果信息安全公司Andre Protas

CVE-2018-11770: Apache Spark standalone master, Mesos REST APIs not controlled by authentication

严重程度:中

供应商:Apache软件基金会

受影响的版本:

  • 从1.3.0起的Spark版本,运行启用REST API的独立主机或运行启用集群模式的Mesos主机

Description:

从1.3.0版开始,Spark的独立母版除了spark-submit使用的提交机制外,还公开了REST API来提交作业. 独立运行时,config属性spark.authenticate.secret建立一个共享密钥,用于对通过spark-submit提交作业的请求进行身份验证. 但是,REST API未使用此身份验证机制或任何其他身份验证机制,并且对此没有充分记录. 在这种情况下,用户将能够使用REST API在不进行身份验证的情况下运行驱动程序,而无需启动执行程序. 当设置为在集群模式下运行时(即,当同时还运行MesosClusterDispatcher ),Mesos也使用此REST API提交作业. 未来的Spark版本将改进这些方面的文档,并在运行REST API时禁止设置spark.authenticate.secret ,以使其更加清楚. 将来的版本还将通过将spark.master.rest.enabled的默认值spark.master.rest.enabledfalse来在独立主机中默认禁用REST API.

Mitigation:

对于独立的主服务器,通过将spark.master.rest.enabled设置为false如果未使用)来禁用REST API,和/或确保对REST API的所有网络访问(默认情况下为端口6066)仅限于受信任的主机提交工作. Mesos用户可以停止MesosClusterDispatcher ,但是这将阻止他们在群集模式下运行作业. 或者,他们可以确保对MesosRestSubmissionServer (默认情况下为端口7077)的访问仅限于受信任的主机.

Credit:

  • 伊姆兰·拉希德(Imran Rashid),Cloudera
  • Fengwei Zhang, Alibaba Cloud Security Team

CVE-2018-8024: Apache Spark XSS vulnerability in UI

严重程度:中

受影响的版本:

  • Spark 2.1.0至2.1.2
  • Spark 2.2.0至2.2.1
  • 火花2.3.0

Description:

在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(可能还有其他)却不能.

Mitigation:

  • 2.1.x用户应升级到2.1.3或更高版本
  • 2.2.x用户应升级到2.2.2或更高版本
  • 2.3.x用户应升级到2.3.1或更高版本

Credit:

  • 犀牛安全实验室的Spencer Gietzen

CVE-2018-1334: Apache Spark local privilege escalation vulnerability

严重程度:高

供应商:Apache软件基金会

受影响的版本:

  • 2.1.2之前的Spark版本
  • Spark 2.2.0至2.2.1
  • 火花2.3.0

Description:

在Apache Spark 2.1.2、2.2.0至2.2.1和2.3.0及以下版本中,使用PySpark或SparkR时,其他本地用户可能会连接到Spark应用程序并冒充运行Spark的用户应用.

Mitigation:

  • 1.x,2.0.x和2.1.x用户应升级到2.1.3或更高版本
  • 2.2.x用户应升级到2.2.2或更高版本
  • 2.3.x用户应升级到2.3.1或更高版本
  • 否则,受影响的用户应避免在多用户环境中使用PySpark和SparkR.

Credit:

  • NehméTohmé,Cloudera,Inc.

CVE-2017-12612 Unsafe deserialization in Apache Spark launcher API

JIRA: SPARK-20922

严重程度:中

供应商:Apache软件基金会

受影响的版本:

  • 从1.6.0到2.1.1的Apache Spark版本

Description:

在Apache Spark 1.6.0到2.1.1之前,启动器API对其套接字接收到的数据执行不安全的反序列化. 这使得使用启动器API以编程方式启动的应用程序很容易受到攻击者的攻击,这些攻击者可以访问本地计算机上的任何用户帐户. 它不会影响通过spark-submit或spark-shell运行的应用程序. 攻击者将能够以运行Spark应用程序的用户身份执行代码. 鼓励用户更新到版本2.1.2、2.2.0或更高版本.

Mitigation:

更新到Apache Spark 2.1.2、2.2.0或更高版本.

Credit:

  • 艾迪亚·莎拉德(Sityle Semmle)

CVE-2017-7678 Apache Spark XSS web UI MHTML vulnerability

JIRA: SPARK-20393

严重程度:中

供应商:Apache软件基金会

受影响的版本:

  • Versions of Apache Spark before 2.1.2, 2.2.0

Description:

攻击者可能利用用户对服务器的信任来诱使他们访问指向共享Spark集群的链接,并将包括MHTML的数据提交给Spark主服务器或历史服务器. 然后,该数据(可能包含脚本)将反映给用户,并且可以由基于MS Windows的客户端评估和执行. 这不是对Spark本身的攻击,而是对用户的攻击,然后用户在查看Spark Web UI元素时可能会无意中执行脚本.

Mitigation:

更新到Apache Spark 2.1.2、2.2.0或更高版本.

Example:

Request:

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>

Credit:

  • 尼古拉斯·马里恩(Nicholas Marion)迈克·卡斯珀(Mike Kasper)
  • IBM z系统安全工程中心

by  ICOPY.SITE