我們宣布推出Cloudflare Sequence Analytics for API。使用Sequence Analytics,訂閱API Gateway的客戶可以查看對其端點的最重要的API請求序列。這個新功能可以幫助客戶首先對最重要的端點應(yīng)用保護(hù)。
什么是序列?它是一個按時間排序的列表,包含特定訪問者在瀏覽網(wǎng)站、使用移動應(yīng)用或通過API與B2B合作伙伴交互時發(fā)出HTTP API請求列表。例如,銀行轉(zhuǎn)賬過程會產(chǎn)生序列,其中一部分可能看起來像這樣:
為什么關(guān)注序列對API安全性很重要?如果上面的API在沒有任何先前請求的情況下收到POST/API/v1/transferFunds請求,那么就顯得可疑了。想想看:在沒有用戶相關(guān)賬戶id的情況下,API客戶端如何判定它們是什么?API客戶端如何知道有多少錢可供轉(zhuǎn)賬?雖然這個例子可能很明顯,但對于任何給定的生產(chǎn)API,API請求的數(shù)量都非常龐大,以至于人類分析師很難發(fā)現(xiàn)可疑的使用。
在安全領(lǐng)域,對于無法由人類團(tuán)隊篩查的未知數(shù)量威脅,一種防御方法是建立積極安全模型。不是試圖阻止所有可能存在威脅的流量,而是允許所有已知的正常或良性流量通過,并默認(rèn)阻止其他所有流量。
客戶已經(jīng)可以使用API網(wǎng)關(guān)在兩個主要領(lǐng)域創(chuàng)建積極安全模型:大容量濫用防護(hù)和模式驗證。而序列將構(gòu)成API流量積極安全模型的第三個支柱。API Gateway將能夠在任何給定的API序列中強(qiáng)制端點的順序。通過在API序列中建立順序,API Gateway將記錄或阻止任何不匹配預(yù)期的流量,從而減少濫用流量。
按序列檢測濫用
當(dāng)攻擊者試圖以濫用的方式竊取數(shù)據(jù)時,他們很少遵循預(yù)期的API流量模式。攻擊者通常使用特殊的軟件‘?dāng)_亂’API,以不同的請求參數(shù)發(fā)送多個請求,希望從API中找到意外的響應(yīng),指示竊取數(shù)據(jù)的機(jī)會。攻擊者還可以手動向API發(fā)送請求,試圖欺騙API執(zhí)行未經(jīng)授權(quán)的操作,例如通過失效對象級別身份驗證攻擊提升攻擊者的特權(quán)或?qū)ζ涫谟钄?shù)據(jù)訪問權(quán)。通過速率限制來保護(hù)API是一種常見的最佳實踐;然而,在上述兩個例子中,攻擊者都有可能故意緩慢地執(zhí)行請求序列,以試圖避開大容量濫用檢測。
再次考慮上述請求序列,但這次假設(shè)攻擊者復(fù)制了合法的資金轉(zhuǎn)賬請求并修改了請求的有效負(fù)載,以試圖欺騙系統(tǒng):
如果客戶事先知道該資金轉(zhuǎn)賬端點對安全防護(hù)很重要,并且在一個序列中只發(fā)生一次,他們可以編寫一個規(guī)則來確保它不會連續(xù)調(diào)用兩次,并且GET/balance總是在POST/transferFunds之前。但是,如果事先不知道哪些端點序列是需要保護(hù)的關(guān)鍵,客戶如何知道要定義哪些規(guī)則?較低的速率限制風(fēng)險太大,因為API用戶可能有一些合法的資金轉(zhuǎn)移請求需要在短時間內(nèi)執(zhí)行。在目前的現(xiàn)實中,幾乎沒有任何工具可以防止這種類型的濫用,并且大多數(shù)客戶在發(fā)生濫用后只能被動應(yīng)對,與他們的應(yīng)用團(tuán)隊和反欺詐部門進(jìn)行善后工作。
最終,我們相信,為客戶提供在API請求序列上定義積極安全模型的能力需要三個方面的方法:
1.序列分析:確定何時發(fā)生了哪些API請求序列,并將數(shù)據(jù)匯總成易于理解的形式。
2.序列濫用檢測:識別哪些API請求序列可能是良性或惡意的。
3.序列緩解:確定針對API請求序列的相關(guān)規(guī)則,以決定允許或阻止哪些流量。
序列創(chuàng)建的挑戰(zhàn)
序列分析帶來了一些困難的技術(shù)挑戰(zhàn),因為會話可能長時間持續(xù),可能包含許多請求。因此,僅通過會話標(biāo)識符定義序列并不足夠。取而代之,我們有必要開發(fā)一個解決方案,以便自動識別給定會話中發(fā)生的多個序列。此外,由于重要序列不一定只具有大容量特征,而且可能序列的集合很大,因此有必要開發(fā)一種能夠識別重要序列的方法,而非僅僅顯示頻繁的序列。
為了展示這些挑戰(zhàn),以api.cloudflare.com為例,我們可以按會話對API請求進(jìn)行分組,并繪制不同序列的數(shù)量與序列長度的關(guān)系:
上圖基于一個小時的快照,包含大約8.8萬個會話和2.6億個API請求,涉及302個不同的API端點。通過對每個會話應(yīng)用固定長度的滑動窗口來處理數(shù)據(jù),然后統(tǒng)計應(yīng)用滑動窗口后觀察到的不同固定長度序列(‘n-grams’)的總數(shù)。該圖顯示了窗口大?。ā畁-gram length’)在1到10個請求之間變化的結(jié)果。不同序列的數(shù)量范圍從301(對于一個請求的窗口大?。┑酱蠹s780,000(對于10個請求的窗口大小)。根據(jù)該圖,我們觀察到大量隨著序列長度而增長的可能序列:隨著我們增加滑動窗口大小,我們在樣本中看到越來越大量的不同序列。這種平滑趨勢可以通過以下事實來解釋:我們應(yīng)用了一個滑動窗口(會話本身可能包含許多序列),結(jié)合了相對于序列長度的許多長會話。
考慮到大量可能的序列,試圖找到濫用序列猶如“大海撈針”。
序列分析登場
下面是API Gateway儀表板以序列分析為重點的截圖:
讓我們逐個介紹截圖中看到的新功能。
API Gateway使用本文前面描述的方法智能地確定API使用者發(fā)出的請求序列。API Gateway通過我們稱為相關(guān)性分?jǐn)?shù)(Correlation Score)的指標(biāo)對序列進(jìn)行評分。序列分析顯示了最高相關(guān)分?jǐn)?shù)的前20個序列,我們將這些序列稱為最重要的序列。高重要性序列包含可能會按順序一起發(fā)生的API請求。
您應(yīng)該檢查每個序列,以了解它們的相關(guān)性得分。高相關(guān)性得分序列可能包含很少使用的端點(潛在的異常用戶行為)和常用的端點(可能的良性用戶行為)組成。由于在這些序列中找到的端點通常一起發(fā)生,所以它們代表了API的真正使用模式。您應(yīng)該對這些端點應(yīng)用所有可能的API Gateway加以保護(hù)(速率限制建議、模式驗證、JWT驗證和mTLS),并與您的開發(fā)團(tuán)隊檢查它們的特定端點順序。
我們知道客戶希望明確地在他們的API上設(shè)置允許的行為,而不僅僅是今天API Gateway提供的主動保護(hù)。我們將很快發(fā)布序列順序規(guī)則,并提供基于這些規(guī)則來阻止請求的功能。新的序列順序規(guī)則將允許客戶指定允許的API請求的確切順序,這是另一種建立積極安全模型的方法,以保護(hù)您的API免受未知威脅。
如何開始
所有API Gateway客戶現(xiàn)在都可以使用序列分析。在Cloudflare儀表板中導(dǎo)航到一個區(qū)域,然后單擊“安全”選項卡>API Gateway選項卡>“序列”選項卡。您將看到API使用者請求的最重要序列。
尚未購買API Gateway的Enterprise客戶可以通過在Cloudflare儀表板中啟用API Gateway試用,或聯(lián)系帳戶經(jīng)理。
下一步
基于序列的檢測是一種強(qiáng)大而獨特的能力,它解鎖了許多識別和阻止攻擊的新機(jī)會。隨著我們調(diào)優(yōu)識別這些序列的方法并將其交付到我們的全球網(wǎng)絡(luò),我們將在未來的某個日期發(fā)布自定義序列匹配和實時緩解功能。我們還將確保您能向自己的團(tuán)隊提供可據(jù)以行動的情報,說明哪些API用戶試圖請求匹配策略的序列。