Shopify如何避免数据泄露感谢Bug Bounty
违规行为频繁发生,但由于组织采取快速,积极主动的措施,往往从未报告的是未发生的违规行为。上周,Shopify在KubeCon + CloudNativeCon NA 2018上概述了一个这样的事件。
由于bug赏金计划和其供应商合作伙伴Google的支持,Shopify能够避免可能使攻击者接管Shopify的Kubernetes集群的潜在灾难性漏洞。Shopify提供了一个电子商务平台,允许供应商销售商品和服务。该平台托管在Google Kubernetes Engine(GKE)上,该引擎提供了开源Kubernetes容器编排平台的托管版本。
Shopify的安全基础设施工程师Shane Lawrence说:“如果你不熟悉Shopify,我们有大约60万家企业,所以你很有可能在没有意识到的情况下从我们那里购买了东西。” “去年我们处理了大约260亿美元,在高峰时段,我们每秒收到大约80,000个请求。
劳伦斯说,Shopify完全依靠GKE运行; 他的公司选择Kubernetes的原因是能够快速响应最近的黑色星期五和网络星期一购物活动等扩展需求。
“如果我们需要测试,我们可以缩小到一个副本,或者我们可以在多个地理位置扩展到数百个,”劳伦斯说。“我们的应用程序开发人员花时间开发应用程序,而不是成为Kubernetes专家,这对我们很重要。”
为此,Shopify构建了一个自助服务平台,组织可以直接进入并按下创建云运行时按钮,并在几分钟内让Web应用程序为Kubernetes上运行的流量提供服务。Shopify系统使用护栏来警告组织,如果他们正在做一些Shopify认为可能不是最佳做法或可能不安全的事情。
Bug Bounty
虽然Shopify已尽最大努力使平台尽可能安全,但缺陷是现代软件中不可避免的一部分。为了帮助识别未知缺陷,Shopify在HackerOne平台上使用了托管的bug赏金计划。通过bug赏金计划,安全研究人员将以负责任和私下的方式披露漏洞。
劳伦斯说:“我们认识到,雇用300人每天全天坐着并测试每一次提交并试图找到一些漏洞是不可行的。” “因此,我们只是利用社区的力量,并且在过去三年左右,我们已经有超过300名黑客参与了我们的[bug bounty]计划。”
劳伦斯说,在过去的三年里,Shopify已经支付了超过100万美元的错误奖金。
Kubernetes缺陷
关于KubeCon详细介绍的特定Kubernetes集群缺陷,劳伦斯说,这个漏洞是在安全研究员安德烈·巴普蒂斯塔(Andre Baptista)周日晚上7点39分发生的。11分钟后,在晚上7点50分,Shopify的安全响应小组宣布该bug实际上是一起安全事件。晚上8点,Shopify的云安全和应用开发团队全力投入解决这个问题。
劳伦斯说,在报告发布后不到一个小时,Shopify的团队就在晚上8:43到晚上9点27分做了一个禁用易受攻击的功能的代码提交,Shopify开始更大的努力来调查bug的全部影响,清理获取凭据并与Google联系以确保没有遗漏任何内容。
对于他的努力,Shopify给了Baptista 25,000美元的奖励。
SSRF
安全研究人员能够利用服务器端请求伪造(SSRF)获取Google服务帐户令牌,以及提供Kubelet令牌的Kube-env变量,该变量又用于获得对集群的完全控制权。
“SSRF是你说服网络服务器代表你提出请求的地方,”劳伦斯解释道。
Lawrence表示,Google服务帐户和与其一起运行的元数据服务器用于与群集中的其他API进行交互。他说,API假设令牌也被同一个云平台上运行的其他应用程序使用,但不会被最终用户使用。通过使用SSRF漏洞,研究人员能够说服Web服务器直接向他发送令牌。
谷歌
根据谷歌的Kubernetes安全负责人Greg Castle的说法,他的公司已经预见到了这种类型的攻击。问题是Shopify以某种方式利用易受攻击的API的beta版本。
Castle说,beta API存在已知问题,当它变得稳定时会被修复。面临的挑战是包括Shopify在内的许多组织都在使用beta API,并且依赖于它。Castle表示谷歌已经宣布,当Kubernetes 1.12在GKE上普遍可用时,它将默认关闭beta API。研究人员还能够访问Kubernetes元数据,从而获得Kube-env变量。Castle说GKE有一个隐藏元数据的选项,它有效地将代理放在元数据服务器和机器上运行的容器之间。
“它过滤掉像Kube-env这样的敏感信息,它实际上是专门针对这种攻击方式而开发的,”Castle说。“当时可以获得[元数据隐藏] .Stanify已经尝试过了,但是它有一些问题,所以它实际上并没有在安全研究人员试过的集群上运行。如果是的话,它会有防止了这次袭击。“
展望未来,Castle表示Google不希望组织选择像元数据隐藏这样的安全性。因此,计划是提供一种新方法,使每个Kubelet引导程序本身具有来自可信平台模块(TPM)的加密断言。
他说:“我们的想法是,未来将更好地引导Kubelet,取代静态令牌并修复这种安全漏洞。”
一般来说,Castle建议Kubernetes用户确保Kubernetes服务帐户配置为最小权限,仅提供对功能所需内容的访问权限。他还建议Kubernetes用户遵循其Kubernetes提供商的平台指南来强化系统。