Forrester 將 API 不安全性稱為「軟體中的潛在威脅」。了解 API 特定安全風險是保護 API 的關鍵。關於 API 安全性的新思考方式正在出現。
API安全:挑戰與最新發展
在現今的微服務架構中,通常會透過 API 使用外部服務來加快開發週期。不幸的是,這可能會為應用程式帶來額外的風險。當從企業應用程式呼叫外部服務或資料時,隱藏在這些外部來源中的滲透向量可能會使資料庫或應用程式後端遭受攻擊。
什麼是 API 安全性?
API 安全性是保護應用程式免受透過 REST 呼叫、REST、OpenAPI、gRPC、graphQL 和 ad-hoc 介面從外部服務匯入漏洞的過程。無論使用哪種架構,Gartner都將 API 安全性視為可能導致資料外洩的新攻擊面。因此,在這篇文章中,我們將重點放在所有平台上的 API 安全性,而不是像我們通常那樣關注 Kubernetes。
API 安全面臨的 6 個主要挑戰是什麼?
應對 API 安全風險需要了解他們面臨的具體安全挑戰是什麼。以下是 OSWAP 的六個最關鍵的挑戰,按重要性遞減順序列出:
- 可見性:可見性是所有安全的關鍵。在開發過程中,缺乏可見性。影子 API 和殭屍 API 通常隱藏在 SecOps 視線之外,並且未被發現,導致 API 濫用,據 Gartner 稱,到 2022 年,這將成為最常見的攻擊媒介。
- 物件級授權被破壞:層級存取控制很容易透過處理 API 公開的物件識別碼的端點而受到破壞。具有不同層次結構、群組和角色的 美國電話號碼數據 複雜存取控制策略,以及管理功能和常規功能之間不明確的分離,往往會導致授權缺陷。透過利用這些問題,攻擊者可以存取其他使用者的資源和/或管理功能。這可能會暴露敏感數據,例如 PII、用戶數據、憑證等。每個存取源自使用者輸入的資料來源的函數都需要物件級授權檢查。
- 使用者身份驗證被破壞:身份驗證機制的不正確實施為攻擊者打開了大門,攻擊者試圖破壞身份驗證令牌或利用實施缺陷來暫時或永久劫持用戶的身份。如果無法設定係統地識別客戶端/使用者的能力,就會使整體 API 安全面臨風險。
- 過多的資料暴露:展望通用實現,開發人員傾向於暴露所有物件屬性,而不考慮其個人敏感性,依賴客戶端在將資料顯示給使用者之前執行資料過濾。當客戶端是行動應用程式時,這一點尤其重要,因為行動用戶端的 API 與 Web 用戶端不同。例如:
- 許多不同的會話來自於運營商輸 出網關對應的相似IP位址。
- 單一會話可能會頻繁更改 IP,並在小區/熱點之間切換時斷開連線。
- 客戶端包括非瀏覽器環境、缺少cookie、具有自訂協定和編碼、各種套接字等。
- 客戶端裝置的範圍很廣,從廉價的 Android 手機到最新一代的智慧型手機,這使得工作證明任務和其他基於 CPU 記憶體的測試變得複雜。
- 缺乏資源和速率限制:由於 API 通常負責處理使用者和外部程式請求以執行所需的功能,因此過多的並發請求湧入可能會超出 API 運算資源。未能配置速率限制和資源存取可能會導致 API 在高流量日效能下降,並容易受到 DDoS 攻擊。更糟的是,它為試圖識別身份驗證缺陷的暴力攻擊打開了大門。
- 功能級授權被破壞:與一次呈現一個資 台灣新聞 料欄位的使用者發起的互動不同,API 通常更複雜,需要在單一呼叫中傳輸更多結構化資料。由於自訂應用程式業務邏輯,因此需要建立自訂資料編碼協定。具有不同層次結構、群組和角色的複雜存取控制策略,以及管理功能和常規功能之間不明確的分離,往往會導致授權缺陷。透過利用這些問題,攻擊者可以存取其他使用者的資源和/或管理功能。
透過第三方 API 存取外部資源或服務會產生透過這 目錄 些外部提供者的 API 的漏洞暴露關鍵資訊的風險。這些可能為惡意行為者提供滲透應用程式的入口向量,從而導致潛在的資訊洩漏或應用程式服務中斷。
目前的 API 安全方法
目前API 安全性是嚴格的,採用單向分層流程,讓開發人員可以使用對他們來說最方便的任何API。安全性方面。更糟糕的是,API 資格通常不明確,這進一步降低了開發人員花時間充分理解他們正在開發的功能的 API 安全影響的可能性。
因此,API 安全性更多的是事後考慮,只有在 SecOps 介入並嘗試評估開發人員使用的 API 風險高或低時才會考慮。這是一個高度手動的過程,既耗時又容易出錯。隱藏和/或殭屍 API經常被遺漏,並且存在漏洞的圖像庫也被忽略。 CISO 負責您環境中的所有應用程式。他們需要可見性,這是 API 安全性的支柱之一,而這個系統不提供它。
5 個 API 安全最佳實踐
我們很快就會討論進一步的 API 安全開發,但在此期間實施下面推薦的 API 安全最佳實踐是一個很好的起點。
1. 漏洞識別
API 漏洞很難發現,因為它們可能源自於應用程式邏輯缺陷,因此考慮整個 API 的生命週期並識別不安全的部分至關重要。需要識別內部和外部 API的漏洞。
內部 API 連接組織的不同後端系統,以便為需要存取特定資料孤島的各個業務部門提供無縫通訊。識別並修復內部 API 中的漏洞是防止違規情況橫向升級的關鍵。
外部API是應用程式和外部客戶端之間的接口,提供服務或資料。隨著應用程式越來越多地與這些外部服務和資料組裝在一起,並且遠端服務和資料庫的品質和安全性常常未知,組織的客戶資料在使用第三方服務時可能面臨風險。識別來自第三方提供者的漏洞可能很棘手,特別是因為遙測 API 安全評估通常無法在運行時之前進行,這使得在 CI/CD 週期期間識別來自外部服務的漏洞變得複雜。由於無法完全控制外部 API 的漏洞識別,以下列出的其他方法尤其重要。
2. 加密數據
使用 TLS(傳輸層安全性)等方法來加密數據,並要求少數有權解密和修改資料的特權人士簽署。這對於 PID 來說尤其重要。
3. 驗證所有通信
API 金鑰提供項目識別和授權。因此,它們對於阻止匿名流量以及控制和監視對 API 的呼叫非常有用,但不能保護進出 API 的流量,因為它們很容易被盜。為了避免不必要地使用 API 金鑰,請使用具有唯一暫時存取令牌的金鑰。保持嚴格的憑證紀律,以防止向客戶端和伺服器洩露秘密/密碼。
4. 保護內部和外部 API 的安全
分段是防止橫向升級的關鍵。這需要創建一個嚴格的模式來確定係統允許的傳入資料是什麼。所有傳入資料在進入之前都需要經過驗證,從而限制它們可能有害的可能性。