數(shù)據(jù)要素目前已經(jīng)成為推動(dòng)數(shù)字經(jīng)濟(jì)高質(zhì)量發(fā)展的新型生產(chǎn)要素,圍繞數(shù)據(jù)安全的攻防博弈也逐漸成為當(dāng)下網(wǎng)絡(luò)安全建設(shè)的主旋律之一,API接口作為數(shù)據(jù)互通和共享的主要技術(shù)手段,首當(dāng)其沖要面臨入侵滲透和數(shù)據(jù)竊取的威脅,因此API安全也成為數(shù)據(jù)安全的重要抓手。
API的主要安全問(wèn)題集中在攻擊繞過(guò)、權(quán)限提升和數(shù)據(jù)泄露等方面,本期我們將重點(diǎn)探討API鑒權(quán)相關(guān)的風(fēng)險(xiǎn)。在介紹鑒權(quán)風(fēng)險(xiǎn)之前,首先可以看一下API的分類。
API(應(yīng)用程序編程接口)的標(biāo)準(zhǔn)概念是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力。隨著云計(jì)算、移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的蓬勃發(fā)展,越來(lái)越多的開發(fā)平臺(tái)和第三方服務(wù)快速涌現(xiàn),應(yīng)用系統(tǒng)與功能模塊復(fù)雜性不斷提升,應(yīng)用開發(fā)深度依賴于API之間的相互調(diào)用。按照不同的角度劃分,API接口可以概括為如下類型:
從安全的角度出發(fā),由于API接口既能夠起到連接服務(wù)的功能,又可以用來(lái)傳輸數(shù)據(jù),因此API的安全防護(hù)至關(guān)重要。同時(shí),目前面向互聯(lián)網(wǎng)開放的應(yīng)用服務(wù)類API,主要以HTTP協(xié)議通道來(lái)承載,因此Web類API是目前需要優(yōu)先關(guān)注的類型,從下圖的對(duì)比可以直觀說(shuō)明,API接口的開放將進(jìn)一步縮短攻擊路徑。
接下來(lái)我們?cè)倏聪耊eb類API接口常用的幾種鑒權(quán)設(shè)計(jì):
1、Cookie+Session
最傳統(tǒng)的API鑒權(quán)方式,用戶登錄成功后,服務(wù)端會(huì)生成一個(gè)session來(lái)保持狀態(tài),每個(gè)session都有唯一的session_id存儲(chǔ)在客戶端的cookie中,可以用來(lái)標(biāo)識(shí)用戶登錄信息,這樣客戶端每次訪問(wèn)都帶著session_id,服務(wù)端就可以做鑒權(quán)判斷了。這種方式實(shí)現(xiàn)簡(jiǎn)單但性能不高,而且cookie可以被劫持篡改,主要適用于傳統(tǒng)的web網(wǎng)站。
2、API密鑰
API密鑰指的是服務(wù)器為每個(gè)客戶端生成一對(duì)API Key/API Secret并告知客戶端,客戶端請(qǐng)求時(shí)需要攜帶這些密鑰,只有資源、API Key和API Secret都匹配才可以訪問(wèn)服務(wù)器的資源。這類鑒權(quán)方式實(shí)現(xiàn)相對(duì)簡(jiǎn)單,但密鑰容易被截取和冒充,所以存儲(chǔ)和管理非常重要,并且如果業(yè)務(wù)復(fù)雜,相應(yīng)的維護(hù)工作量也會(huì)很大,所以更適用于做一些聚合類的數(shù)據(jù)獲取。
3、OAuth
OAuth是一個(gè)安全、開放的標(biāo)準(zhǔn),可以提供相互認(rèn)證的框架,通常存在用戶端、服務(wù)端和第三方服務(wù)這三類角色,由用戶端授權(quán)第三方服務(wù)使用自己的某些權(quán)限去訪問(wèn)服務(wù)端的資源,比如用自己的社交平臺(tái)賬號(hào)來(lái)快捷登錄其他應(yīng)用,或者讓手機(jī)上的一個(gè)APP來(lái)共享訪問(wèn)其他應(yīng)用數(shù)據(jù)。這類鑒權(quán)方式安全性更高,但設(shè)置相對(duì)復(fù)雜,并不適用于所有場(chǎng)景。
JSON Web Token是一種安全標(biāo)準(zhǔn),可以發(fā)布令牌并對(duì)發(fā)布的令牌做接入驗(yàn)證,以此來(lái)實(shí)現(xiàn)對(duì)資源訪問(wèn)的權(quán)限控制。JWT是一種基于JSON格式的安全令牌,常用于需要攜帶額外信息的鑒權(quán)場(chǎng)景,比如單點(diǎn)登錄。這類鑒權(quán)方式輕量級(jí)、可擴(kuò)展性好,但是密鑰一旦泄露,令牌可能會(huì)受到威脅。
不同的業(yè)務(wù)服務(wù)可以選擇適用的接口鑒權(quán)方式,從開發(fā)者的視角而言,無(wú)論API的應(yīng)用場(chǎng)景如何,通常也都會(huì)設(shè)計(jì)對(duì)應(yīng)的鑒權(quán)機(jī)制,但從攻擊者的視角而言,再嚴(yán)謹(jǐn)?shù)臋?quán)限設(shè)計(jì)仍然無(wú)法避免邏輯上可以利用的漏洞風(fēng)險(xiǎn)。
最后我們看幾種常見的接口缺陷示例:
1、修改參數(shù)提升接口權(quán)限
某APP用戶管理API接口權(quán)限限制不嚴(yán)格,使用任意能通過(guò)認(rèn)證的token,通過(guò)修改id值即可獲取任意用戶信息,通過(guò)該token亦可隨意調(diào)用其他API接口獲取非授權(quán)用戶信息。
2、修改參數(shù)執(zhí)行批量查詢
某系統(tǒng)數(shù)據(jù)查詢API接口未對(duì)查詢條件和權(quán)限進(jìn)行限制,基于已認(rèn)證token,通過(guò)修改API接口傳輸參數(shù)的pageSize值,即可獲取指定數(shù)量級(jí)的數(shù)據(jù),造成敏感數(shù)據(jù)批量泄露。
3、系統(tǒng)內(nèi)部接口非法調(diào)用
某平臺(tái)程序調(diào)用API接口可用于查詢賬戶信息、訂單信息等敏感數(shù)據(jù),但未對(duì)前端應(yīng)用做強(qiáng)鑒權(quán)限制,第三方應(yīng)用可以違規(guī)調(diào)用該接口并售賣數(shù)據(jù)非法獲利。
類似的風(fēng)險(xiǎn)案例不在少數(shù),由此可見,即使開發(fā)者可以做不同安全級(jí)別的API接口權(quán)限控制,也可以借助API網(wǎng)關(guān)執(zhí)行嚴(yán)格的發(fā)布管理,但攻擊者往往只需要找到一個(gè)邏輯漏洞作為突破口即可達(dá)成目的,因此,從防守者的角度而言,清晰的API接口畫像和行為分析是識(shí)別API鑒權(quán)風(fēng)險(xiǎn)的前提。
盛邦安全API安全防護(hù)系統(tǒng)(RayAPI)可以從鑒權(quán)分析、風(fēng)險(xiǎn)識(shí)別和調(diào)用保護(hù)三個(gè)層面來(lái)對(duì)API接口進(jìn)行風(fēng)險(xiǎn)監(jiān)測(cè)與防護(hù)。
1、鑒權(quán)分析
通過(guò)API接口學(xué)習(xí)與狀態(tài)監(jiān)控,對(duì)接口及其鑒權(quán)情況進(jìn)行分析。
鑒權(quán)要素識(shí)別:檢查接口請(qǐng)求中是否有token、cookie等鑒權(quán)要素。
接口屬性畫像:識(shí)別接口屬性,如系統(tǒng)登錄、數(shù)據(jù)查詢、數(shù)據(jù)操作、功能調(diào)用等。
2、風(fēng)險(xiǎn)識(shí)別
通過(guò)對(duì)API接口請(qǐng)求與響應(yīng)記錄的智能分析,快速識(shí)別鑒權(quán)風(fēng)險(xiǎn)。
未鑒權(quán)風(fēng)險(xiǎn)分析:識(shí)別接口無(wú)鑒權(quán)要素但執(zhí)行敏感調(diào)用的情況,判定為未鑒權(quán)風(fēng)險(xiǎn)。
弱鑒權(quán)風(fēng)險(xiǎn)分析:識(shí)別接口可隨機(jī)數(shù)token訪問(wèn)、同源多token訪問(wèn)等情況,判定為弱鑒權(quán)風(fēng)險(xiǎn)。
3、調(diào)用保護(hù)
針對(duì)可能存在的未鑒權(quán)或弱鑒權(quán)安全風(fēng)險(xiǎn),通過(guò)靈活的訪問(wèn)控制策略來(lái)進(jìn)行加固保護(hù)。
白名單策略:基于源地址、referer、cookie等條件設(shè)定白名單策略,限制非法訪問(wèn)。
多條件策略:按照源地域、接口、請(qǐng)求類型等條件設(shè)定組合策略,執(zhí)行細(xì)粒度的接口訪問(wèn)控制。
在當(dāng)前的數(shù)字化浪潮中,API安全已經(jīng)成為數(shù)據(jù)與網(wǎng)絡(luò)安全的重要一環(huán)。鑒權(quán)作為API安全的第一道防線,其重要性不言而喻。通過(guò)深入分析和理解鑒權(quán)風(fēng)險(xiǎn),我們可以采取一系列有效的應(yīng)對(duì)策略,降低安全風(fēng)險(xiǎn),保護(hù)企業(yè)的數(shù)據(jù)和網(wǎng)絡(luò)安全。
當(dāng)然,API安全并不僅僅局限于鑒權(quán)風(fēng)險(xiǎn)。在后續(xù)的系列文章中,我們將繼續(xù)深入探討API安全的其他重要議題。同時(shí),我們也期待與大家進(jìn)行深入的交流和討論,共同推動(dòng)API安全技術(shù)的發(fā)展,為企業(yè)的數(shù)字化轉(zhuǎn)型保駕護(hù)航。