權限安全管控的設計想法
權限安全管控的設計想法
OWASP發佈最新的《2021年版OWASP TOP 10》,其中「Broken Access Control(失效的訪問控制)」位居第一,訪問控制安全是常規安全產品難以解決的邏輯漏洞安全之一,也是在應用層危害最大的,基於此,個人參考過去挖洞所遇到的此類問題提出一些想法。【個人想法,注重交流】
全角度,細顆粒。
1、最小化訪問控制授權;建立完善的權限級別管理模型,對於訪問控制的權限查詢、分配、授權、撤銷進行有效的管理和監控。
2、顆粒度管制至每一組數據和接口/頁面;一般訪問控制的顆粒度從頁面、接口、數據三層去管理,顆粒度較細的方法是以數據為關鍵進行權限的管理和訪問控制的管控。
3、建立統一的訪問控制權限校驗接口或模塊;訪問控制權限的查詢、分配、授權、撤銷應建立一個統一的管理接口或校驗接口,統一管理權限。
4、訪問控制統一權限校驗查詢;應檢查校驗每一個數據的查詢,對每一個數據的查詢(或頁面的渲染、接口的調用)進行訪問權限校驗接口調用,校驗權限分配和授權的合法性。對於空權限的數據查詢、頁面渲染、接口調用應記錄成冊,其它的非空權限的數據查詢、頁面渲染、接口調用均進行統一的訪問控制權限校驗、查詢、分配、授權、撤銷。
全監控,易追溯。
1、訪問控制的權限管理日誌;需要對所有的權限(管理)查詢、分配、授權、撤銷、校驗進行日誌記錄。
2、訪問控制的權限監控日誌;需要對所有的合法權限授予後的全周期操作歷史進行日誌記錄。
3、訪問控制的權限風險日誌;需要對所有非空權限的強制請求進行記錄並設置安全閾值,並自定義的進行記錄、告警、強退、鎖號等風險響應。
Tips:權限的設計模式應該基於安全的基礎進行,不得存在嚴重的設計缺陷。一般情況:
-
自動化攻擊的應對
自動化攻擊是目前成本較低的一種攻擊手段,爆破、目錄遍歷、參數遍歷等安全隱患和fuzz手段都是自動化攻擊的主要目標,針對這些,一般採用驗證碼的方式避開被爆破猜解,同時為了避免安全遍歷的問題導致安全隱患,一般採用無序編碼的方式來減低危害。
-
授權周期的安全
執行高敏感的操作(或訪問),應臨時授權或一次授權,每次的授權操作內容全部遵照全監控易追溯的原則進行全周期日誌記錄,(全周期:分配 –> 查詢 –> 校驗 –> 授權 –> 撤銷 –> 取消),這裡比較注重的是周期時長的問題,理論上不應該授予長時間的授權操作,而是採用「操作則申請,完成則撤銷,周期全記錄」的原則執行周期時長的限制,時間一到撤銷授權操作,並可考慮執行強退的策略。這裡的授權操作不是說每次都需要管理員去系統中操作,而是說管理員實現就已經向用戶分配該權限,但是這個權限存在於權限分配表中,每次執行操作的時候都需要去權限分配表中查詢並校驗是否具備授權資格並執行授權,在規定的時長結束後,該次授權自動結束並撤銷本次授權,自此再操作需要重新執行查詢校驗授權資格的步驟,每次的授權操作全過程記錄是從查詢校驗授權資格那一步開始記錄隨後該授權key所執行的一切操作動作。全周期中的分配和取消是針對記錄在授權分配表中的權限分配項執行。
-
授權周期的監控
基於「全監控易追溯」的原則建立訪問控制權限全周期,對重要的授權操作的全過程進行可視化、可追蹤、可定位的方式進行日誌記錄。同上,這裡的可視化的實現可多樣化去實現,目的是採用鏈條跟蹤的模式來實現每一次授權的每一個操作動作,直至授權被撤銷。這需要注意「可定位」的需求,一般情況,在發生安全事故後,對功能點立即執行反溯,查看所有執行過該操作動作的授權(日誌)記錄表並鏈條化可追蹤的展示出來。
非常重要需要提出來的是,訪問控制權限管控的重點在於:「細顆粒的授權管控和全周期監控授權操作」。