在拉斯维加斯举行的黑帽大会(Black Hat 2014)上,一位颇有名声的研究人员称安全专业人士并未对托管在AWS云基础架构上的应用的安全性给予充分的关注,因而AWS用户可能更容易遭受到攻击:隐私信息暴露、模仿AWS EC2实例,甚或更糟。
黑客大会上在星期三发表的一次演讲中,咨询公司Bonsai Information Security的创始人、开源w3af安全框架的领导者Andres Riancho详细阐明了他为一个“将Web应用托管在AWS基础架构上”的客户提供渗透测试的全经历。
尽管之前Riancho并没有太多关于亚马逊云服务的经验,但他还是一针见血地指出AWS云基础架构有大量的潜在弱点,且不当的操作会让运行其中的企业遭受灭顶之灾。
“如果你对安全感兴趣,如果你在某种程度上为那些应用的安全负责,你需要了解到这点”,Riancho说道。
研究直指AWS弱点及误配置
通过笔试,Riancho揭示称对于与会者来说,首要之事就是要了解所有的AWS EC2实例存储元数据,其中涵盖了Amazon Machine Images (AMI)的各个细节(主要用于生成带有EC2的虚拟机),也包括由亚马逊数据中心所管的实例的位置、本地IP地址以及更多其他信息。
Riancho很快发现存储的元数据的每个bit就像面包屑一般,使通往其他重要云应用数据的bit通道格外明显,从那时起,他就开始这项研究项目,制作了一个名为“nimbostratus”的元数据抓取工具,他用该工具来追踪为Web引用所使用的AWS云基础架构的运行痕迹。
在将元数据从Web应用服务器上下载下来后,Riancho称他发现了一个AWS安全组已经被用户数据脚本配置了,以及一个能够配置EC2实例的方法。从攻击者角度来看,这样的用户数据脚本包涵的信息往往再好不过,因为他们必须要知道在哪儿可以检索到个别Web应用的源代码。
Riancho称,该客户Web应用的用户数据脚本显示了珍贵而有用的细节,包括Web应用所在的仓储位置、允许访问仓库的密钥和公钥以及下载Web引用的源代码。
之后,Riancho开始展示其他基于云的Web应用的架构。对于用EC2实例访问诸如S3之类的服务来说,AWS提供实例配置文件,可在开始时共享带有EC2实例的证书。尽管那些证书非常强大(Ps:能够赋予攻击者相同的权限,而EC2实例是其偷盗所有),但是却与之前提及的元数据一起存放在Web应用服务器上,Raincho表示。
有了这些有价值的证书,Riancho写了另一个工具用以测试通过其新得到的证书可以获取哪项AWS API功能。这一次,他发现的功能叫做“ListQueues”,经过些许研究之后,他发现他能够访问到AWS Simple Queue Server(SQS)消息队列系统。
更进一步的调查让Riancho了解到,他能够向SQS队列中写消息,同时Celery(一项异步工作和任务队列)在该环境下也能使用,尽管Celery自有文件发出警告——其阉割(pickle)序列化能力“始终存在风险”,且会将AWS应用置于潜在的毁灭性的攻击之中。
“再回到我们的目标系统,我们知道我们能够在SQS队里中写东西、知道‘工作服务器’会将任何发送至SQS队列的东西并行化、知道它使用了阉割(pickle)”,Riancho说道,“因此当我以客户的形式往SQS队列里写东西的时候,如果没有以正确的形式写的话,将会执行任意命令。这确实太过草率了。”
从这一点来看,Riancho发现工作服务器的认证是硬编码的(一项安全禁忌),通过执行相同的带有工作服务器证书的枚举过程。他能够发现他的客户部署在AWS上的一个MySQL数据库。MySQL数据库的一个特定行“1.rds.amazonaws.com”,让他知道了数据库位于Amazon Relational Database Service (RDS)。
Riancho未能卸掉MySQL数据库,但是他发现一项误配置足以允许其在AWS身份识别和入口管理API上执行任何操作,使其可以生成一个拥有访问数据库特权的随机用户。
最后,藉由其高级特权,Riancho称其能够通过RDS管理MySQL数据库:对数据库进行快照、恢复RDS中的快照,然后设置根密码用于恢复快照中所有与原始数据相同的信息。这让他能够触及到更多的敏感信息,虽然恶意软件之类的功能(malicious actor)可以轻易地改变原有RDS实例的密码并有可能生成一个拒绝服务的情境。
Riancho警告称这种特殊情况很大程度上并非AWS某部分出错的结果,更确切地说,是Web应用开发者们一系列失误后导致的结果。这类失误非常易犯且出错率极高,除非企业安全研究人员和专业人士能够更多地着眼于保护AWS基础架构上来。
在最后,Riancho总结道:“开发者引领前路,同时也需要我们共同的努力来帮助他们保护其赖以使用的亚马逊基础架构。”