安全牛點(diǎn)評:互聯(lián)網(wǎng)商業(yè)創(chuàng)新和傳統(tǒng)企業(yè)數(shù)字化轉(zhuǎn)型都離不開API經(jīng)濟(jì)或API戰(zhàn)略,可以說,API就是傳統(tǒng)行業(yè)價值鏈全面數(shù)字化的關(guān)鍵環(huán)節(jié),API連接的已經(jīng)不僅僅是系統(tǒng)和數(shù)據(jù),還有企業(yè)內(nèi)部職能部門、客戶和合作伙伴,甚至整個商業(yè)生態(tài)(行業(yè)和市場)。但是API面臨的安全威脅,卻很容易被決策者忽視或輕視。本文介紹了API面臨的安全威脅,以及相關(guān)軟件開發(fā)、運(yùn)營和保護(hù)解決方案。
API為軟件和開發(fā)社區(qū)帶來許多便利和好處,例如文檔完備、可公開獲取、標(biāo)準(zhǔn)化、無處不在、高效且易于使用等?,F(xiàn)在,攻擊者正利用API來實施自動化的“高效攻擊”,從Web應(yīng)用程序到云計算服務(wù)都是目標(biāo)。例如,我們知道開發(fā)人員可以使用API將諸如Web注冊表單之類的資源連接到許多不同的后端系統(tǒng)。但是,包括后端更新等任務(wù)的靈活性也為自動攻擊提供了機(jī)會。
API的安全難題或者說悖論在于,盡管大多數(shù)安全從業(yè)者會建議隱藏資源減少暴露面和攻擊面,但業(yè)務(wù)上成功部署的API卻傾向使資源更加開放和可用。API的安全困局實際上也是現(xiàn)代IT面臨的一個共性問題。對于安全團(tuán)隊而言,這意味著制定平衡的、良好的API風(fēng)險緩解策略尤為重要。
圖示:API面臨的安全威脅
OWASP清單:十大API安全風(fēng)險
除了專注于通用軟件應(yīng)用程序的安全風(fēng)險外,OWASP還為API開發(fā)人員提供了有用的指導(dǎo),以降低其實施中的安全風(fēng)險。鑒于OWASP組織在軟件社區(qū)中的突出地位,我們在這里有必要回顧一下2019年OWASP 10大API安全風(fēng)險(內(nèi)容取自O(shè)WASP網(wǎng)站):
01、損壞的對象級別授權(quán)
API傾向于暴露那些處理對象識別的端點(diǎn),造成了廣泛的攻擊面訪問控制問題。在每個能夠訪問用戶輸入數(shù)據(jù)的功能中,都應(yīng)考慮對象級別授權(quán)檢查。
02、損壞的用戶身份驗證
身份驗證機(jī)制通常實施不正確,從而使攻擊者可以破壞身份驗證令牌或利用實施缺陷來臨時或永久地假冒其他用戶的身份。損害系統(tǒng)識別客戶端/用戶的能力會整體損害API安全性。
03、數(shù)據(jù)泄露過多
開發(fā)人員傾向于公開所有對象屬性而不考慮其個體敏感性,依靠客戶端執(zhí)行數(shù)據(jù)過濾并顯示。
04、缺乏資源和速率限制
通常,API不會對客戶端/用戶可以請求的資源大小或數(shù)量施加任何限制。這不僅會影響API服務(wù)器的性能,從而導(dǎo)致拒絕服務(wù)(DoS),而且還為諸如暴力破解之類的身份驗證漏洞敞開了大門。
05、功能級別授權(quán)已損壞
具有不同層級、分組和角色的復(fù)雜訪問控制策略,以及管理功能和常規(guī)功能之間的模糊不清,往往會導(dǎo)致授權(quán)缺陷。通過利用這些問題,攻擊者可以訪問其他用戶的資源和/或管理功能。
06、批量分配
將客戶端提供的數(shù)據(jù)(例如JSON)綁定到數(shù)據(jù)模型,而沒有基于白名單的適當(dāng)屬性過濾,通常會導(dǎo)致批量分配。無論是猜測對象屬性、瀏覽其他API端點(diǎn)、閱讀文檔或在請求有效負(fù)載中提供其他對象屬性,都是攻擊者可以修改權(quán)限之外的對象屬性。
07、安全性配置錯誤
最常見的安全配置錯誤是不安全的默認(rèn)配置、不完整或臨時配置、開放的云存儲、錯誤配置的HTTP標(biāo)頭,不必要的HTTP方法、跨域資源共享(CORS)以及包含敏感信息的冗長錯誤消息導(dǎo)致的。
08、注入
當(dāng)不受信任的數(shù)據(jù)作為命令或查詢的一部分發(fā)送到解釋器時會發(fā)生注入缺陷,例如SQL、NoSQL的命令注入等。攻擊者的惡意數(shù)據(jù)可能會誘使解釋器執(zhí)行非預(yù)期的命令,或未經(jīng)授權(quán)訪問數(shù)據(jù)。
09、資產(chǎn)管理不當(dāng)
與傳統(tǒng)的Web應(yīng)用程序相比,API傾向于公開更多的端點(diǎn),這使得文檔的準(zhǔn)確性和及時更新顯得尤為重要。健康的主機(jī)和最新的API版本能夠有效減輕諸如API版本過期以及調(diào)試端點(diǎn)暴露之類的安全問題。
10、日志和監(jiān)控不足
日志和監(jiān)控不足,再加上事件響應(yīng)的缺失或無效集成,使攻擊者可以進(jìn)一步攻擊系統(tǒng),長期駐留,并橫向移動到更多系統(tǒng)以篡改、提取或破壞數(shù)據(jù)。大量入侵調(diào)查研究表明,檢測到入侵的平均時間超過200天,而且入侵檢測警告通常來自外部第三方,而不是企業(yè)內(nèi)部安全流程或監(jiān)控來檢測。
API的五個通用安全要求
正如OWASP清單所示,網(wǎng)絡(luò)安全社區(qū)開始發(fā)現(xiàn),面向公眾的API往往暴露出大量常見的規(guī)范問題。以下是針對API的五項通用網(wǎng)絡(luò)安全要求,這些要求適用于從傳統(tǒng)軟件到互聯(lián)網(wǎng)新應(yīng)用的各個領(lǐng)域:
能見度
關(guān)于API可見性的諺語是:知識就是力量。應(yīng)用程序開發(fā)人員和用戶需要知道正在發(fā)布哪些API、如何以及何時更新它們、誰在訪問它們以及如何訪問它們。了解用戶的API使用范圍是確保API安全的第一步。
訪問控制
API訪問權(quán)限通常是不受嚴(yán)格控制的,這可能導(dǎo)致意外暴露。確保向不同用戶授予適當(dāng)?shù)腁PI訪問權(quán)限是一項至關(guān)重要的安全要求,訪問者必須與企業(yè)的身份和訪問管理(IAM)系統(tǒng)進(jìn)行協(xié)調(diào)。
Bot緩解措施
在某些環(huán)境中,多達(dá)90%的應(yīng)用程序流量(例如,賬戶登錄或注冊、購物車結(jié)賬)是由自動化Bot生成的。必須了解和管理流量配置文件,包括區(qū)分好Bot和壞Bot,防止自動攻擊的同時又不會阻止合法流量。有效的補(bǔ)充措施包括實施Bot白名單、黑名單和速率限制策略,以及特定于用例和相應(yīng)API端點(diǎn)的地理圍欄。
防止漏洞利用
API通過消除Web表單或移動應(yīng)用程序來簡化攻擊過程,從而使攻擊者更容易利用目標(biāo)漏洞。因此,保護(hù)API端點(diǎn)免遭業(yè)務(wù)邏輯濫用和其他漏洞利用是關(guān)鍵的API安全緩解要求。
數(shù)據(jù)防泄漏
防止由于編程錯誤或安全控制漏洞而產(chǎn)生的API暴露或非授權(quán)訪問,是防止數(shù)據(jù)泄露或丟失的一項至關(guān)重要的安全要求。許多API攻擊都是專門為獲取對后端服務(wù)器和系統(tǒng)提供的關(guān)鍵數(shù)據(jù)的訪問而設(shè)計的。
API社區(qū)繼續(xù)致力于就最佳安全方法達(dá)成更標(biāo)準(zhǔn)化的協(xié)議。例如OAUTH之類的行業(yè)組織提出了非常有用的API安全性標(biāo)準(zhǔn)要求。最可能的進(jìn)展是,軟件安全社區(qū)將在未來幾年中繼續(xù)完善其對各種API安全要求的理解和見解。因此,我們有望看到這一領(lǐng)域的持續(xù)發(fā)展。
API安全方法
API濫用實例
API的自身設(shè)計決定了它是無狀態(tài)的,假定初始請求和響應(yīng)都是獨(dú)立的,且并包含完成任務(wù)所需的所有信息。無論是直接訪問,或作為移動或Web應(yīng)用程序的一部分對API進(jìn)行調(diào)用,都可以改善用戶體驗和整體性能。但攻擊者也很容易編寫腳本并自動執(zhí)行攻擊,如以下兩個示例:
賬戶接管和浪漫欺詐:Zoosk是一個著名的約會應(yīng)用程序。攻擊者反編譯了Zoosk應(yīng)用程序以發(fā)現(xiàn)賬戶登錄API。然后,他們使用自動化攻擊工具包執(zhí)行賬戶接管攻擊。在某些情況下,被盜用的賬戶被用來與其他Zoosk用戶建立發(fā)展個人關(guān)系網(wǎng)絡(luò),當(dāng)家庭成員突然死亡或生病時,攻擊者會借機(jī)向聯(lián)系人索要錢財實施詐騙,毫無戒心的用戶通常會將錢捐給攻擊者。在實施Cequence之前,Zoosk的感情詐騙平均每次作案獲取的收益高達(dá)1.2萬美元。現(xiàn)在,隨著API安全的加強(qiáng),此類攻擊幾乎消失,Zoosk不但大大增強(qiáng)了用戶的信心還提高了品牌知名度。
賬戶接管和財務(wù)欺詐:API成為自動攻擊目標(biāo)的另一個案例是某大型金融服務(wù)客戶。該客戶發(fā)現(xiàn)攻擊者鎖定其移動應(yīng)用程序登錄API環(huán)節(jié)來執(zhí)行賬戶接管。如果成功,攻擊者可通過開放資金轉(zhuǎn)賬(OFX)API進(jìn)行轉(zhuǎn)賬,實施財務(wù)欺詐。而OFX是用于在金融服務(wù)社區(qū)內(nèi)進(jìn)行資金轉(zhuǎn)移的行業(yè)標(biāo)準(zhǔn)API,因此,這些API是公開可用的,并且文檔齊全,以方便使用。
API的無處不在和無狀態(tài)本質(zhì)在許多方面都是有益的,但是它們也帶來了傳統(tǒng)安全技術(shù)無法解決的眾多挑戰(zhàn)。API沒有客戶端組件,因此傳統(tǒng)的防御技術(shù)(如Captchas或JavaScript)和移動SDK工具無法有效地防止自動攻擊。通常,重定向和cookie分配并沒有指定的瀏覽器或者移動應(yīng)用,結(jié)果是API和關(guān)聯(lián)的應(yīng)用程序未受到充分保護(hù)。