OWASP基金會提出十大 API 風險警告
API(Application Programming Interface,應用程序接口)是一些預先定義的接口(如函數、HTTP接口),或指軟件系統不同組成部分銜接的約定。雖然API為連接各軟件組件提供了一套有效的框架,但它們通常將后端數據暴露給第三方,因而成為攻擊者的主要目標。
不安全的API會持續擴大應用程序攻擊面,讓黑客更容易進行偵察、收集配置信息以及策劃網絡攻擊。日前,OWASP(Open Web Application Security Project,開放式Web應用程序安全項目,一個致力于提高軟件安全性的非營利基金會)列出了十大API漏洞,組織需要警惕這些漏洞風險,具體包括:
1、損壞的對象級授權
API依靠對象級授權來驗證合法用戶的資源訪問權限。API端點收到所請求對象的ID后,在代碼級實施授權檢查機制,以確保用戶有權執行所請求的操作。API通常會暴露為對象提供標識符的端點。如果沒有對象級授權檢查或實施不當,攻擊者可以操縱所請求對象的API端點,之后無法正確驗證提交請求的用戶擁有所需的資源訪問權限,從而授予未經授權的訪問權。
2、受損的用戶身份驗證
按照設計,API端點必須暴露給外部服務,并由各種代理使用用戶身份驗證來訪問。因此,API端點實施的驗證不充分或不正確,會讓惡意用戶可以暫時破壞合法用戶的驗證令牌,以訪問敏感信息。API端點受損的驗證可能會出現多個問題。導致驗證受損的一些常見錯誤配置包括如下:
- 不安全的內部API
- 薄弱的API密鑰,密鑰又不經常輪換
- 使用GET參數發送敏感信息的API端點
- 無效的令牌訪問驗證/JWT訪問令牌缺少驗證
- 使端點容易受到憑證填充攻擊和蠻力攻擊的授權缺陷
- 弱密碼/管理不善的密碼
用戶驗證受損的API允許惡意黑客冒充合法用戶的身份,從而為更嚴重、更復雜的攻擊提供機會。
3、數據暴露過度
處理用戶請求時,API通常依賴客戶端UI過濾訪問的數據。用戶請求訪問資源時,API返回存儲在應用程序中的完整數據對象。然后,客戶端應用程序過濾響應,僅顯示用戶想要查看的信息。遺憾的是,開發人員常常錯誤地將API設置為通用數據源。這樣一來,攻擊者可以直接調用API,以訪問客戶端UI應過濾掉的數據。攻擊者根據暴露內容進行破壞,或使用暴露的數據來提升權限。
4、缺乏資源和速率限制
一些API缺少默認機制以限制來自特定客戶端的請求頻次和數量。黑客利用這個空子,發出上傳/修改大文件的請求,或者向API發出大量請求,從而使API主機不堪重負。在這種情況下,API硬件可能耗盡內存、網絡帶寬和CPU,并遇到緩沖區溢出。這增加了API的復發時間(relapse time),減少了API可以處理的客戶端數量,常常導致拒絕服務。
5、批量分配
當API將客戶端提供的數據綁定到應用程序,又沒有適當的過濾技術時,就會發生批量分配。開發人員使用綁定方法,通過函數將用戶輸入與內部對象和代碼變量綁定,以加快開發周期。攻擊者可以通過評估API結構和對象關系,查找批量分配漏洞,以更新和修改旨在隱藏起來的對象屬性。一旦攻擊者修改了敏感對象的屬性,往往會提升權限、繞過安全檢查并篡改敏感數據。
6、安全配置錯誤
API資源、應用程序基礎架構和傳輸協議可能含有錯誤配置,因而會導致安全事件。這些錯誤配置可能存在于API資源、傳輸協議或應用程序基礎架構中。這包括:
- 使用沒有驗證或驗證薄弱的默認配置
- 未強制執行HTTPS
- 不必要的HTTP方法
- 錯誤配置的HTTP標頭
- 未凈化處理的輸入導致數據受損
- 數據泄露
- 敞開的云存儲
- 詳細冗長的錯誤消息
- 臨時配置
- 跨域資源共享
7、惡意注入
API端點通常將用戶數據作為請求參數來使用,或在其URL中使用。當API端點沒有任何內置機制來區分不受信任的用戶數據時,攻擊者可以將惡意輸入注入應用程序。攻擊者還可以將這些不受信任的數據作為命令/查詢的一部分,誘使應用程序執行它們,從而訪問敏感數據。
缺乏合適的輸入數據驗證會導致注入攻擊,包括數據泄露、權限提升或拒絕服務。常見的命令注入漏洞包括:帶API參數的SQL注入、操作系統命令注入和跨站腳本等。
8、資產管理不當
由于現代應用程序開發的交付周期很短,DevOps團隊經常將更多的API部署到生產環境中,這帶來了資產管理問題。首先,向后兼容的要求迫使DevOps團隊讓舊版本API繼續運行。攻擊者通常覬覦這些舊版本,鉆安全檢查機制的空子。其他API可能未遵守數據治理政策,使其成為數據暴露的關鍵入口點。
9、日志和監控不到位
大多數API攻擊發生在一段期間內,攻擊者需要花時間尋找漏洞,并籌劃合適的攻擊策略。借助正確的日志和監控機制,開發團隊可以第一時間發現惡意行動。遺憾的是,大多數組織為服務器和網絡事件實施了適當的日志機制,卻通常缺乏足夠到位的針對API的日志監控機制。造成這種情況的一個關鍵原因是,開發人員未深入了解API的使用情況。
結果,導致開發人員漏過了諸多安全事件,比如輸入驗證失敗、身份驗證檢查失敗以及表明無效訪問的其他應用程序錯誤。在沒有這類警報的情況下,攻擊者可以長時間不被發現,因而能夠全面利用系統。
10、功能級授權失效
功能級授權失效是指應用程序未能將敏感功能限制給授權用戶。與損壞的對象級授權不同,此缺陷特指未經授權的用戶何時可以訪問他們不應訪問的敏感或受限功能。例如,當一個用戶可以修改另一個用戶的賬戶或普通用戶可以訪問站點上的管理功能時,未經授權的用戶就可以訪問敏感功能。這些問題由缺少或錯誤配置的訪問控制引起。
參考鏈接:https://crashtest-security.com/owasp-api-top-10/