为什么云变成雷云:云部署失败

图片

大型组织中的云实现通常包括来自不同提供商的许多服务,每个服务都有自己的交互规则,设置甚至协议。结果,安全配置变得如此复杂,以至于难以跟踪甚至难以理解。在我们的新研究中,我们收集了使用Amazon Web Services作为示例部署云基础架构时最常见的错误,我们将在本文中分享其中一些错误。

如今,云提供商所提供的服务已经超出了普通的“专用”或文件存储范围。每个服务的每个方面都可以编程。与传统的数据中心相比,这使开发人员和操作员可以更好地控制安全性。但是,丰富的功能及其配置工具导致您可以从多个接口进行配置,并且-这很重要-默认参数对于不同的方法而言是不同的。

对于有经验的用户,这不是问题-相反,他们将使用最合适的工具来完成任务。但是,对于其他人,结果可能不符合他们的期望。

Amazon S3存储


Amazon Simple Storage Services或Amazon S3是从小型公司到大型公司的许多客户使用的最受欢迎的云服务之一。流行已使S3成为正在寻找服务实现缺陷和配置错误的攻击者的最爱目标。

网络犯罪分子使用的最常见的Amazon S3攻击媒介是:

  • 记录的公共存储设施;
  • 截取账户;
  • 滥用特权。

录音分享


2018年2月,在美国最大的报纸之一的网站上发现了Monero加密货币矿工。每个访问该网站的读者都为犯罪分子铸造硬币,这些犯罪分子将恶意代码添加到了出版物的JavaScript文件中。

该报纸的网站由亚马逊托管,并将所有图片,脚本和样式文件存储在S3存储库中。仅通过阅读来限制对该存储库的访问,因此对于站点管理员来说,黑客入侵是一个完全的惊喜。在云服务专家解释说原因是访问权限不正确之前,他们根本无法理解如何被黑客入侵。

可以通过http / https使用Amazon S3存储库,在这一部分中,站点管理员可以正确执行所有操作,仅限制对阅读的访问。但是,也可以通过命令行通过AWS本机协议访问S3,并且必须单独设置此类调用的访问权限,并且默认情况下,所有AWS授权用户都可以通过AWS CLI访问存储。 为新的Amazon S3用户

图片
的默认保管库运行控制台命令aws s3api get-bucket-acl --bucket <BUCKET_NAME>的结果是,几乎没有

双重限制其保管库权限的需要,这导致了很多事件。

在2018年底,AWS通过禁止从控制台对新的S3存储库进行公共访问来重新定义了安全策略,但是在使用命令行时未应用此策略。仍然只能将访问权限限制在一个单独的团队中。

在2018-2019年,S3存储的妥协性变得十分普遍。一些安全专家和友好的黑客专门寻找可用于写入并在其中保留警告文件的AWS资源。

图片
关于AWS S3配置不安全的匿名警告

有人甚至提供了他们的服务来设置安全存储参数:

图片
Pentester Random Robbie的警告和提供服务

Random Robbie是Robbie Wiggins pentester的化名,他在2018年对成千上万的S3存储开放记录表示警告。

黑客立即利用了自由修改S3存储库中托管的站点的功能。 Magecart组织大规模引入了恶意代码,以窃取银行卡数据和用户帐户信息。毕竟,所需要做的就是找到一个接受付款并使用AWS的网站。结果,犯罪分子设法窃取了数十万访问此类资源的访问者的数据。

图片
撇渣器传递给犯罪分子的数据示例

在Magecart行动的受害者中,有数百家在线商店,包括知名品牌。

在研究过程中,我们发现,尽管有许多关于安全配置AWS服务的出版物和建议,但在受感染的商店中,至少有五个在线商店继续使用可用于记录的S3存储。迄今为止,他们的站点不包含浏览器,但是可以随时添加,因为网络罪犯可以使用方便的工具来促进对易受攻击资源的搜索。

S3开放式存储搜索工具


Slurp,Bucket Stream和s3scanner工具可帮助您找到可读和可写的存储。

Slurp帮助您找到给定域的可能的存储名称,并检查其中的写权限:

图片
Slurp输出示例。通过http的访问已关闭。

要通过AWS CLI检查找到的存储的可用性,您可以使用get-bucket-acl命令:

图片
通过AWS API的资源访问也已关闭。

用Python编写的s3scanner实用程序使用一种简单的试探法来查找可能的存储名称并检查对它们的访问。

图片
使用s3scanner搜索和验证S3存储的可用性

Bucket Stream实用程序在公共来源(例如,证书透明性等)中搜索可能易受攻击的S3存储。

AWSBucketDump实用程序列出了名称包含特定关键字的存储库文件:

图片
AWSBucketDump实用程序结果

使用这些实用程序,从2018年12月到2019年1月,我们发现了5200多个唯一的S3存储。其中约有4,400个可用于标准AWS命令行实用程序。其中只有79个可供阅读,有40个可供写作。要访问其中的一部分,只需分配必要的权限即可。

帐户如何泄漏


资源的访问权使开发人员感到头疼。对于云基金,问题变得更加严重。为了获得对资源的访问权限,必须对流程进行身份验证,否则存在数据被盗或泄露的风险。整个问题是如何在存储库中发布代码时如何做到这一点而又不会冒数据受损的风险,就像在Pastebin上发布以下片段的作者所做的那样:

图片
在Pastebin上发布的具有有效AWS API ID和密钥的代码片段

使用此数据,攻击者可以获得所有权利该应用程序帐户提供的信息。

凭证泄漏的另一个来源是Kubernetes API客户端证书。一方面,在默认配置中,此容器编排系统要求以客户端证书的形式进行强制保护。另一方面,天真地令人惊讶的开发人员会在GitHub,Pastebin和其他服务上发布证书以及代码。

仅在Pastebin,我们才设法找到放置在配置脚本中的大约五十种不同的客户端证书。

如果在任何地方以明文形式发布证书不是一个好主意,那么将其发布到GitHub就是令人作呕的,因为:

  • 要删除证书,您必须从存储库中所有保存的版本中删除它;
  • - , , ;
  • , , , .

妥协的API密钥和证书可能会成为严重财务损失的来源,例如一家俄罗斯公司一天欠亚马逊 1.2 万美元:它入侵了Bitrix上的一个网站,除其他外,该网站还指出了可访问S3存储的API密钥。

图片
一家俄罗斯公司的计费面板的屏幕快照,其被盗的API密钥用于创建许多虚拟机和加密货币挖矿。资料来源:habr.com/en/post/357764

客户数据的泄漏同样会令人痛苦,就像2019年的Imperva一样。 Imperva还窃取了API密钥并合并了所有客户端数据。

网络罪犯可以使用被盗的账户非法交易专用的AWS服务器,这必须由真正的所有者支付。在lolzteam论坛上,我们发现了250多个广告,其中包含“纯零Dedicos”。

图片
关于论坛lolzteam的公告。到底谁将向亚马逊付款?

API密钥泄漏的第三个来源是针对程序员的各种培训课程。

为了尽可能简单地向初学者说明连接AWS服务的过程,作者复制了错误的做法,将来会导致新的和新的妥协案例。

图片
Python课程的一小段片段,介绍了如何使用Amazon S3服务。提供密钥以硬编码到程序中

关于渐进和安全的Java语言的课程的作者展示了对API密钥安全性的这种粗心态度:

图片
语言不同,但是建议是相同的-密钥在程序文本中正确。

我们的建议


云服务的不正确配置带来了许多风险,其中包括非法使用租用的计算资源进行加密货币挖掘,数据盗窃以及引入了在线撇取者。在这方面,我们建议安全人员在完成该过程之前分析云部署方案,以识别潜在的漏洞。诸如AWS CloudFormation之类的云验证脚本可洞悉生成的基础架构将如何工作,在哪里查找不正确或缺少的安全设置或日志。在趋势科技开发的安全工具中,有一种旨在保护云环境的产品-适用于Amazon EC2实例的趋势科技服务器深度安全防护系统。而且,Cloud Conformity工具允许公司的云环境进行不安全的设置。

对于使用AWS API密钥与S3存储库进行交互的程序员,我们建议切换为通过AWS Secrets Manager,Docker Secrets,Blackbox,git-secrets和其他类似工具工作,从而避免破坏和恶意使用与原始存储在一起的凭证申请文本。

All Articles