API OWASP APIM 資訊安全 security API security risk API gateway digiRunner

API安全風險大揭密 (上集) - OWASP Top 10 API Security Risk 2023

彭福彬 Willie Peng 2023/12/26 11:07:21
1536

API 是目前大多數資訊系統都會使用技術與架構,因為API的設計與使用不當所導致的資安風險與問題也逐漸變多。Open Worldwide Application Security Project (OWASP)是一個非營利組織,致力於改善軟體的安全性。該組織於2023年也發表了最新的10API安全風險,本篇文章針對排名第10名到第6名的風險來說明各個風險的內容、發生情境以及防護措施。

更重要的是,為了徹底排除安全風險,則是要參照各風險的防護措施來建立各種控管與保護機制與功能。此時若能選擇導入一套符合產業標準的API管理平台來進行建置,將會是比較有效率且更安全的做法。昕力資訊的digiRunner 是一套完整的APIM管理平台,符合OIDCOAuth2JWT等技術標準,能協助企業組織管理整個API生命週期,並建立「零信任」API安全機制。而針對每項安全風險,digiRunner產品皆能提供必要的安全防護功能,讓企業組織徹底遠離安全風險的威脅與破壞。

 

Top 10 : Unsafe Consumption of APIs (API的不安全使用)

風險說明

開發人員很容易完全相信第三方夥伴的API與資料,並採用較低的安全標準去使用這些API,特別是使用知名公司的API時。攻擊者可能會去識別你有使用哪些第三方夥伴的API,並去攻擊破壞這些API

 

發生情境

你所開發的API使用了第三方夥伴的API來儲存使用者的機敏醫療資訊,攻擊者去破壞了這個第三方夥伴的API,讓傳送給這個API的資料改為傳送到攻擊者的伺服器上。

 

防護措施

n   在評估特定服務提供者時,需要評估他們API的安全狀況。

n   確保所有API在交互執行與傳輸時都有透過安全溝通管道(TLS)

n   從其他API取得資料後,必須要先經過檢核與適當清理後才去使用它。

n   當你使用的API有重導行為時,使用白名單機制來記錄、檢查與控制重導位置,不要盲目地依從API的重導行為。

 

digiRunner 的安全保護功能 :

n   可支援雙向TLS(mTLS),有效驗證才連線,確保使用其他夥伴API時的通訊保密性及可靠性。

n   可透過Composer模組進行加值開發,針對要傳送給其他夥伴API的請求內容進行檢核與控管。

n   可透過Composer模組進行加值開發,針對其他夥伴API回傳結果進行檢核與整理。

n   可限制用戶端的連線IP位置,杜絕非法用戶裝置的連線攻擊。

 

Top 9 : Improper Inventory Management (API資產管理不當)

風險說明

因為API的使用往往會暴露更多的存取端點,所以適當製作與更新紀錄文件非常重要,過時的紀錄文件將導致尋找或修補漏洞變得困難,並需要針對API的主機與部署版本進行適當的資產管理。因為攻擊者經常透過舊版本API或尚未更新且安全性較差的API端點來進行攻擊,所以缺乏API資產管理與淘汰策略,將使得運行中系統無法即時更新,而導致機敏資料洩漏。

 

發生情境

某個系統針對特定的API採用限制存取速率的方式來防止攻擊者的暴力存取攻擊。攻擊者在Beta版本的API主機上發現了相同的API,但該主機上卻沒有限制API的存取速率,導致攻擊者可以透過暴力存取的方式來攻擊系統。

 

防護措施

n   盤點API主機,並將重要資訊紀錄成文件,特別是API各種環境(例如productionstagingtestdevelopment)、誰能透過網路來存取主機(例如公開、內部或合作夥伴)以及API版本。

n   盤點已整合的服務,並將重要資訊紀錄成文件,例如這些服務在系統中扮演的角色,哪些資料被交換使用以及這些資料的敏感程度。

n   API所有資訊紀錄成文件,例如驗證機制、錯誤處理、重導行為、速率限制、跨來源資源共用(CORS)以及端點資訊,包含參數、請求與回應。

n   採用開放標準來自動產生文件。

n   只有被授權使用API的人才能取用該API文件。

n   不只針對目前API的正式版本,而是所有公開的API版本都應採用外部保護措施,例如API安全特定解決方案。

n   避免在非正式API部署環境上使用正式環境的資料。假設無法避免,則非正式環境上的API端點必須要與正式環境有相同的安全處理機制。

n   當新版本的API進行了安全性改善,應該進行風險分析來研擬舊版本API所需的因應措施。

 

digiRunner 的安全保護功能 :

n   可透過管理主控台模組的友善介面來進行API資產與生命週期的管理作業,完整記錄與保存API的各種重要資訊。

n   可透過入口網模組來分類上架API與相關資源,並設定使用權限。

n   提供API群組與版本管理機制,來分類管理各API與其版本。

n   提供多種API Policy設定,可針對API來套用最適合的Policy與安全控管機制。

n   提供沙盒模擬測試功能,可自訂測試模擬資料於沙盒環境中進行測試,而不須使用正式環境資料。

 

Top 8 : Security Misconfiguration (安全配置錯誤)

風險說明

為了讓API能更有客製化彈性,API與其支援系統通常包含複雜的配置。軟體與DevOps工程師可能會遺漏這些配置作業或是在進行配置作業時沒有遵循安全最佳實踐指引,產生了開放漏洞而引起各種類型的攻擊。

 

發生情境

大部分社群網站會提供即時訊息功能,讓使用者之間可以互相傳送私人訊息。若在API Response中沒有包含「Cache-ControlHTTP response header,則這些私人對話資訊會被快取暫存在瀏覽器上,攻擊者將可以從瀏覽器的快取檔案中取得這些資訊。

 

防護措施

API生命週期應包含 :

n   建立一套可持續重複強化的作業流程,可快速且簡易地完成配置部署,以建構出正確且受保護的環境。

n   應針對API本身與相關環境進行配置的檢核與更新,要檢核項目包含編排檔案、API元件以及雲端服務等。

n   針對所有環境,透過自動化流程去檢核其配置與設定是否有效。

n   確保對內與對外所有API的通訊傳輸都是透過加密傳輸管道(TLS),從用戶端到API Server,以及其中相關上下游元件。

n   具體詳列每個API可以透過哪一種請求方法(HTTP Verb)來存取,如HEAD

n   用戶端會透過瀏覽器來存取的API至少應該要實作Cross-Origin Resource Sharing (CORS) Policy,並包含可用的安全標頭(Headers)

n   依照業務或功能需求來限制傳入的內容型態與資料格式。

n   確保所有相關伺服器在處理傳入的請求時都採用一致方式以避免不同步問題 (例如Load balancerreverse and forward proxies以及back-end servers)

n   在可行的狀況下,定義並規範所有API回應的資料綱要 (Payload Schemas),包含錯誤回應,以防止異常追蹤與其他重要資訊被傳送給攻擊者。

 

digiRunner 的安全保護功能 :

n   digiRunner API Gateway作為中間層的API服務代理,篩選阻擋不安全的API請求,使得現有後端系統即使有不安全的組態也不會直接對外曝露,有效降低整體風險。

n   管理整個APIM生命週期,包含API服務提供作業以及API服務使用作業。

n   提供審核流程機制,確保各種API管理作業都依循標準作業程序,來確保API的品質。

n   提供批次修改功能,可批次修改多個API的後端主機資訊,減少設定錯誤風險。

n   提供批次匯出匯入功能,可快速將API設定套用到其他環境,降低人工輸入錯誤風險。

n   支援雙向TLS(mTLS),有效驗證才得以連線,確保通訊保密性及可靠性。

n   可針對每個API設定所需採用的HTTP methods

n   提供Gateway動態分流機制 (GLB),可將前端流量動態分配至後端多台伺服器上,避免單點失敗問題,提高服務可用性。

n   API存取授權採正向表列方式設定,預設為拒絕授權,避免人為作業疏忽。

 

Top 7 : Server Side Request Forgery (伺服器端請求偽造)

風險說明

透過API去存取遠端資源時,卻沒有檢核與驗證這個API使用端所發出的資源請求(URI)是否合法,這將導致攻擊者可以利用應用系統來發出偽造請求,請求存取預期外的目的端資源,而這種攻擊即使有防火牆或VPN都無法完全避免。

 

發生情境

某系統提供照片上傳功能,使用者可以選擇本機端的檔案上傳,或是直接輸入照片的URL網址。若透過後者,系統會將使用者所輸入的URL網址當作資源請求的傳遞參數 (picture_url)來呼叫後端的照片上傳API。攻擊者可以偽造請求,將傳遞參數改為惡意內容,例如”localhost:8080”,就可以透過此種方式來掃瞄在內部網路中有開放的Port,並進行後續攻擊。

 

呼叫API與請求參數

偽造請求

POST /api/profile/upload_picture

{

  "picture_url": "http://example.com/profile_pic.jpg"

}

{

  "picture_url": "localhost:8080"

}

 

防護措施

n   使用白名單機制來控制以下項目

1.      遠端使用者

2.      URL SchemePort

3.      允許的媒體類型

n   驗證並清理用戶端所傳送的請求資料。

n   不要直接回傳API的原始回應結果到用戶端。

 

digiRunner 的安全保護功能 :

n   透過白名單機制來限制可存取API的用戶端主機IP

n   可定義後端API的目標URL,並阻擋不合法的請求URL

n   可建立具識別性的連線用戶端,以過濾阻擋非法或無法識別的存取來源。

n   可針對HTTP Request Response 進行JWEJWS加密保護,防止傳輸資料被竊取破解。

 

Top 6 : Unrestricted Access to Sensitive Business Flows (無限制存取敏感業務流程)

風險說明

API與敏感業務流程相關,且沒有適當的存取限制,則該API很容易受到攻擊。例如線上購票或發表評論等,這些業務流程通常會以大量自動化方式來運作,則其API受到攻擊的風險相對較高。

 

發生情境

某公司預計在感恩節當天在線上購物網站販售新商品,這個新商品有很高需求性且數量有限。在感恩節當天,攻擊者從不同的IP位址與地區透過程式來自動購買商品並完成交易。而相關API並沒有適當的保護措施,導致攻擊者可以搶先在一般購買者之前就把商品全部買光,後來再把商品以更高的價格賣出。

 

防護措施

防護計畫應分為兩個層面來規劃 :

1.        業務面 : 檢視有哪些業務流程是大量採用自動化方式在運作,這些流程都可能存在API安全風險。

2.        技術面 : 選擇正確的保護機制去減少風險。

 

以下方式可以用來降低自動化攻擊的威脅 :

n   用戶端裝置偵測 : 拒絕提供服務給無法識別或非法的用戶端裝置 (例如headless browsers),使得攻擊者在攻擊時必須採用更複雜攻擊方式,並付出更高的成本。

n   人類偵測 : 使用驗證碼或更先進的生物辨識解決方案。

n   非人為模式判斷 : 分析使用行為與流程,並以此來偵測並判斷是否屬於非人為作業,例如使用者在1秒內點選了「加入購物車」以及「完成購買」這兩個功能。

 

digiRunner 的安全保護功能 :

n   可建立具識別性的連線用戶端,以過濾阻擋非法或無法識別的存取來源。

n   可限制用戶端的連線IP位置,杜絕非法用戶裝置的連線攻擊。

n   可支援OIDC標準,提供使用者身分驗證機制,提升API安全性。

n   可透過Composer模組來針對現有API服務進行加值開發,增加更多的存取用戶判斷與保護機制,提高API服務的防護強度,增加攻擊者的成本。

 

API安全風險大揭密 (下集)將說明排名第5名到第1名的風險。

若對本文內容有任何疑問與指教,請讓我知道,謝謝。

 

參考資料

n   OWASP Top 10 API Security Risk – 2023                      

https://owasp.org/API-Security/editions/2023/en/0x11-t10/

n  digiRunner產品資訊           

https://www.tpisoftware.com/products/digirunner

彭福彬 Willie Peng