身份安全 | 國(guó)內(nèi)外API安全事件引發(fā)的探討 - 再談API安全(一)
2020-08-31瀏覽次數(shù):1456
隨著越來(lái)越多的企業(yè)通過(guò)網(wǎng)站應(yīng)用對(duì)外提供服務(wù),除了用戶界面,相關(guān)的API也成為訪問(wèn)數(shù)據(jù)和服務(wù)的對(duì)外入口;近年來(lái),由于API漏洞引發(fā)的安全事件,影響面積大,造成了廣泛的影響;例如:臉書(shū)2018年由于API的安全漏洞造成2900萬(wàn)用戶的個(gè)人信息泄露,2019年Instagram因API接口漏洞導(dǎo)致用戶數(shù)據(jù)以及照片被泄露;國(guó)內(nèi)2018年發(fā)生華住信息泄露事件導(dǎo)致大量用戶個(gè)人信息以及開(kāi)房信息被泄露,這些事件使API安全相關(guān)的問(wèn)題得到越來(lái)越多的關(guān)注。
許多企業(yè)對(duì)于自身有哪些API對(duì)外提供服務(wù)或使用了哪些API缺乏統(tǒng)一的管理,增加了API安全實(shí)現(xiàn)的復(fù)雜度;業(yè)界將API安全劃分為2種實(shí)現(xiàn)機(jī)制,一是API威脅防護(hù),指檢測(cè)和阻止API的攻擊;另一個(gè)是API訪問(wèn)控制,指提供用戶授權(quán)訪問(wèn)哪些應(yīng)用的API;企業(yè)需要構(gòu)建自己的API安全策略,通過(guò)對(duì)API的全面的防護(hù),避免出現(xiàn)可能引發(fā)的安全問(wèn)題。
企業(yè)API安全的實(shí)施策略首先要走在攻擊者和黑客的前面了解和發(fā)現(xiàn)自己的API;上面這些事件中的企業(yè)不知道他們存在這些不安全的API直到發(fā)生問(wèn)題。企業(yè)可以先從移動(dòng)端應(yīng)用和網(wǎng)站應(yīng)用開(kāi)始梳理,這些應(yīng)用通常是基于前后端分離的開(kāi)發(fā)框架,前端基于Angular或React訪問(wèn)后端服務(wù)API;另外就是應(yīng)用集成的API,這些API通過(guò)ESB或iPaas(集成平臺(tái)及服務(wù))提供應(yīng)用和數(shù)據(jù)的訪問(wèn);這些API無(wú)論是否發(fā)布,還是處于研發(fā)過(guò)程中都需要符合安全和管理要求;企業(yè)可以通過(guò)構(gòu)建API開(kāi)發(fā)者門戶管理內(nèi)部和外部的API;對(duì)于使用的第三方API,如果出現(xiàn)安全漏洞,同樣會(huì)影響到到API使用的客戶端。
企業(yè)需要有API平臺(tái)團(tuán)隊(duì)通過(guò)使用API管理平臺(tái)實(shí)現(xiàn)企業(yè)API的管理和治理,有些API管理工具可以自動(dòng)發(fā)現(xiàn)云平臺(tái)和容器環(huán)境的API,生成API清單;接下來(lái)就是對(duì)這些API分類管理;這些分類可以在API管理平臺(tái)中進(jìn)行標(biāo)注;用于區(qū)分不同API對(duì)應(yīng)的安全管理要求。
發(fā)現(xiàn)并將API分類后,就是識(shí)別API的潛在漏洞
在資料庫(kù)或共享存儲(chǔ)中的API密鑰
API密鑰或其他賬號(hào)信息,例如SSH訪問(wèn)密鑰、數(shù)據(jù)庫(kù)訪問(wèn)賬號(hào)等,這些密鑰保存在云儲(chǔ)存(Amazon S3, 百度云盤(pán))或代碼資料庫(kù)(Github),由于沒(méi)有配置訪問(wèn)控制,使得這些信息可以被公開(kāi)訪問(wèn),上述華住信息泄露事件就是由于開(kāi)發(fā)人員將內(nèi)部數(shù)據(jù)庫(kù)訪問(wèn)信息和賬號(hào)放在公開(kāi)Github資料庫(kù)中導(dǎo)致被黑客利用。
Web和移動(dòng)端應(yīng)用包含硬編碼的API密鑰或賬號(hào)信息,黑客可以通過(guò)反編譯攻擊獲?。焕缰悄芗揖雍臀锫?lián)網(wǎng)廠商Zipato被發(fā)現(xiàn)其某個(gè)設(shè)備的API接口實(shí)現(xiàn)代碼中包含超級(jí)用戶的登錄密鑰。參見(jiàn)https://blackmarble.sh/zipato-smart-hub/amp/
API存在可以被利用的Bug或邏輯缺陷;例如在線游戲平臺(tái)Steam被發(fā)現(xiàn)其某個(gè)API的Bug可以用于獲取激活任何一個(gè)游戲的密鑰。參見(jiàn)https://www.zdnet.com/article/steam-bug-could-have-given-you-access-to-all-the-cd-keys-of-any-game/
通過(guò)中間人攻擊獲取API報(bào)文,從而獲取API密鑰或發(fā)現(xiàn)不安全的API。
另外還需要注意“影子API”:未使用、示例用途或原型API,同樣會(huì)存在上述安全漏洞,需要發(fā)現(xiàn)并加以保護(hù)。
企業(yè)通過(guò)API管理平臺(tái)發(fā)現(xiàn)和整理自身提供和使用的API,識(shí)別API的潛在漏洞;接下來(lái)需要通過(guò)基礎(chǔ)架構(gòu)平臺(tái)中的相關(guān)組件來(lái)實(shí)現(xiàn)API安全,這將在后續(xù)的文章中詳細(xì)介紹并探討。 參考文檔:
- Gartner報(bào)告:API Security: What You Need to Do to Protect Your APIs