網(wǎng)安加·百家講壇 – OWASP低代碼安全風(fēng)險(xiǎn)TOP10(低代碼平臺(tái)開(kāi)發(fā)安全roomkit知名)
作者簡(jiǎn)介:
肖文棣,OWASP中國(guó)廣東分會(huì)負(fù)責(zé)人、網(wǎng)安加社區(qū)特聘專家,現(xiàn)任某外企安全架構(gòu)師,負(fù)責(zé)應(yīng)用安全設(shè)計(jì)、管理和評(píng)審等工作。
數(shù)字經(jīng)濟(jì)的時(shí)代浪潮讓企業(yè)紛紛踏上了數(shù)字化轉(zhuǎn)型的征程,新業(yè)態(tài)與新產(chǎn)業(yè)的涌現(xiàn),也在催生著新的需求,專業(yè)開(kāi)發(fā)人員的缺口顯著,數(shù)字化轉(zhuǎn)型不斷加快,傳統(tǒng)的應(yīng)用開(kāi)發(fā)方式已經(jīng)無(wú)法滿足需求,近幾年發(fā)展起來(lái)的“低代碼技術(shù)”作為解決企業(yè)數(shù)字化轉(zhuǎn)型以及增強(qiáng)企業(yè)復(fù)原力的有力手段,得到越來(lái)越多的關(guān)注,并不斷滲透到各行各業(yè)。
本文將介紹低代碼相關(guān)概念、背景知識(shí)、以及低代碼的安全風(fēng)險(xiǎn),最后分享OWASP低代碼安全風(fēng)險(xiǎn)Top 10以及相關(guān)預(yù)防措施。
低代碼簡(jiǎn)介
百度百科:“低代碼”是一種可視化編程方法,允許企業(yè)不必通過(guò)編寫(xiě)代碼而是通過(guò)圖形界面快速搭建應(yīng)用程序。
Gartner定義:低代碼平臺(tái)被稱為企業(yè)級(jí)低代碼平臺(tái)(LCAP),是支持快速應(yīng)用開(kāi)發(fā),使用陳述性、高級(jí)的編程抽象實(shí)現(xiàn)一站式應(yīng)用部署、執(zhí)行和管理的應(yīng)用平臺(tái)。
我們可以通過(guò)下圖可以形象地了解低代碼:
1.低代碼簡(jiǎn)史
低代碼雖然近幾年才火起來(lái),但最早卻是可以追溯到20世紀(jì)90年代至21世紀(jì)初的編程語(yǔ)言和工具。至于正式的提出,則是由Forrester Research在2014年第一次正式使用“Low-Code”來(lái)描述這個(gè)市場(chǎng)的,我們這邊也就是這幾年才直譯為“低代碼”,以前都是叫“可視化搭建”。
我們可以了解一下低代碼的發(fā)展歷史:
- 1970年代-1990年代:第四代編程語(yǔ)言(4GL,F(xiàn)ourth-Generation Programming Language)
- 1990年代:快速應(yīng)用程序開(kāi)發(fā)(RAD,Rapid Application Development)
- 2001:模型驅(qū)動(dòng)架構(gòu)(MDA,Model-Driven Architecture)
- 2007:移動(dòng)平臺(tái)(Mobile Platform)
- 2016:低代碼與低代碼開(kāi)發(fā)平臺(tái)
2.低代碼為什么流行?
由此可見(jiàn)此領(lǐng)域許多玩家早在幾年前就已經(jīng)存在,那為什么近幾年低代碼賽道被重點(diǎn)關(guān)注,又重新流行起來(lái)了呢?歸因于兩個(gè)方面:1)技術(shù)成熟度;2)業(yè)務(wù)收益。
我們都知道,任何的技術(shù)都會(huì)遵守所謂的“技術(shù)成熟曲線”。從現(xiàn)在來(lái)看,支撐低代碼的“老技術(shù)”已經(jīng)通過(guò)幾十年的醞釀打磨變得穩(wěn)固,互補(bǔ)的新技術(shù)如云原生、響應(yīng)式web等技術(shù)均慢慢走向成熟,低代碼已經(jīng)快爬到生產(chǎn)力高地;另一方面,由于企業(yè)線上數(shù)字化需求,由過(guò)去簡(jiǎn)單粗暴的的應(yīng)用架構(gòu)逐漸迭代為多樣化體驗(yàn)、多粒度服務(wù)的應(yīng)用架構(gòu),低代碼也就順?biāo)浦?,?yīng)運(yùn)而生。
3.低代碼的分類
- 無(wú)代碼開(kāi)發(fā)平臺(tái)
- 低代碼應(yīng)用平臺(tái)(LCAP)
- 多重體驗(yàn)開(kāi)發(fā)平臺(tái)(MXDP)
- 智能業(yè)務(wù)流程管理套件(iBPMS)
4.低代碼平臺(tái)的核心價(jià)值
隱私價(jià)值
低代碼應(yīng)用程序可以由沒(méi)有深厚技術(shù)技能的業(yè)務(wù)人員開(kāi)發(fā),因此企業(yè)不能將這些開(kāi)發(fā)任務(wù)外包給第三方,而是交給內(nèi)部人員,這增強(qiáng)了保密性。
快速價(jià)值
由于代碼的主要部分已經(jīng)開(kāi)發(fā)出來(lái),用戶無(wú)需手動(dòng)編寫(xiě)代碼,只需直觀配置應(yīng)用程序或進(jìn)行必要的調(diào)整即可開(kāi)發(fā)他們需要的應(yīng)用程序。一項(xiàng)調(diào)查顯示,低代碼平臺(tái)將開(kāi)發(fā)速度提高了5~10倍。
降低成本價(jià)值
由于開(kāi)發(fā)周期縮短,無(wú)論是由公司開(kāi)發(fā)還是由外包人員開(kāi)發(fā),成本都會(huì)降低。
降低復(fù)雜性價(jià)值
應(yīng)用程序不是從頭開(kāi)始構(gòu)建的,其開(kāi)發(fā)已經(jīng)簡(jiǎn)化,因此開(kāi)發(fā)人員可以更加注重自定義軟件,以滿足用戶的要求。
易維護(hù)價(jià)值
軟件維護(hù)非常重要,需要快速更改軟件,以確保應(yīng)用程序提供的服務(wù)與業(yè)務(wù)需求一致。由于低代碼平臺(tái)提供的代碼很少,因此幾乎沒(méi)有需要維護(hù)的代碼。
貼近業(yè)務(wù)實(shí)際價(jià)值
低代碼平臺(tái)提供了一個(gè)簡(jiǎn)單、直觀的界面作為應(yīng)用程序部署的開(kāi)發(fā)環(huán)境。在這種情況下,這些應(yīng)用程序的最終用戶不需要技術(shù)知識(shí),因?yàn)樗麄兞私鈽I(yè)務(wù)需求。根據(jù)調(diào)查,44%的低代碼平臺(tái)用戶是與技術(shù)人員合作的業(yè)務(wù)用戶。
最小化不穩(wěn)定或不一致的需求價(jià)值
在當(dāng)前的軟件開(kāi)發(fā)過(guò)程中,需求之間可能存在沖突,并影響需求變化的應(yīng)用程序。然而,由于業(yè)務(wù)人員也可以參與開(kāi)發(fā),使用低代碼意味著可以快速建立最小的可行產(chǎn)品來(lái)驗(yàn)證想法和客戶要求,然后將資源花在客戶可能不注意的特點(diǎn)和功能上。
5.低代碼平臺(tái)的能力維度
Gartner共列出了低代碼平臺(tái)的11個(gè)關(guān)鍵能力維度:
易用性
易用性是標(biāo)識(shí)低代碼平臺(tái)生產(chǎn)力的關(guān)鍵指標(biāo),是指在不寫(xiě)代碼的情況下能夠完成的功能的多少。
用戶體驗(yàn)
這個(gè)指標(biāo)能夠決定最終用戶對(duì)開(kāi)發(fā)者的評(píng)價(jià)。一般來(lái)說(shuō),獨(dú)立軟件開(kāi)發(fā)團(tuán)隊(duì)為企業(yè)客戶開(kāi)發(fā)的項(xiàng)目對(duì)用戶體驗(yàn)的要求會(huì)顯著高于企業(yè)客戶自主開(kāi)發(fā)的項(xiàng)目,開(kāi)放給企業(yè)的客戶或供應(yīng)商的項(xiàng)目對(duì)用戶體驗(yàn)的要求會(huì)高于企業(yè)內(nèi)部用戶使用的項(xiàng)目。
數(shù)據(jù)建模和管理的便利性
這個(gè)指標(biāo)就是通常所講的“模型驅(qū)動(dòng)”,模型驅(qū)動(dòng)能夠提供滿足數(shù)據(jù)庫(kù)設(shè)計(jì)范式的數(shù)據(jù)模型設(shè)計(jì)和管理能力。開(kāi)發(fā)的應(yīng)用復(fù)雜度越高,系統(tǒng)集成的要求越高,這個(gè)能力就越關(guān)鍵。
流程與業(yè)務(wù)邏輯開(kāi)發(fā)能力和效率
這個(gè)能力有兩層含義:第一層是指使用該低代碼平臺(tái)是否可以開(kāi)發(fā)出復(fù)雜的工作流和業(yè)務(wù)處理邏輯,第二層是開(kāi)發(fā)這些功能時(shí)的便利性和易用性有多高。一般來(lái)說(shuō),第一層決定了項(xiàng)目是否可以成功交付,而第二層則決定了項(xiàng)目的開(kāi)發(fā)成本。無(wú)論如何,使用者都應(yīng)關(guān)注第一層。在此基礎(chǔ)上,如果項(xiàng)目以工作流為主,則還應(yīng)該將第二層作為重要的評(píng)估指標(biāo)。
開(kāi)發(fā)平臺(tái)的生態(tài)系統(tǒng)
低代碼平臺(tái)的本質(zhì)是開(kāi)發(fā)工具,內(nèi)置的開(kāi)箱即用的功能無(wú)法覆蓋更多的應(yīng)用場(chǎng)景。此時(shí),就需要基于該平臺(tái)的完整生態(tài)系統(tǒng)來(lái)提供更深入、更全面的開(kāi)發(fā)能力。很多開(kāi)發(fā)平臺(tái)都在建立自己的插件機(jī)制,這就是平臺(tái)生態(tài)的一個(gè)典型體現(xiàn)。
編程接口與系統(tǒng)集成能力
為了避免“數(shù)據(jù)孤島”現(xiàn)象,企業(yè)級(jí)應(yīng)用通常需要與其他系統(tǒng)進(jìn)行集成,協(xié)同增效。此時(shí),內(nèi)置的集成能力和編程接口就變得至關(guān)重要。除非確認(rèn)在可預(yù)期的未來(lái)項(xiàng)目不涉及系統(tǒng)集成和擴(kuò)展開(kāi)發(fā),否則開(kāi)發(fā)者都應(yīng)該關(guān)注這個(gè)能力。
支持更先進(jìn)的架構(gòu)和技術(shù)
系統(tǒng)是否支持更先進(jìn)的架構(gòu)、清晰的分層,以對(duì)接IoT、RPA、機(jī)器學(xué)習(xí)等新的技術(shù)?如果開(kāi)發(fā)者希望自己開(kāi)發(fā)的應(yīng)用有更長(zhǎng)的生命周期,深入了解低代碼平臺(tái)產(chǎn)品的架構(gòu)就變得尤為重要。
服務(wù)質(zhì)量
與上一點(diǎn)類似,服務(wù)質(zhì)量也是衡量運(yùn)行于公有云模式下低代碼平臺(tái)的指標(biāo)。這里的服務(wù)質(zhì)量,除了通常所說(shuō)的“無(wú)故障使用時(shí)間”外,還要考慮資源是否支持獨(dú)占模式,避免某一個(gè)應(yīng)用的高負(fù)荷,導(dǎo)致其他應(yīng)用不可用或出現(xiàn)性能劣化。
用戶模型與軟件開(kāi)發(fā)周期支持
在軟件開(kāi)發(fā)的生命周期中,除了開(kāi)發(fā)和交付,還有設(shè)計(jì)、反饋、測(cè)試、運(yùn)維等多個(gè)環(huán)節(jié),如系統(tǒng)開(kāi)發(fā)早期的用戶模型建立和驗(yàn)證過(guò)程通常需要快速模擬和迭代,投入的開(kāi)發(fā)力量甚至不少于正式開(kāi)發(fā)。如果一套低代碼平臺(tái)具備全生命周期所需的各項(xiàng)功能,將會(huì)大大簡(jiǎn)化開(kāi)發(fā)者的技術(shù)棧,進(jìn)一步提高開(kāi)發(fā)效率。開(kāi)發(fā)者所開(kāi)發(fā)的系統(tǒng)規(guī)模越大,這一能力就越重要。
開(kāi)發(fā)管理
企業(yè)級(jí)軟件的項(xiàng)目規(guī)模通常比較大,而且業(yè)務(wù)更關(guān)鍵,這就對(duì)開(kāi)發(fā)團(tuán)隊(duì)管理提出了更高的要求?,F(xiàn)代軟件開(kāi)發(fā)中主推的敏捷開(kāi)發(fā)是否能在低代碼中落地,是衡量開(kāi)發(fā)管理能力的重要指標(biāo)。這通常包含代碼庫(kù)權(quán)限管理、版本權(quán)限管理、發(fā)布權(quán)限管理等一系列功能,幫助開(kāi)發(fā)團(tuán)隊(duì)負(fù)責(zé)人降低軟件開(kāi)發(fā)管理過(guò)程中的各種人為風(fēng)險(xiǎn)。開(kāi)發(fā)團(tuán)隊(duì)規(guī)模越大,開(kāi)發(fā)者越應(yīng)當(dāng)關(guān)注這一指標(biāo)。
安全與合規(guī)
低代碼平臺(tái)需要在部署方式、系統(tǒng)安全機(jī)制、權(quán)限管理和控制功能等層面發(fā)力,全方位賦能開(kāi)發(fā)者構(gòu)建安全的、符合企業(yè)規(guī)則的企業(yè)級(jí)應(yīng)用。支持本地部署、全SSL數(shù)據(jù)傳輸、密碼強(qiáng)度策略、跨域訪問(wèn)控制、細(xì)粒度的用戶權(quán)限控制等都是該能力的具體體現(xiàn)。大型企業(yè)、特定行業(yè)企業(yè)(如軍工、金融等)通常對(duì)該指標(biāo)的關(guān)注程度會(huì)更高一些。
6.國(guó)內(nèi)典型的低代碼平臺(tái)
2021年11月,F(xiàn)orrester推出《The State of Low-Code Platforms in China》(中國(guó)低代碼平臺(tái)發(fā)展報(bào)告),將中國(guó)的低代碼平臺(tái)廠商和產(chǎn)品劃分為9大類,并列出了對(duì)應(yīng)的代表廠商和產(chǎn)品。
7.低代碼的安全風(fēng)險(xiǎn)
低代碼/無(wú)代碼應(yīng)用程序的可見(jiàn)性低
低代碼廠商提供的封裝代碼模塊是無(wú)法被開(kāi)發(fā)者檢查測(cè)試的,開(kāi)發(fā)過(guò)程類似于“黑箱狀態(tài)”,只能通過(guò)低代碼平臺(tái)內(nèi)置的組件和流程來(lái)大致檢查其內(nèi)在邏輯是否相容。
不安全的代碼
如果低代碼平臺(tái)的組件開(kāi)發(fā)得不夠完善,這將會(huì)產(chǎn)生潛在的安全問(wèn)題。有漏洞的代碼片段不可避免地會(huì)被復(fù)制粘貼到其他地方。
另一個(gè)要考慮的方面是,許多低代碼和無(wú)代碼平臺(tái)都是以SaaS方式交付的。SaaS應(yīng)用程序本身存在許多安全風(fēng)險(xiǎn),需要適當(dāng)?shù)闹卫砗蛧?yán)格的安全性。如果沒(méi)有對(duì)企業(yè)正在使用的SaaS應(yīng)用程序和平臺(tái)進(jìn)行適當(dāng)?shù)膶彶?,可能?huì)讓其業(yè)務(wù)面臨不必要的風(fēng)險(xiǎn)。
失控的影子IT
由于低代碼和無(wú)代碼平臺(tái)允許快速創(chuàng)建應(yīng)用程序,即使是那些沒(méi)有開(kāi)發(fā)背景的人員,也可能導(dǎo)致影子IT的泛濫。影子IT發(fā)生在業(yè)務(wù)部門(mén)和員工創(chuàng)建應(yīng)用程序并將它們用在企業(yè)內(nèi)部或外部時(shí)。這些應(yīng)用程序可能包含企業(yè)和客戶敏感的或受監(jiān)管的數(shù)據(jù),如果這些應(yīng)用程序在數(shù)據(jù)泄露中受到損害,可能會(huì)對(duì)企業(yè)產(chǎn)生一系列影響。
業(yè)務(wù)中斷
從業(yè)務(wù)連續(xù)性的角度來(lái)看,如果平臺(tái)出現(xiàn)中斷,作為服務(wù)交付的低代碼和無(wú)代碼平臺(tái)可能會(huì)中斷業(yè)務(wù)。對(duì)于企業(yè)而言,為關(guān)鍵業(yè)務(wù)應(yīng)用程序(包括低代碼和無(wú)代碼平臺(tái))建立服務(wù)水平協(xié)議(SLA)非常重要。
8.如何減少低代碼安全風(fēng)險(xiǎn)
- 從具有受人尊敬的行業(yè)聲譽(yù)的可信賴供應(yīng)商處購(gòu)買軟件和平臺(tái)。
- 確保這些供應(yīng)商擁有第三方認(rèn)證證書(shū),以代表其內(nèi)部安全實(shí)踐和流程。
- 在您的應(yīng)用程序和軟件清單中考慮低代碼和無(wú)代碼平臺(tái),以及通過(guò)使用它們創(chuàng)建的應(yīng)用程序。
- 保持良好的訪問(wèn)控制;知道誰(shuí)在訪問(wèn)平臺(tái)以及他們被允許執(zhí)行哪些活動(dòng)。
- 實(shí)施安全數(shù)據(jù)實(shí)踐以了解您的關(guān)鍵數(shù)據(jù)所在的位置,以及使用低代碼和無(wú)代碼平臺(tái)創(chuàng)建的應(yīng)用程序是否包含敏感數(shù)據(jù)。
- 了解低代碼/無(wú)代碼平臺(tái)的托管位置。這些平臺(tái)是否托管在 AWS、Google 或 Microsoft Azure 等超大規(guī)模全球云服務(wù)提供商 (CSP) 中?或者它們是否托管在傳統(tǒng)的本地?cái)?shù)據(jù)中心中,僅限于沒(méi)有物理和邏輯訪問(wèn)控制?
Owasp低代碼安全風(fēng)險(xiǎn)Top10
LCNC-SEC-01:身份冒充
無(wú)代碼/低代碼應(yīng)用程序可以冒充任何應(yīng)用程序用戶隱式使用的用戶身份。這為特權(quán)提升創(chuàng)建了一條攻擊路徑,允許攻擊者隱藏在另一個(gè)用戶的身份背后來(lái)繞過(guò)傳統(tǒng)的安全控制.
攻擊場(chǎng)景示例:
場(chǎng)景#1
創(chuàng)客創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序來(lái)查看數(shù)據(jù)庫(kù)中的記錄。創(chuàng)客使用自己的身份登錄數(shù)據(jù)庫(kù),創(chuàng)建嵌入在應(yīng)用程序中的連接。用戶在應(yīng)用程序中執(zhí)行的每個(gè)操作最終都會(huì)使用創(chuàng)客的身份查詢數(shù)據(jù)庫(kù)。惡意用戶利用這一點(diǎn)并使用該應(yīng)用程序查看、修改或刪除他們不應(yīng)訪問(wèn)的記錄。數(shù)據(jù)庫(kù)日志表明所有查詢都是由單個(gè)用戶(應(yīng)用程序創(chuàng)客)進(jìn)行的。
場(chǎng)景#2
創(chuàng)客創(chuàng)建了一個(gè)業(yè)務(wù)應(yīng)用程序,允許公司員工用他們的信息填寫(xiě)表格。為了存儲(chǔ)表單響應(yīng),創(chuàng)客使用自己的個(gè)人電子郵件帳戶。用戶無(wú)法知道該應(yīng)用程序?qū)⑺麄兊臄?shù)據(jù)存儲(chǔ)在創(chuàng)客的個(gè)人帳戶中。
場(chǎng)景#3
創(chuàng)客創(chuàng)建業(yè)務(wù)應(yīng)用程序并與管理員共享。創(chuàng)客將應(yīng)用程序配置為使用其用戶的身份。除了聲明的目的外,該應(yīng)用程序還使用其用戶的身份來(lái)提升創(chuàng)客的權(quán)限。一旦管理員使用該應(yīng)用程序,就會(huì)無(wú)意中提升了創(chuàng)客的權(quán)限。
預(yù)防措施:
- 提供與外部服務(wù)的連接時(shí),請(qǐng)遵守最低權(quán)限原則。
- 確保應(yīng)用程序使用專用服務(wù)帳戶而不是用戶帳戶。
- 確保應(yīng)用程序在其所有連接中使用單一一致的身份,而不是為每個(gè)連接使用不同的身份。
- 確保維護(hù)適當(dāng)?shù)膶徲?jì)跟蹤,以識(shí)別通過(guò)共享連接執(zhí)行的操作背后的參與者。
LCNC-SEC-02:授權(quán)失效
在大多數(shù)無(wú)代碼/低代碼的平臺(tái)中,服務(wù)連接都是頭等對(duì)象。這意味著應(yīng)用程序、其他用戶或整個(gè)組織之間的連接。應(yīng)用程序也可以與不應(yīng)訪問(wèn)其基礎(chǔ)數(shù)據(jù)的用戶共享。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客創(chuàng)建一個(gè)連接到他們公司的電子郵件賬戶并且無(wú)意中點(diǎn)擊了“與所有人共享”選項(xiàng)。組織中的每個(gè)用戶,包括承包商和供應(yīng)商,都可以訪問(wèn)創(chuàng)客公司的電子郵件賬戶。惡意用戶觸發(fā)“忘記密碼”流程并使用連接來(lái)完成該過(guò)程,從而獲得對(duì)賬戶的控制權(quán)。
場(chǎng)景#2
創(chuàng)客創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序來(lái)查看數(shù)據(jù)庫(kù)中的記錄。該應(yīng)用程序配置成確保每一個(gè)用戶只能查看相關(guān)的記錄。但是應(yīng)用程序的配置方式是底層數(shù)據(jù)庫(kù)連接與其用戶隱式共享。應(yīng)用程序用戶可以直接使用數(shù)據(jù)庫(kù)連接,獲得對(duì)所有記錄的完全訪問(wèn)權(quán)限。
場(chǎng)景#3
管理員使用服務(wù)賬戶將應(yīng)用程序連接到自己的源代碼管理系統(tǒng)(即BitBucket)。配置的服務(wù)賬戶可以不受限制地訪問(wèn)所有存儲(chǔ)庫(kù),以實(shí)現(xiàn)無(wú)縫集成。任何內(nèi)部用戶都可以濫用此連接來(lái)訪問(wèn)自己通常無(wú)權(quán)訪問(wèn)的受限存儲(chǔ)庫(kù)。
預(yù)防措施
- 禁用或監(jiān)控隱式共享連接的使用。
- 在提供對(duì)包含共享連接的環(huán)境的訪問(wèn)時(shí),遵循最小特權(quán)原則。
- 監(jiān)控?zé)o代碼/低代碼平臺(tái)的過(guò)度共享連接。
- 教導(dǎo)業(yè)務(wù)用戶了解連接共享的風(fēng)險(xiǎn)及其與憑證共享的關(guān)系。
LCNC-SEC-03:數(shù)據(jù)泄漏和意外后果
無(wú)代碼/低代碼應(yīng)用程序通常會(huì)跨多個(gè)系統(tǒng)同步數(shù)據(jù)或觸發(fā)操作,這為數(shù)據(jù)跨越組織邊界創(chuàng)造了一條路徑,這就意味這在一個(gè)系統(tǒng)內(nèi)的操作可能會(huì)在其他系統(tǒng)中造成意想不到的后果。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客配置了在其公司郵箱中收到的每一封新電子郵件時(shí)觸發(fā)的自動(dòng)化操作,該操作會(huì)自動(dòng)向創(chuàng)客的個(gè)人電子郵件賬戶發(fā)送一封新的電子郵件,并從公司郵箱中收到的原始電子郵件中復(fù)制收件人、主題和正文。由于數(shù)據(jù)是復(fù)制到單獨(dú)的郵箱而不是從公司郵箱轉(zhuǎn)發(fā)的電子郵件,因此可以自動(dòng)繞過(guò)數(shù)據(jù)防泄漏(DLP)的控制。
場(chǎng)景#2
場(chǎng)景1的創(chuàng)客配置了在兩個(gè)Sharepoint網(wǎng)站之間同步更改的自動(dòng)化操作,因此站點(diǎn)A的每一個(gè)新文件都復(fù)制到站點(diǎn)B。用戶2不小心將敏感文件寫(xiě)入到了站點(diǎn)A,但不知道敏感文件會(huì)同步復(fù)制給站點(diǎn)B。用戶2刪除了戰(zhàn)斗A的敏感文件,然而該敏感的文件仍會(huì)存在站點(diǎn)B上。
預(yù)防措施
- 將平臺(tái)連接限制在批準(zhǔn)的服務(wù)列表中。
- 將自定義連接器的創(chuàng)建限制為專職人員。
- 監(jiān)控平臺(tái)以了解組織邊界外的數(shù)據(jù)流,包括多跳路徑。
LCNC-SEC-04:身份驗(yàn)證和安全通信失效
無(wú)代碼/低代碼應(yīng)用程序一般通過(guò)業(yè)務(wù)用戶設(shè)置的連接來(lái)連接到關(guān)鍵業(yè)務(wù)數(shù)據(jù),這通常會(huì)導(dǎo)致不安全的通信。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客創(chuàng)建了一個(gè)使用FTP連接的應(yīng)用程序,并且沒(méi)有勾選打開(kāi)加密的復(fù)選框。由于應(yīng)用程序與其用戶之間的通信是加密的,因此應(yīng)用程序的用戶無(wú)法獲悉自己的數(shù)據(jù)正在未加密的情況下進(jìn)行傳輸。
場(chǎng)景#2
創(chuàng)客使用管理員憑據(jù)來(lái)創(chuàng)建數(shù)據(jù)庫(kù)連接并構(gòu)建了一個(gè)應(yīng)用程序,且該應(yīng)用程序使用該連接向用戶顯示數(shù)據(jù)。在這種情況下,盡管創(chuàng)客的計(jì)劃是只允許用戶通過(guò)應(yīng)用程序進(jìn)行只讀操作,但用戶也可以使用特權(quán)連接從數(shù)據(jù)庫(kù)中寫(xiě)入或刪除記錄。
預(yù)防措施
- 在生產(chǎn)環(huán)境中,將連接的創(chuàng)建限制為專職人員。
- 監(jiān)控平臺(tái)是否存在不符合最佳做法的連接。
- 教育業(yè)務(wù)用戶了解不安全通信的風(fēng)險(xiǎn)并且在做相關(guān)設(shè)置時(shí)需要讓安全團(tuán)隊(duì)參與進(jìn)來(lái)。
LCNC-SEC-05:安全配置錯(cuò)誤
錯(cuò)誤配置往往會(huì)導(dǎo)致匿名訪問(wèn)敏感數(shù)據(jù)或操作、不受保護(hù)的公共端點(diǎn)、密鑰泄漏和過(guò)度共享。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客創(chuàng)建了一個(gè)的應(yīng)用程序,該應(yīng)用程序公開(kāi)了一個(gè)API端點(diǎn),但該端點(diǎn)沒(méi)有配置為拒絕匿名訪問(wèn)。攻擊者掃描低代碼/無(wú)代碼平臺(tái)的子域,找到該應(yīng)用并竊取其底層數(shù)據(jù)。
場(chǎng)景#2
創(chuàng)客創(chuàng)建了由webhook觸發(fā)的自動(dòng)化,但未能用密鑰保護(hù)該webhook。攻擊者識(shí)別了webhook,現(xiàn)在可以隨意觸發(fā)自動(dòng)化。該自動(dòng)化可能是修改或刪除數(shù)據(jù)。
預(yù)防措施
- 閱讀供應(yīng)商的文檔并遵循最佳實(shí)踐指南。
- 確保配置符合行業(yè)最佳實(shí)踐。
- 監(jiān)測(cè)配置的漂移。
- 為租戶級(jí)的配置實(shí)施一個(gè)變更管理系統(tǒng)。
LCNC-SEC-06:注入處理失效
無(wú)代碼/低代碼應(yīng)用程序以多種方式接收用戶提供的數(shù)據(jù),包括直接輸入或從各種服務(wù)中檢索用戶提供的內(nèi)容。此類數(shù)據(jù)可能會(huì)包含給應(yīng)用程序帶來(lái)風(fēng)險(xiǎn)的惡意有效載荷。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客設(shè)置自動(dòng)化,在新RSS訂閱發(fā)布時(shí)觸發(fā),并將該RSS訂閱存儲(chǔ)到 SQL 數(shù)據(jù)庫(kù)中??刂?該RSS訂閱的攻擊者使用該流程向數(shù)據(jù)庫(kù)中注入刪除重要記錄的命令。
場(chǎng)景#2
創(chuàng)客創(chuàng)建了一個(gè)允許用戶填寫(xiě)表單的應(yīng)用程序。該應(yīng)用程序?qū)⒈韱螖?shù)據(jù)編碼為 CSV文件并將CSV文件存儲(chǔ)在共享驅(qū)動(dòng)器上。即使平臺(tái)為SQL注入攻擊清理了表單輸入,但并沒(méi)有針對(duì)Office宏攻擊進(jìn)行清理。攻擊者利用這一點(diǎn)并在CSV文件中寫(xiě)入一個(gè)宏。用戶打開(kāi)CSV文件以分析用戶表單,然后就執(zhí)行了宏。
預(yù)防措施
- 清理用戶輸入,同時(shí)考慮應(yīng)用程序?qū)?duì)該輸入執(zhí)行的操作。
- 告知業(yè)務(wù)用戶并使其了解到未經(jīng)處理的用戶輸入的會(huì)帶來(lái)的風(fēng)險(xiǎn),這是平臺(tái)無(wú)法自行解決的問(wèn)題。
LCNC-SEC-07:易受攻擊和不可信的組件
無(wú)代碼/低代碼應(yīng)用程序在很大程度上依賴于市場(chǎng)上的現(xiàn)成組件、網(wǎng)絡(luò)或由開(kāi)發(fā)人員構(gòu)建的自定義連接器。這些組件通常不受管理,缺乏可見(jiàn)性,并使應(yīng)用程序暴露在基于供應(yīng)鏈的風(fēng)險(xiǎn)中。
攻擊場(chǎng)景示例
場(chǎng)景#1
整個(gè)組織的創(chuàng)客都使用來(lái)自公開(kāi)的易受攻擊的組件。每個(gè)使用該組件的應(yīng)用程序都暴露在攻擊下。管理員可能會(huì)發(fā)現(xiàn)很難找到受漏洞組件影響的應(yīng)用程序。
場(chǎng)景#2
開(kāi)發(fā)人員創(chuàng)建一個(gè)自定義連接器,允許創(chuàng)客連接到內(nèi)部業(yè)務(wù)API。自定義連接器在URL上傳遞身份驗(yàn)證令牌并向應(yīng)用程序用戶暴露身份驗(yàn)證密鑰。
預(yù)防措施
- 刪除不使用的依賴項(xiàng)、不必要的特性、組件、文件和文檔。
- 持續(xù)關(guān)注這些應(yīng)用程序使用的應(yīng)用程序和組件版本,并掃描該清單以查找已廢棄或易受攻擊的組件。
- 限制使用預(yù)先批準(zhǔn)的公開(kāi)組件。
- 監(jiān)控未維護(hù)的組件或未為舊版本創(chuàng)建安全補(bǔ)丁的組件。
LCNC-SEC-08:數(shù)據(jù)和機(jī)密處理失效
無(wú)代碼/低代碼應(yīng)用程序通常將數(shù)據(jù)或密鑰作為其“代碼”的一部分進(jìn)行存儲(chǔ),或者存儲(chǔ)在平臺(tái)提供的托管數(shù)據(jù)庫(kù)中,而這些數(shù)據(jù)必須按照法規(guī)和安全要求進(jìn)行適當(dāng)?shù)拇鎯?chǔ)。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客創(chuàng)建了一個(gè)業(yè)務(wù)應(yīng)用程序,要求用戶填寫(xiě)包含敏感數(shù)據(jù)的表單。應(yīng)用程序使用平臺(tái)提供的托管數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)結(jié)果,然而由于所有其他創(chuàng)客默認(rèn)使用托管數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),因此其他創(chuàng)客都可以訪問(wèn)到這些敏感數(shù)據(jù)。
場(chǎng)景#2
創(chuàng)客在創(chuàng)建的應(yīng)用程序中使用了自定義的 API,并在代碼中硬編碼了訪問(wèn)該 API 的密鑰。于是,其他創(chuàng)客也就可以直接訪問(wèn)到這些 API 密鑰。此外,這些API密鑰可能會(huì)泄漏到應(yīng)用程序的客戶端代碼中,從而使用戶也可以直接訪問(wèn)到這些密鑰。
預(yù)防措施
- 就與數(shù)據(jù)存儲(chǔ)相關(guān)的合規(guī)性、隱私和安全風(fēng)險(xiǎn)對(duì)業(yè)務(wù)用戶進(jìn)行教育。
- 加強(qiáng)對(duì)于無(wú)代碼/低代碼供應(yīng)商提供的托管數(shù)據(jù)庫(kù)、環(huán)境變量和配置的監(jiān)控,及時(shí)發(fā)現(xiàn)不恰當(dāng)存儲(chǔ)的敏感數(shù)據(jù)。
- 對(duì)于涉及敏感數(shù)據(jù)處理的應(yīng)用程序,確保安全團(tuán)隊(duì)參與其中。
LCNC-SEC-09:資產(chǎn)管理失效
無(wú)代碼/低代碼應(yīng)用程序易于創(chuàng)建開(kāi)發(fā),并且維護(hù)成本相對(duì)較低,這個(gè)特點(diǎn)使這些應(yīng)用程序在保持活動(dòng)狀態(tài)的同時(shí),組織也很容易棄用這些應(yīng)用程序。此外,內(nèi)部應(yīng)用程序可以在不解決業(yè)務(wù)連續(xù)性問(wèn)題的情況下迅速普及。
攻擊場(chǎng)景示例
場(chǎng)景#1
創(chuàng)客創(chuàng)建的應(yīng)用程序成為流行的內(nèi)部工具。制作商離開(kāi)組織或換了另一個(gè)角色。由于API更改,應(yīng)用程序中斷,業(yè)務(wù)中斷。IT部門(mén)根本不了解這個(gè)應(yīng)用程序,也無(wú)法幫助修復(fù)這個(gè)應(yīng)用程序。
場(chǎng)景#2
創(chuàng)客瀏覽平臺(tái)市場(chǎng)并探索應(yīng)用模板。每次單擊都會(huì)創(chuàng)建一個(gè)帶有面向外部URL的應(yīng)用程序。用戶很可能會(huì)忘記這些應(yīng)用程序,造成業(yè)務(wù)數(shù)據(jù)暴露。這種情況再乘以創(chuàng)客的數(shù)量,導(dǎo)致廢棄應(yīng)用程序資產(chǎn)數(shù)量不斷增加。
預(yù)防措施
- 維護(hù)一個(gè)包含有應(yīng)用程序、組件和用戶的全面資產(chǎn)清單。
- 刪除或禁用不使用的依賴項(xiàng)、不必要的特性、組件、文件以及文檔。
LCNC-SEC-10:安全記錄和監(jiān)控失效
無(wú)代碼/低代碼應(yīng)用程序通常缺乏全面的審計(jì)跟蹤,不生成日志或存在日志不足,或者對(duì)敏感日志的訪問(wèn)沒(méi)有嚴(yán)格管控。
攻擊場(chǎng)景示例
場(chǎng)景#1
應(yīng)用日志已關(guān)閉。當(dāng)發(fā)生違規(guī)嘗試行為時(shí),安全團(tuán)隊(duì)無(wú)法確定誰(shuí)訪問(wèn)了該應(yīng)用程序以及訪問(wèn)者嘗試執(zhí)行的操作。
場(chǎng)景#2
業(yè)務(wù)關(guān)鍵型應(yīng)用程序在發(fā)生變更后停止運(yùn)行。由于發(fā)生了多個(gè)變更,每個(gè)變更都會(huì)導(dǎo)致應(yīng)用程序更新,因此很難找到哪個(gè)創(chuàng)客引入了導(dǎo)致問(wèn)題的特定變更。創(chuàng)客必須手動(dòng)檢查每個(gè)應(yīng)用程序版本才能找到有問(wèn)題的版本。由于每個(gè)應(yīng)用程序“保存”都會(huì)轉(zhuǎn)換為更新,因此更新的數(shù)量將使手動(dòng)過(guò)程的成本過(guò)高。在某些平臺(tái)上,創(chuàng)客只能查看應(yīng)用程序的當(dāng)前版本,因此創(chuàng)客將無(wú)法找到或恢復(fù)到穩(wěn)定版本。
預(yù)防措施
- 利用平臺(tái)內(nèi)置功能收集用戶訪問(wèn)和平臺(tái)審核日志。
- 在適用的情況下,使用日志記錄機(jī)制檢測(cè)應(yīng)用程序,以提供額外的可見(jiàn)性。
- 通過(guò)配置平臺(tái)以避免記錄原始應(yīng)用程序的數(shù)據(jù),確保日志不包含敏感數(shù)據(jù)。
– End –