Serverless或許沒有你想象中的安全

科技云報(bào)道原創(chuàng)。

隨著云計(jì)算技術(shù)的進(jìn)一步成熟,Serverless已成為引領(lǐng)云計(jì)算下一個(gè)十年的技術(shù)熱點(diǎn)。

Serverless能夠幫助開發(fā)者無需關(guān)注服務(wù)器、按照實(shí)際使用付費(fèi)且可以享受服務(wù)自動(dòng)彈性伸縮,將更多的精力放到業(yè)務(wù)邏輯本身。據(jù)Gartner預(yù)測(cè),2025年將有50%以上的全球企業(yè)采用Serverless架構(gòu)。盡管采用Serverless已成為大勢(shì)所趨,但Serverless框架是否真的安全?有人認(rèn)為,使用Serverless云服務(wù)相當(dāng)于把基礎(chǔ)架構(gòu)托管給了云服務(wù)商,一切云服務(wù)安全都由云服務(wù)商來負(fù)責(zé),采用Serverless甚至?xí)痊F(xiàn)有的基礎(chǔ)云服務(wù)更安全。

事實(shí)真的如此嗎?

Serverless面臨的安全風(fēng)險(xiǎn)

Serverless面臨的主要挑戰(zhàn)是云服務(wù)商只負(fù)責(zé)云的安全性,而不是云中的安全性。這意味著Serverless應(yīng)用程序不僅仍然面臨傳統(tǒng)應(yīng)用程序面臨的風(fēng)險(xiǎn)和漏洞,例如:跨站點(diǎn)腳本、訪問控制中斷、數(shù)據(jù)庫注入、敏感數(shù)據(jù)泄露、不安全的反序列化等,而且還面臨著Serverless架構(gòu)特有的安全挑戰(zhàn)。

風(fēng)險(xiǎn)一:增加攻擊面

Serverless函數(shù)使用來自各種事件源的輸入數(shù)據(jù),包括 HTTP API、云存儲(chǔ)、IoT設(shè)備連接和隊(duì)列。這大大增加了攻擊面,因?yàn)槠渲幸恍┎糠挚赡馨皇苄湃蔚南⒏袷?,?biāo)準(zhǔn)應(yīng)用程序?qū)颖Wo(hù)可能無法正確檢查這些格式。如果暴露了用于獲取輸入數(shù)據(jù)(例如協(xié)議、向量和函數(shù))的連接鏈接,則可以將其用作攻擊點(diǎn)。

風(fēng)險(xiǎn)二:安全配置錯(cuò)誤

由于云服務(wù)提供商提供的設(shè)置和功能配置不安全,Serverless應(yīng)用程序容易受到網(wǎng)絡(luò)攻擊。

例如,DoS攻擊經(jīng)常發(fā)生在Serverless應(yīng)用程序中,這是由于函數(shù)和主機(jī)之間的超時(shí)設(shè)置配置錯(cuò)誤,其中低并發(fā)限制用作對(duì)應(yīng)用程序的攻擊點(diǎn)。攻擊者還可以通過插入函數(shù)調(diào)用來利用函數(shù)鏈接,其中他們延長(zhǎng)函數(shù)事件的執(zhí)行時(shí)間比預(yù)期更長(zhǎng),從而允許DoW攻擊并增加Serverless函數(shù)的成本。

此外,使用公共存儲(chǔ)庫(如GitHub和S3存儲(chǔ)桶)中未受保護(hù)的功能也會(huì)由于敏感數(shù)據(jù)泄露而造成DoW攻擊。這是因?yàn)楣粽呃霉_的函數(shù),其中包含代碼中硬編碼的未受保護(hù)的機(jī)密和密鑰。

風(fēng)險(xiǎn)三:身份驗(yàn)證中斷

Serverless應(yīng)用程序是無狀態(tài)的,在其體系結(jié)構(gòu)中使用微服務(wù)會(huì)使獨(dú)立函數(shù)的移動(dòng)部分面臨身份驗(yàn)證失敗的風(fēng)險(xiǎn)。

例如,如果在具有數(shù)百個(gè)Serverless函數(shù)的應(yīng)用程序中僅對(duì)一個(gè)函數(shù)的身份驗(yàn)證處理不當(dāng),則會(huì)影響應(yīng)用程序的其余部分。攻擊者可以專注于一個(gè)功能,通過不同的方法訪問系統(tǒng),如自動(dòng)暴力破解等。

風(fēng)險(xiǎn)四:特權(quán)過大功能的威脅

Serverless生態(tài)系統(tǒng)依賴于許多獨(dú)立的函數(shù),每個(gè)函數(shù)都有自己的角色和權(quán)限。職能之間的大量交互有時(shí)可能導(dǎo)致職能在其權(quán)利上享有過多的特權(quán)。例如,不斷訪問數(shù)據(jù)庫并更新其他函數(shù)的功能可能是一個(gè)巨大的風(fēng)險(xiǎn),因?yàn)樗鼘?duì)參與者可見。

風(fēng)險(xiǎn)五:使用已知漏洞的組件

Serverless應(yīng)用程序通常使用JavaScript(或TypeScript)或Python語言。Python或 JavaScript的開發(fā)人員通常使用大量第三方組件來完成不同的任務(wù)。這些組件可能存在漏洞,使用它們會(huì)使Serverless應(yīng)用程序容易受到攻擊。

保護(hù)Serverless安全性的最佳實(shí)踐

當(dāng)然,面對(duì)Serverless面臨的安全風(fēng)險(xiǎn),企業(yè)可以采用多種Serverless應(yīng)用程序安全最佳實(shí)踐,其中包括:

不要僅僅依賴WAF保護(hù)

擁有WAF很重要,但它不應(yīng)該是保護(hù)Serverless應(yīng)用程序的唯一防線。如果僅依靠WAF保護(hù),安全性可能會(huì)有很大的漏洞。

因?yàn)閃AF只能檢查HTTP流量,這意味著WAF只會(huì)保護(hù)API網(wǎng)關(guān)觸發(fā)的函數(shù),它不會(huì)針對(duì)其他事件觸發(fā)器類型提供保護(hù)。如果函數(shù)從不同的事件源觸發(fā),比如:通知(物聯(lián)網(wǎng)、短信和電子郵件;代碼修改;數(shù)據(jù)庫更改;流數(shù)據(jù)處理;云存儲(chǔ)事件等,則WAF無濟(jì)于事。

使用自定義函數(shù)權(quán)限

事實(shí)上,Serverless應(yīng)用程序中超過90%的權(quán)限已被過度許可。盡管在考慮Serverless應(yīng)用功能級(jí)別時(shí),設(shè)置權(quán)限可能會(huì)令人望而生畏,但不應(yīng)使用一刀切的方法。一個(gè)常見的Serverless安全錯(cuò)誤是設(shè)置更寬松且功能更大的策略,未能最小化單個(gè)權(quán)限和功能角色會(huì)使攻擊面大于應(yīng)有的范圍。

DevSecOps團(tuán)隊(duì)必須與編寫函數(shù)的開發(fā)人員坐下來,查看每個(gè)函數(shù)的用途并創(chuàng)建適當(dāng)?shù)暮瘮?shù)級(jí)別權(quán)限。確定每個(gè)函數(shù)的用途后,可以為每個(gè)函數(shù)創(chuàng)建合適的權(quán)限策略和唯一角色。慶幸的是,整個(gè)過程可以使用各種自動(dòng)化工具來助力。

進(jìn)行代碼審核

Black Duck Software調(diào)查了企業(yè)中常用的1000個(gè)應(yīng)用程序,發(fā)現(xiàn)其中96%都使用了開源軟件。研究人員還發(fā)現(xiàn),60%的軟件都包含安全漏洞,其中一些漏洞已經(jīng)存在了四年以上。這使得代碼所有權(quán)和真實(shí)性成為一項(xiàng)嚴(yán)重的安全風(fēng)險(xiǎn)。

隨著開源軟件的盛行,單個(gè)Serverless函數(shù)可能包含來自不同外部源的數(shù)千行代碼。因此,想要提高Serverless的安全性,執(zhí)行代碼安全審計(jì)至關(guān)重要。

保持對(duì)CI/CD的控制

代碼漏洞可以通過嚴(yán)格的CI/CD來緩解,即使它聽起來很難。

攻擊者可能會(huì)通過各種方式溜進(jìn)來,甚至?xí)诓槐话l(fā)現(xiàn)的情況下潛入企業(yè)內(nèi)部造成嚴(yán)重破壞。若要確保不會(huì)發(fā)生這種情況,必須創(chuàng)建一個(gè)策略和策略,以便在生成期間執(zhí)行代碼分析,然后再上線,并確保每個(gè)函數(shù)都已通過CI/CD。

通過AI密切關(guān)注所有攻擊指標(biāo)

每天只有幾百個(gè)函數(shù)都可以在日志中生成數(shù)十億個(gè)事件,因此很難確定哪些事件是重要的。即使熟悉Serverless應(yīng)用特有的攻擊模式,也不可能掃描所有攻擊模式,這就是為什么必須使用AI工具來增加Serverless的安全性、效率和可見性。

使函數(shù)超時(shí)

所有函數(shù)都應(yīng)具有嚴(yán)格的運(yùn)行時(shí)配置文件,但通常不直觀地創(chuàng)建適當(dāng)?shù)腟erverless函數(shù)超時(shí)。函數(shù)的最長(zhǎng)持續(xù)時(shí)間可以特定于該函數(shù)。DevSecOps 團(tuán)隊(duì)需要考慮配置的超時(shí)與實(shí)際超時(shí)。大多數(shù)開發(fā)人員將超時(shí)設(shè)置為允許的最大值,因?yàn)槲词褂玫臅r(shí)間不會(huì)產(chǎn)生額外的費(fèi)用。

但是,這種方法可能會(huì)產(chǎn)生巨大的安全風(fēng)險(xiǎn),因?yàn)槿绻粽叱晒ψ⑷氪a,他們就有更多的時(shí)間來造成損害。較短的超時(shí)意味著它們可以更頻繁地攻擊,這被稱為“土撥鼠日”攻擊,但它也使攻擊更加明顯。因此,作為Serverless安全性最佳做法,是必須使函數(shù)超時(shí)。

減少對(duì)第三方的依賴

開發(fā)人員通常從第三方派生組件,最好檢查其來源是否可靠以及它們所引用的鏈接是否安全,采取此預(yù)防措施可避免意外漏洞,務(wù)必檢查開源平臺(tái)中使用的組件的最新版本。

大多數(shù)開發(fā)人員更喜歡在現(xiàn)代應(yīng)用中使用開源組件,這使得檢測(cè)任何問題或跟蹤代碼中的漏洞變得更加困難。最好使用最新版本并及時(shí)獲得更新,并提前做好準(zhǔn)備。

為此,可以定期檢查開發(fā)論壇上的更新,使用自動(dòng)依賴項(xiàng)工具,并避免使用依賴項(xiàng)過多的第三方軟件。

處理憑證

建議將敏感數(shù)據(jù)存儲(chǔ)在安全的位置,并使其可訪問性極其有限,必須特別注意API密鑰等憑據(jù)。同時(shí),應(yīng)將環(huán)境變量設(shè)置為運(yùn)行時(shí)間評(píng)估設(shè)置,然后在配置文件中部署時(shí)間。

最好的方法是定期輪換密鑰,即使被黑客入侵,可以確保切斷對(duì)黑客的訪問。每個(gè)組件、開發(fā)人員和項(xiàng)目都必須具有單獨(dú)的密鑰,并加密敏感數(shù)據(jù)和環(huán)境變量。

保護(hù)軟件開發(fā)生命周期

軟件開發(fā)生命周期定義了構(gòu)建應(yīng)用程序、在整個(gè)生命周期中對(duì)其進(jìn)行管理以及簡(jiǎn)化開發(fā)過程。但是,不安全的應(yīng)用程序可能會(huì)帶來巨大的業(yè)務(wù)風(fēng)險(xiǎn)。易受攻擊的應(yīng)用程序可能會(huì)導(dǎo)致個(gè)人數(shù)據(jù)丟失,并對(duì)企業(yè)業(yè)務(wù)聲譽(yù)造成無法彌補(bǔ)的損害。

在開發(fā)階段集成安全性可確保授權(quán)并確保Serverless應(yīng)用程序的正常工作,它還涉及不斷審查弱點(diǎn)條件,并確保應(yīng)用程序與安全實(shí)踐集成。

地理考慮

開發(fā)人員應(yīng)記住,在部署應(yīng)用模塊時(shí),某些地理注意事項(xiàng)可能會(huì)對(duì)Serverless安全性產(chǎn)生負(fù)面影響。從不同地理位置部署的代碼可能會(huì)產(chǎn)生與代碼相關(guān)的問題。例如,紐約的開發(fā)人員將使用US-East-1時(shí)區(qū),而來自亞洲的開發(fā)人員將在部署設(shè)置中使用完全不同的時(shí)區(qū)。

結(jié)語

毫無疑問,新機(jī)遇伴隨著獨(dú)特的挑戰(zhàn)。Serverless架構(gòu)引入了一種新的應(yīng)用程序開發(fā)范例,但是企業(yè)在處理應(yīng)用程序基礎(chǔ)結(jié)構(gòu)時(shí),也必須承擔(dān)額外的安全責(zé)任。

因此,在采用Serverless時(shí),需要更謹(jǐn)慎和明智地嘗試安全應(yīng)用程序最佳實(shí)踐。

【關(guān)于科技云報(bào)道】

專注于原創(chuàng)的企業(yè)級(jí)內(nèi)容行家——科技云報(bào)道。成立于2015年,是前沿企業(yè)級(jí)IT領(lǐng)域Top10媒體。獲工信部權(quán)威認(rèn)可,可信云、全球云計(jì)算大會(huì)官方指定傳播媒體之一。深入原創(chuàng)報(bào)道云計(jì)算、大數(shù)據(jù)、人工智能、區(qū)塊鏈等領(lǐng)域。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2023-05-12
Serverless或許沒有你想象中的安全
Serverless或許沒有你想象中的安全

長(zhǎng)按掃碼 閱讀全文