前段時(shí)間,我們報(bào)道了前 AWS 員工闖入 Capital One 服務(wù)器,竊取 1.06 億用戶信息的重大數(shù)據(jù)泄露事件。你也許會(huì)疑惑,為什么當(dāng)下我們總能聽(tīng)到數(shù)據(jù)安全相關(guān)的新聞?如何才能避免此類(lèi)事件的再次發(fā)生呢?本文將結(jié)合 Capital One 數(shù)據(jù)泄露的案例,從技術(shù)與非技術(shù)方面進(jìn)行深入討論。
本文中的假設(shè)基于法院文件中提供的數(shù)據(jù)。
近日,自 2005 年開(kāi)始申請(qǐng) Capital One 信用卡的客戶數(shù)據(jù)被曝泄露。涉及數(shù)據(jù)包含約 1 億美國(guó)人和 600 萬(wàn)加拿大人。泄露的數(shù)據(jù)存儲(chǔ)在 AWS 的 S3 存儲(chǔ)桶中。如果你的數(shù)據(jù)受到損害,除了信用監(jiān)控外,不要指望任何其他信息,因?yàn)槊赓M(fèi)信用監(jiān)控是從 Equifax 獲得的。在這一點(diǎn)上,客戶不知道他們的信息是否在那里,但他們想知道自己的財(cái)務(wù)記錄。
在此次事件中,我認(rèn)為 Capital One 應(yīng)承擔(dān)全部責(zé)任。經(jīng)調(diào)查確認(rèn),Capital One 已經(jīng)承認(rèn)這是一起由于配置錯(cuò)誤的防火墻策略導(dǎo)致的數(shù)據(jù)泄露事件。我認(rèn)為它不像防火墻或許可安全策略那么簡(jiǎn)單。就防火墻策略問(wèn)題,我知道這是攻擊者利用的東西,但我認(rèn)為實(shí)際情況不僅僅是這樣,還有更多需要挖掘的內(nèi)幕。
安全行業(yè)當(dāng)前面臨的挑戰(zhàn)
安全專(zhuān)業(yè)人員試圖檢查這種規(guī)模的安全事件,我們希望了解受害者本可以采取的正確行動(dòng),以及防備攻擊者可能利用的安全漏洞。這些知識(shí)可以幫助安全社區(qū)更好地防范威脅,修復(fù)錯(cuò)誤的配置,修補(bǔ)可能使我們的基礎(chǔ)架構(gòu)遭受類(lèi)似的安全漏洞。由于我們?nèi)匀粵](méi)有收到來(lái)自 Capital One 的官方聲明,但以我的經(jīng)驗(yàn)來(lái)看,我依然懷疑會(huì)再次發(fā)生這種情況。我們可以參考法庭文件和其他報(bào)告中的關(guān)聯(lián)信息內(nèi)容,讓我們開(kāi)始分析吧。
在消息發(fā)生后的第二天,我在西雅圖市中心和一些朋友喝咖啡聚會(huì),我們當(dāng)時(shí)在討論關(guān)于 AS-Code 系統(tǒng)的未來(lái)。在聚會(huì)之后,一位從事安全工作的伙伴問(wèn)道,“為什么 Capital One 的云托管系統(tǒng)無(wú)法保護(hù)客戶數(shù)據(jù)呢?” 他拋出這個(gè)問(wèn)題讓我來(lái)回答,因?yàn)槲覂A向于使用工具而不是從輪子做起。我對(duì)自己說(shuō),這很公平,如果你推薦一項(xiàng)技術(shù),你應(yīng)該能說(shuō)明其優(yōu)缺點(diǎn)。我認(rèn)為它對(duì)任何云安全團(tuán)隊(duì)來(lái)說(shuō)都是一個(gè)很好的工具。根據(jù)我當(dāng)時(shí)的信息,我對(duì)攻擊者能夠利用的 AWS 資源知之甚少。我只知道錯(cuò)誤配置的防火墻,但我并不知道該防火墻是否有安全組,在 ELB 前面的 AWS Web 應(yīng)用程序防火墻(WAF),還是一些第三方 Web 應(yīng)用程序防火墻(開(kāi)源 / 商業(yè))。根據(jù)調(diào)查結(jié)果,附加到受損 EC2 實(shí)例的 IAM 角色,它讓我認(rèn)為有問(wèn)題的防火墻確實(shí)屬于第三方。作為 IAM 角色的應(yīng)用程序防火墻(WAF)無(wú)法直接“附加”到 AWS 托管的應(yīng)用程序防火墻 WAF。
?
?
典型的 ModSecurity 部署
幸運(yùn)的是,Krebs 的一份報(bào)告顯示,受損資源是一個(gè)配置錯(cuò)誤的開(kāi)源 Web 應(yīng)用防火墻(ModSecurity)。我查看了技術(shù)細(xì)節(jié)來(lái)回答這個(gè)問(wèn)題,我問(wèn)自己,“它真的與工具有關(guān)嗎?” 如果我們確定云托管有可以防止此類(lèi)攻擊的策略,我們是否會(huì)獲得任何收益? 正確的問(wèn)法可能是:“像 Capital One 這種技術(shù)領(lǐng)先的公司,如何托管數(shù)以百萬(wàn)計(jì)的個(gè)人財(cái)務(wù)記錄,而不是信任這些基本配置的東西。”
Capital One 執(zhí)行副總裁兼首席技術(shù)官 George Brady 說(shuō):“在 Capital One 所做的一切工作中,我們始終從客戶需求開(kāi)始,以找出如何將服務(wù)提供給客戶。與 AWS 合作最大的好處是我們不必?fù)?dān)心構(gòu)建和運(yùn)營(yíng)必要的云基礎(chǔ)設(shè)施。所以,我們可以集中時(shí)間、金錢(qián)和精力為我們的客戶創(chuàng)造更加良好的體驗(yàn)。“
下面,我們還會(huì)引用這句話!讓我們繼續(xù)深入分析。
?
?
那些活躍在云社區(qū)的人非常清楚 Capital One 在云應(yīng)用方面是一個(gè)領(lǐng)導(dǎo)者。 Capital One 在眾多云大會(huì)中公開(kāi)談?wù)撍麄兊脑苾?yōu)先戰(zhàn)略。通過(guò)閱讀 Capital One AWS 案例研究,你可以輕松地在線找到更多相關(guān)信息。Capital One 背后有一個(gè)出色的云安全工具(Cloud Custodian)。數(shù)百名云專(zhuān)業(yè)人員使用該工具實(shí)施安全護(hù)欄,以增強(qiáng)安全性并幫助控制 AWS 的云成本。此外,Capital One 聘請(qǐng)了國(guó)際上相當(dāng)有才華的安全專(zhuān)業(yè)人士。多年前,當(dāng)我開(kāi)始我的云生涯時(shí),我申請(qǐng)過(guò) Capital One 的云崗位。我通過(guò)了他們所有的數(shù)字和推理考試。同時(shí),我花了幾個(gè)星期的時(shí)間精心準(zhǔn)備面試,而且我還有三個(gè) AWS 認(rèn)證。遺憾的是,我卻沒(méi)有得到這份工作,這是我在過(guò)去七年中唯一沒(méi)有得到的工作機(jī)會(huì)。簡(jiǎn)而言之,Capital One 不雇用任何有實(shí)戰(zhàn)背景的人來(lái)運(yùn)維云系統(tǒng)。他們剛剛聘請(qǐng)前 Netflix 工程師 Will Bengtson,并讓他擔(dān)任云安全總監(jiān)。在 Netfix 的時(shí)候,Will 就知道如何保護(hù)云基礎(chǔ)設(shè)施,并在此次違規(guī)之前很久就已經(jīng)為 Netflix 寫(xiě)了一篇關(guān)于 SSRF 的博客。在 Capital One,Will 提出了其所需的武器來(lái)阻止這種安全攻擊。
那么,到底發(fā)生了什么情況?
Capital One 擁有強(qiáng)大的云計(jì)算能力、工具、才華橫溢的安全專(zhuān)業(yè)人員,為什么仍遭到黑客攻擊?讓我們?cè)俅我?George Brady 的發(fā)言,因?yàn)槲艺J(rèn)為這是一切開(kāi)始的地方。
情況比想象中復(fù)雜
高管和決策者非常高興地將部分運(yùn)維成本轉(zhuǎn)移到云提供商,其中包括安全運(yùn)維部分。AWS 明確標(biāo)注了他們的共享責(zé)任模型。在這種模型中,他們確定了客戶需要擁有的區(qū)域。共享責(zé)任模型歸結(jié)為我們使用的任何云服務(wù),我們將始終承擔(dān)保護(hù)數(shù)據(jù)的責(zé)任。
如果你再次閱讀 George Brady 的引文,你很難看出他對(duì)安全性的關(guān)注。他對(duì)如何專(zhuān)注于客戶表現(xiàn)出明顯的興奮,雖然這并不意味著他不關(guān)心安全,但它強(qiáng)化了我對(duì)行業(yè)的一致性看法,即企業(yè)高管并不關(guān)心安全問(wèn)題,他們更關(guān)心縮短產(chǎn)品上市時(shí)間,并不斷提高需求的數(shù)量,這意味著開(kāi)發(fā)人員面臨很大的壓力。在以前的職位中,我一直非常接近客戶。客戶通常不太關(guān)心安全性,因?yàn)樗麄兏P(guān)心當(dāng)前功能的增強(qiáng)和新功能,這決定了高管需要關(guān)注的內(nèi)容,基于客戶的決策也會(huì)影響到開(kāi)發(fā)人員,而且往往會(huì)使對(duì)安全性的建設(shè)削弱。
客戶需要更多能點(diǎn)擊的小界面部件和小工具,但他們只在安全事件發(fā)生時(shí)才關(guān)心。技術(shù)高管們正在忙著讓公司賺更多錢(qián),這就是他們被聘用的價(jià)值。問(wèn)題是,對(duì)于技術(shù)支持可以幫助防止造成災(zāi)難性的安全計(jì)劃方面,我們沒(méi)有看到太多行動(dòng)付諸實(shí)施。
高管希望開(kāi)發(fā)人員快速交付,我也相信他們想避免違規(guī)行為。我認(rèn)為,在縮小開(kāi)發(fā)范圍與安保行動(dòng)之間的差距時(shí),他們并沒(méi)有走在路上。開(kāi)發(fā)人員負(fù)責(zé)在云基礎(chǔ)架構(gòu)上構(gòu)建這些服務(wù)、維護(hù)本地工作的負(fù)載很重,這使得他們很難為在安全性上保持應(yīng)有的關(guān)注。
由于沒(méi)有得到技術(shù)領(lǐng)導(dǎo)者的支持,安全人員注定在這種資源爭(zhēng)奪戰(zhàn)中失敗。這一問(wèn)題在整個(gè)企業(yè)范圍內(nèi)都很明顯,并且不會(huì)很快消失。通常,在年度安全審核之后,軟件開(kāi)發(fā)團(tuán)隊(duì)的路線圖會(huì)被修改以適應(yīng)新的需要。我們很少在重載或活動(dòng)沖刺中看到任何安全項(xiàng)。直到我們慶祝那些特意采取行動(dòng)以改善安全狀況的開(kāi)發(fā)團(tuán)隊(duì),才會(huì)出現(xiàn)積極的變化。
安全專(zhuān)業(yè)人員被迫創(chuàng)建和管理所有安全類(lèi)型的情況。我們已經(jīng)讓一個(gè)不安全的版本構(gòu)建進(jìn)入生產(chǎn)階段,因?yàn)槲覀儧](méi)有權(quán)力阻止它。我們要運(yùn)維一個(gè)易受攻擊的基礎(chǔ)設(shè)施,因?yàn)楸Wo(hù)功能意味著開(kāi)發(fā)人員必須做更多(不必要的)工作來(lái)使其應(yīng)用程序工作。如果你幾年來(lái)始終從事安全工作,你應(yīng)該知道我的意思。
如果你閱讀過(guò)我之前的博客,你會(huì)發(fā)現(xiàn)我是一個(gè)簡(jiǎn)化安全流程以適應(yīng)業(yè)務(wù)的大力倡導(dǎo)者。重型安全流程和文檔不是答案,答案是安全與開(kāi)發(fā)之間的密切合作。編寫(xiě)了安全策略,卻沒(méi)有人能夠找到它們,沒(méi)有人閱讀它們并把將其應(yīng)用到實(shí)際過(guò)程中。安全和運(yùn)營(yíng)應(yīng)為開(kāi)發(fā)人員構(gòu)建支持平臺(tái),以便將可靠和安全的代碼順利地轉(zhuǎn)移到生產(chǎn)環(huán)境。沒(méi)有 CTO 和技術(shù)領(lǐng)導(dǎo)的支持,就不會(huì)有健康的安全計(jì)劃。而沒(méi)有開(kāi)發(fā)團(tuán)隊(duì)的支持,它將無(wú)法運(yùn)作。
技術(shù)領(lǐng)導(dǎo)者的關(guān)鍵點(diǎn)
你的員工可能不會(huì)談?wù)撨@些,所以這幾點(diǎn)請(qǐng)免費(fèi)從我這里拿走并實(shí)踐吧!
首先了解你的安全狀況:你有什么數(shù)據(jù)?誰(shuí)想要它?它有多重要?你能做些什么來(lái)保護(hù)它?如果被盜,你會(huì)怎么樣?
這與你的工具無(wú)關(guān):如果你的安全團(tuán)隊(duì)可以使用它們來(lái)實(shí)施安全策略,那么它們就毫無(wú)用處。
這與你是否擁有才華橫溢的安全團(tuán)隊(duì)無(wú)關(guān):沒(méi)有高層的全力支持,無(wú)法應(yīng)對(duì)永無(wú)止境的安全挑戰(zhàn)。
這不完全是可以立即獲得的利潤(rùn),單次安全泄露意味著損失數(shù)百萬(wàn)美元和公司聲譽(yù)受損。
建立健康的安全文化,讓每個(gè)人都對(duì)安全事件負(fù)責(zé)。每個(gè)人在實(shí)施安全措施時(shí)都會(huì)受到歡迎,因?yàn)樗麄冊(cè)诎l(fā)布新服務(wù)時(shí)會(huì)受到稱(chēng)贊。
通過(guò)鼓勵(lì)團(tuán)隊(duì)范圍的協(xié)作,雇傭有安全經(jīng)驗(yàn)的專(zhuān)業(yè)人士,并改變組織安全文化。
通過(guò)編寫(xiě)安全策略,將其提交到托管與應(yīng)用程序代碼的相同 Git 倉(cāng)庫(kù)來(lái)簡(jiǎn)化安全性。
?
?
即使本次調(diào)查沒(méi)有從技術(shù)角度提供足夠多的細(xì)節(jié)。 我們從安全工程師的角度來(lái)看,受感染的服務(wù)器、權(quán)限過(guò)度寬松的 IAM 角色、訪問(wèn)包含數(shù)據(jù)的 S3 存儲(chǔ)桶策略問(wèn)題都導(dǎo)致了此次數(shù)據(jù)泄露事件的發(fā)生。
實(shí)施步驟:
攻擊者破壞了配置錯(cuò)誤的 Web 應(yīng)用程序防火墻后面的 EC2 實(shí)例。
受感染的服務(wù)器可以大量訪問(wèn)云存儲(chǔ)桶(可怕的做法)。
聰明的攻擊者不會(huì)從元數(shù)據(jù)服務(wù)中提取角色憑據(jù),并使用這些憑據(jù)進(jìn)行 API 調(diào)用(如果已安裝 AWS CLI)。(如果啟用了 AWS Guard Duty 警報(bào),則會(huì)觸發(fā)警報(bào))只有攻擊者可以直接從受感染的 EC2 運(yùn)行該命令,他們可以訪問(wèn)并運(yùn)行 S3 數(shù)據(jù)同步。
?
?
最壞的情況下,你可以擁有 s3 資源的最后一個(gè)
我并不是說(shuō)上圖是最確切的,但考慮到本次攻擊者能夠完成的事情,實(shí)際情況應(yīng)該八九不離十。
通過(guò)這些簡(jiǎn)單的方法可以預(yù)防這種攻擊:
最低權(quán)限:為什么要讓 EC2 實(shí)例訪問(wèn)大量存儲(chǔ)桶。我們需要制定細(xì)粒度權(quán)限策略,這樣你就可以讓代碼只訪問(wèn)特定存儲(chǔ)桶。
健康安全組 / 防火墻:你的安全組或防火墻絕不應(yīng)允許從入站流量到可直接訪問(wèn)敏感數(shù)據(jù)。
監(jiān)控:Capital One 承認(rèn)他們的日志顯示了有問(wèn)題的服務(wù)器與 Tor 出口節(jié)點(diǎn)進(jìn)行的通信。那么,誰(shuí)在看那些東西?
只有那些簡(jiǎn)單的安全措施就能防止這種違規(guī)行為?是的,我說(shuō)過(guò)。
我能自動(dòng)完成上述安全操作嗎?是的。請(qǐng)使用 Capital One Cloud Custodian!
編寫(xiě)云托管策略,創(chuàng)建該策略標(biāo)記允許的 AWS Config 安全規(guī)則。
使用 Cloud Custodian 創(chuàng)建響應(yīng)以下 Gurd Duty 發(fā)現(xiàn)的策略:“通過(guò)啟動(dòng)實(shí)例角色,專(zhuān)門(mén)為 EC2 例創(chuàng)建憑據(jù)管理從外部 IP 地址的濫用。”
編寫(xiě)云托管策略,該策略針對(duì) Tor 出口節(jié)點(diǎn)通信的事件可作出安全應(yīng)急反應(yīng)。
寫(xiě)在最后
我真的希望看到 Capital One 站出來(lái)分享案例細(xì)節(jié)、知識(shí)經(jīng)驗(yàn),因?yàn)檫@對(duì)整個(gè)安全社區(qū)都有重要價(jià)值,而不是停留在他們的云優(yōu)先策略上。類(lèi)似事件可能發(fā)生在我們每個(gè)人身上,我們能做的就是應(yīng)對(duì)安全挑戰(zhàn),并建立強(qiáng)大的云安全社區(qū)。
原文鏈接:What’s in Your Bucket?
作者:Ammar Alim
翻譯:王文剛
來(lái)源:InfoQ








