API流量約占全球互聯網流量的83%,是數字經濟的“關鍵基礎設施”,同時也是最熱門的攻擊目標之一。
隨著云計算、物聯網、移動互聯網和人工智能技術的快速普及,API安全已經成為當下企業和互聯網面臨的最嚴峻的網絡安全挑戰之一,根據Gartner的研究,2022年,超過九成Web應用程序遭到的攻擊來自API,而不是人類用戶界面。
根據Wallarm的最新報告,API攻擊數量在2022年暴增兩倍,API漏洞數量下半年比上半年增長了78%,API漏洞利用時間(漏洞CVE發布到漏洞利用POC發布之間的時間)從二季度的58天驟減到四季度的-3天,2023年API安全將延續這一趨勢。
面對日趨惡化的API安全態勢,安全團隊需要重點排查和緩解以下五個API關鍵漏洞:
一、弱認證
身份驗證用于核實用戶或設備是否是其聲稱的身份,防止沒有正確權限的人員或設備訪問信息和資源。如果身份驗證流程容易被繞過或入侵(例如弱密碼或容易猜到的密碼),攻擊者可以臨時甚至永久偽裝成合法用戶。
措施
強制使用強密碼和多因素身份驗證來訪問敏感資源(如銀行帳戶),減少帳戶接管的可能性。更重要的是確保密碼和身份驗證流程按預期工作。這需要廣泛的測試,特別是會話cookie的管理,因為會話cookie很容易引入可利用漏洞。會話cookie應該是完全隨機且不可預測的,并在每次成功登錄或更改訪問級別后刷新。任何未經正確身份驗證訪問資源的嘗試都應收到“401未經授權”響應狀態代碼。限制登錄嘗試失敗的次數,超出后帳戶將被鎖定。可使用API密鑰來識別用戶,但不進行身份驗證或授權,因為密鑰太容易暴露和濫用。
二、錯誤的對象級授權
API通常公開用于訪問資源的對象。當這些端點上沒有正確實施訪問控制時,攻擊者可以查看或操作他們不應該訪問的資源。此漏洞影響所有類型的API架構,包括SOAP、REST和GraphQL。
例如,攻擊者更改請求的用戶ID,以查看是否返回有關其他用戶的信息,這可能導致未經授權訪問數據。值得注意的是,2019年Uber的API中發現了此漏洞,該API使司機只需更改用戶ID即可訪問其他司機的數據。如果數據修改函數也缺乏正確實施的授權檢查,攻擊者還可能更改或刪除數據,甚至完全接管另一個用戶的帳戶。
措施
對象標識符應該是隨機且不可預測的,而不是可以輕松猜測的可預測的順序值。服務器端檢查還應驗證以下內容:
- 用戶有權訪問請求的對象。
- 用戶擁有對對象執行特定操作所需的權限。
三、注入漏洞
當API收到用戶提交的數據但在處理請求之前未對其進行分析和驗證時,攻擊者可以發送惡意數據或命令來觸發注入攻擊。數據庫查詢和操作系統命令都可以通過XML、JSON、跨站點腳本(XSS)、SQL和NoSQL注入來訪問數據或未經授權執行惡意命令。
措施
與其創建自己的函數來驗證和清理傳入數據,不如調用專業白名單庫來確保數據是所需的類型和長度,對每個傳入請求運行這些檢查,并刪除意外的字符、參數以及已知的注入命令。
四、過多的數據暴露
數據暴露是API的常見漏洞,即API響應請求時返回的數據遠遠多于完成請求所需的數據。這通常是因為開發人員編寫從表中返回整行數據的代碼比僅返回所需特定字段更簡單。例如,消息傳遞應用程序上的個人資料頁面可能僅僅會顯示某人的姓名和年齡,但API請求往往會返回存儲的有關該用戶的所有信息,而不僅僅是根據其出生日期計算的該用戶的姓名和年齡。
盡管應用程序可能會過濾響應并僅顯示姓名和年齡,但攻擊者很容易讀取和收集請求中返回的其他詳細信息,包括個人身份信息,例如出生日期、電子郵件地址和位置。這種敏感數據的公開可能會違反數據訪問策略規則和相關數據安全法規。
措施
API響應僅返回滿足請求所需的數據,具體來說就是API進行的數據庫查詢應僅獲取相關記錄和字段。API文檔應說明滿足請求所需的數據,確保數據庫查詢與請求的字段和記錄匹配。請記住,客戶端應用只能篩選用戶可見的數據,而不能篩選它接收的數據。
五、安全配置錯誤
API運行在復雜的基礎架構上,資源配置會根據需求自動擴展和縮減。如果未在每一層正確配置安全控制,則敏感數據和系統可能會面臨風險。常見的錯誤配置包括未修補的設備和應用程序、不安全的默認配置、未加密的數據傳輸以及開放和不安全的云存儲和服務。
措施
API應僅公開HTTPS端點。但是,由于HTTPS端點對互聯網開放,因此正確設置速率限制,控制請求速率和請求的資源數量也很重要,否則將受到DoS和暴力攻擊。禁用未使用的HTTP方法(如TRACE),并添加相應的HTTP響應安全標頭,如X-Content-Type-Options:nosniff,以防止XSS和X-Frame-Options:deny以防止點擊劫持嘗試。此外,API請求生成的任何錯誤消息都應僅包含最少的信息,以確保不會泄露有關系統的敏感數據,例如關于錯誤的詳細技術信息。
如何提高API整體安全性
要想避免API成為“攻擊門戶”,關鍵是身份與訪問管理。這意味著啟動身份驗證和授權檢查,不是一次性,而是通過零信任策略持續進行。
同樣重要的是基于威脅建模進行API設計,在API開發階段就整合安全控制,例如強身份控制和訪問管理功能,以緩解已知風險。此外還需要測試這些控件是否能在DevOps工作流中發揮作用。
攻擊者在利用API漏洞實施網絡攻擊之前,可能會花費數天時間進行偵察。企業應部署全面的API流量日志記錄和監控,以便在造成損害之前發現并阻止攻擊。建議使用最新的API清單,并定期查看安全控制和配置是否正確有效。
對于高度分布式的API基礎設施來說,傳統的基于邊界的安全方法不足以阻止攻擊。容器、微服務、云存儲和持續集成/持續交付管道的定期安全審計對于防止未使用或遺忘的接入點至關重要。
最后,也是最重要的:API開發應該“安全掛帥”,強調“安全優先”而不是速度優先,這是從根本上減少甚至消除API安全漏洞的關鍵。
合天網安實驗室
商密君
關鍵基礎設施安全應急響應中心
D1Net
安全牛
安全圈
安全圈
安全圈
黑白之道
黑白之道
HACK學習呀