API安全淺析
Part 01、什么是API
關(guān)于API的定義,先來(lái)看看維基百科上對(duì)API的描述。
“An application programming interface(API)is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.”
從這段描述中可以了解到,API是一個(gè)在應(yīng)用程序開(kāi)發(fā)過(guò)程中會(huì)被經(jīng)常提及的東西,它的全稱是Application Programming Interface(應(yīng)用程序接口)。API通過(guò)定義一組函數(shù)、協(xié)議、數(shù)據(jù)結(jié)構(gòu),明確應(yīng)用程序中各個(gè)組件之間通信與數(shù)據(jù)交互方式。將Web應(yīng)用、操作系統(tǒng)、數(shù)據(jù)庫(kù)以及計(jì)算機(jī)軟硬件的能力以接口的形式提供給外部使用,而無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
Part 02、常見(jiàn)API類(lèi)型
在API的發(fā)展歷程中,根據(jù)其表現(xiàn)形式的不同,大致分為如下四種類(lèi)型:
? 類(lèi)庫(kù)型API
- 定義
類(lèi)庫(kù)型API通常是一個(gè)類(lèi)庫(kù),它的使用依賴于特定的編程語(yǔ)言,開(kāi)發(fā)者通過(guò)接口調(diào)用,訪問(wèn)API的內(nèi)置行為,從而處理所需要的信息。
- 舉例
應(yīng)用程序調(diào)用微軟基礎(chǔ)類(lèi)庫(kù)(MFC)
? 操作系統(tǒng)型API
-定義
操作系統(tǒng)型API通常是操作系統(tǒng)層對(duì)外部提供的接口,開(kāi)發(fā)者通過(guò)接口調(diào)用,完成對(duì)操作系統(tǒng)行為的操作。
- 舉例
應(yīng)用程序調(diào)用Windows API或Linux標(biāo)準(zhǔn)庫(kù)
? 遠(yuǎn)程應(yīng)用型API
- 定義
遠(yuǎn)程應(yīng)用型API是開(kāi)發(fā)者通過(guò)標(biāo)準(zhǔn)協(xié)議的方式,將不同的技術(shù)結(jié)合在一起,不用關(guān)心所涉及的編程語(yǔ)言或平臺(tái),來(lái)操縱遠(yuǎn)程資源。
- 舉例
Java通過(guò)JDBC連接操作不同類(lèi)型的數(shù)據(jù)庫(kù)
? Web應(yīng)用型API
- 定義:
Web應(yīng)用型API通常使用HTTP協(xié)議,在企業(yè)與企業(yè)、企業(yè)內(nèi)部不同 的應(yīng)用程序之間,通過(guò)Web開(kāi)發(fā)過(guò)程中架構(gòu)設(shè)計(jì)的方法,以一組服務(wù)的 形式對(duì)外提供調(diào)用接口,以滿足不同類(lèi)型、不同服務(wù)消費(fèi)者的需求。
- 舉例:
社交應(yīng)用新浪微博的用戶登錄
在API技術(shù)的發(fā)展歷史中,業(yè)界習(xí)慣把前兩個(gè)階段的API稱為古典 API,后兩個(gè)階段的API稱為現(xiàn)代API。現(xiàn)代API是當(dāng)前API技術(shù)的主要使用形式,以Web應(yīng)用型API為主?;诂F(xiàn)代API的服務(wù)對(duì)象不同、技術(shù)形式不同、使用者不同,可以對(duì)現(xiàn)代API做不同類(lèi)型的劃分。
Part 03、API安全問(wèn)題主要成因
近年來(lái),越來(lái)越多的攻擊者開(kāi)始將目標(biāo)對(duì)準(zhǔn)API,因?yàn)锳PI被攻擊或者存在漏洞而出現(xiàn)的攻擊事件或數(shù)據(jù)泄露事件頻頻發(fā)生,例如:
- 2019年11月,Twitter出現(xiàn)過(guò)利用通訊錄匹配功能獲得百萬(wàn)推特用戶賬號(hào)和手機(jī)號(hào)的數(shù)據(jù)泄露事件。
- 2020年3月,F(xiàn)acebook數(shù)據(jù)大規(guī)模泄露,包括用戶昵稱、郵箱、電話、家庭住宅等信息,涉及5億多用戶,
- 2020年4月,GitLab API問(wèn)題導(dǎo)致私有項(xiàng)目的名稱空間泄露。
那么,導(dǎo)致API安全問(wèn)題頻繁發(fā)生的原因是什么呢?
?? 企業(yè)API安全意識(shí)不足
人們通常假設(shè)程序會(huì)按照想象中的過(guò)程運(yùn)行,從而導(dǎo)致API被攻擊的可能性以及影響被嚴(yán)重低估,因此不去采取充分的防護(hù)措施。此外,第三方合作伙伴系統(tǒng)的API,也容易被組織所忽視。
?? 技術(shù)革新導(dǎo)致API安全風(fēng)險(xiǎn)增加
隨著云計(jì)算技術(shù)的廣泛應(yīng)用,越來(lái)越多的企業(yè)將應(yīng)用和數(shù)據(jù)遷移至云端,并暴露核心業(yè)務(wù)能力和流程相關(guān)的API為外部合作伙伴提供服務(wù),無(wú)形中使得API安全風(fēng)險(xiǎn)增大。且很多技術(shù)開(kāi)發(fā)人員熱衷于采納新的、酷的技術(shù),在技術(shù)路線上選擇新的特性,忽視API是否被攻擊,導(dǎo)致API安全風(fēng)險(xiǎn)更不可控。
?? API自身安全機(jī)制不足
API為企業(yè)提供便利的對(duì)外開(kāi)放能力的同時(shí),也為攻擊者提供了攻擊的通道。API自身的安全機(jī)制存在缺陷,比如缺少授權(quán)訪問(wèn)控制或異常檢測(cè)手段、缺少對(duì)API資產(chǎn)的生命周期管理,這些在攻防對(duì)抗中容易成為突破口。
Part 04、OWASP API Top 10
隨著針對(duì)API的攻擊日益嚴(yán)重,OWASP組織推出了OWASP API Security TOP 10項(xiàng)目,對(duì)目前API最受關(guān)注的十大風(fēng)險(xiǎn)點(diǎn)進(jìn)行了總結(jié),以警示業(yè)界提高對(duì)API安全問(wèn)題的關(guān)注。
Part 05、企業(yè)API安全建設(shè)
針對(duì)企業(yè)API安全建設(shè),綜合了網(wǎng)上部分安全建議,以供大家參考:
- API資產(chǎn)管理
主動(dòng)發(fā)現(xiàn)并構(gòu)建API資產(chǎn)列表,清理僵尸/影子API。統(tǒng)計(jì)各個(gè)API的詳情,包括API的請(qǐng)求方法、參數(shù)特征、業(yè)務(wù)用途、發(fā)現(xiàn)時(shí)間、活躍時(shí)間等,多維度繪制API資產(chǎn)畫(huà)像,實(shí)現(xiàn)對(duì)API資產(chǎn)的統(tǒng)一管理。
- API攻擊防護(hù)
綜合利用智能規(guī)則匹配及智能攻擊檢測(cè)引擎,持續(xù)監(jiān)控并分析流量行為,對(duì)安全攻擊進(jìn)行實(shí)時(shí)防護(hù)。智能攻擊檢測(cè)引擎在用戶與應(yīng)用程序交互的過(guò)程中收集數(shù)據(jù),并利用統(tǒng)計(jì)模型來(lái)確定API請(qǐng)求/響應(yīng)的異常。
- 敏感數(shù)據(jù)管控
識(shí)別API訪問(wèn)中的敏感數(shù)據(jù)并分類(lèi)分級(jí)管理,對(duì)傳輸中的敏感數(shù)據(jù)可以進(jìn)行模糊化或者實(shí)時(shí)攔截,防止敏感數(shù)據(jù)泄露。
- 訪問(wèn)行為管控
對(duì)API接口的訪問(wèn)行為進(jìn)行監(jiān)控分析,通過(guò)多維度建立API訪問(wèn)基線,及時(shí)發(fā)現(xiàn)批量注冊(cè)、撞庫(kù)、資源濫用等各類(lèi)異常訪問(wèn)行為,避免惡意訪問(wèn)和接口濫用造成的業(yè)務(wù)損失。
Part 06、總結(jié)
如今API安全已經(jīng)成為提供API服務(wù)的企業(yè)之間以及企業(yè)內(nèi)部都需要關(guān)注的一個(gè)安全問(wèn)題,一旦沒(méi)有很好的保護(hù)好提供服務(wù)的API,不僅會(huì)對(duì)用戶的使用體驗(yàn)以及個(gè)人隱私帶來(lái)威脅和風(fēng)險(xiǎn),而且可能會(huì)使企業(yè)面臨安全威脅和風(fēng)險(xiǎn)。隨著信息技術(shù)的快速發(fā)展,API安全防護(hù)也在持續(xù)演進(jìn)過(guò)程中,企業(yè)要重點(diǎn)關(guān)注API安全的整個(gè)生命周期,加強(qiáng)系統(tǒng)化、自動(dòng)化安全防護(hù)措施,向智能防護(hù)智能的方向演進(jìn)。
?參考文獻(xiàn)
[1] API安全技術(shù)與實(shí)踐 錢(qián)君生 楊明 韋巍
[2] https://mp.weixin.qq.com/s/pZM1qUgct-Xi3Cagi8WzvA
[3] https://mp.weixin.qq.com/s/vJ4xJwOuSI9RXVD4TI6XZQ