OWASP API Security Top 10 2019概述
現今大多數的軟體架構是以 APIs 為基礎,從微服務到雲端到 Apps,甚至 SaaS 或 IoT 的領域,無處不圍繞在 APIs 的基礎上,OWASP 也有一專案專門針對 API 列出 Top 10 的資安風險,本篇即對 OWASP API Security Top 10 做一個概述。
API資安的重要性
在傳統的 Web 應用程式,使用者透過瀏覽器訪問網頁伺服器,多數的「資料處理」都是在伺服器端執行;然而隨著終端設備(如智慧型手機)運算能力的大幅提升,許多邏輯運算逐漸由後端伺服器執行轉變至前端,並透過 API 的形式存取伺服器端的原始資料(Raw Data)至用戶端再做運算處理。然而,這類運用 APIs 存取相關的資安議題卻鮮少有人專門探討,這種稱為「The security of API-Based Applications」或甚至稱為「Modern Application Security」資安議題應運而生。
我們資安界所熟知的、最新版本的 OWASP Web Top 10 Risks (2017版)仍主要鎖定在傳統Web Apps,與現今諸多以 API 為基礎的 Apps 上有極大的落差。所以 OWASP 於2019年發現此現象,另推出了「API Security Top 10」計畫,目的是在於彌補這個落差並解決我們看到現今軟體興起帶來的問題。
API十大資安風險重點
個人向來喜歡以簡馭繁,經過我消化整理後,整個 OWASP API Security Top 10 我將它統整至一張表格內作呈現。API 前十大風險的中英文描述、說明、舉例和避免方式,我都重點概要的整理至下方一張表格內了,可以放大圖片仔細參酌,在此就不再針對細項一一贅敘。
在我研究過後的心得是,現今 API 最常見的弱點還是「權限控制 (Access Control)」的議題。我們可以看到 OWASP 前十大的 API 風險中,有三大項都是關於「認證和授權 (Authorization & Authentication )」的議題:API1: Broken Object Level Authorization、API2: Broken Authentication 及 API5: Broken Function Level Authorization,因為攻擊面範圍很大,多種可能的身份驗證流程以及可以執行不同授權機制(Code、Configuration、API Gateway)容易造成這資安議題。這在我的資安測試生涯實戰中也獲得印證,我在測試過程中,最常見也最容易被忽略的就是認證和授權相關的弱點,API 認證授權的機制沒有做好,常常稍微觀察一下 API 查詢結構,分析一下所回傳的 JSON 或 XML 欄位格式,再透過編號流水號的猜測和簡單參數竄改,就可以存取到另一個使用者的資料,也就是所謂常存在「權限跨越」的議題;而這往往是自動化弱掃工具極難以偵測與識別的弱點,而需要請資安專家定期做「滲透測試」方能徹底抓漏。
承上所述,我另外發現,API1、API2、API5 這三個議題與 OWASP Web Top 10 Risks 的 A2: Broken Authentication 和 A5: Broken Access Control 有所呼應。而 API3: Excessive Data Exposure 也呼應著 A3: Sensitive Data Exposure。諸如此類的呼應越找越多後,我又做了下表,兩者可以對照著一起研究。
總結
如同開頭說的,隨著行動裝置、終端設備其運算能力的提升,App 服務的盛行,企業架設系統和服務以往傳統都走 Web-Based 的,現在可能都會改以 API-Based 為優先。而 Web Server 已有諸多如 WAF、EDR、NDR 等成熟的資安防禦產品,相對的針對 API Server 的資安設備與產品尚未齊備,故 API 的濫用將會是企業機敏資料洩露的一大隱憂。所以深刻認知這些 API 十大常見風險,甚至透過弱點 API 測試如 crAPI (completely ridiculous API)、REST API Goat、dvws-node…等專案實作些攻防演練,早一點認清和管理風險,早一些準備和預防,制敵機先,總是好事一樁。
參考資料
- OWASP API Security Project
- 叡揚資訊的GSS資安電子報
- apisecurity.io 網站的教學文
- 42Crunch 的 OWASP API Security Top 10 Webinar 影片 (YouTube)