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