【中培課堂】數據庫安全審計常見的幾種缺陷
隨著信息化的發展,數據庫安全問題成為當前政府和企事業單位用戶關注的焦點,數據庫審計產品已經成為當前信息安全產品的盛寵。中培偉業《SQL server 2014高級管理與性能調優最佳實踐》培訓專家袁老師指出,目前國內數據庫審計產品存在8大常見缺陷。
長SQL語句漏審
大多數的SQL語句都在1K以里長度,市面上的數據庫審計產品大多都能準確記錄下,也能實現正常的解析;但在SQL語句超過1.5K時,很多的數據庫審計產品就會發生漏審,或者只能審計下部分SQL語句。
對于一些數據庫審計產品,由于沒有將多個SQL通訊包進行有效解析和關聯,在發生長SQL語句時會發生無法解析或解析不全的情況;具體表現是,對于長SQL語句并未記錄,或僅記錄了前半部分。
這種情況的危害是,對于有些業務系統中自身就包含長SQL語句,比如經分系統,報表系統,這些SQL語句會被漏記;同時,一些黑客或攻擊人員會利用這樣的一些漏洞,進行數據庫攻擊而不留下痕跡。
多語句無法有效分割
多語句是SQL Server上的一個特定情況。在其它的數據庫管理系統中,語句之間都有明確的分割標識;而在SQL Serve中語句之間可以沒有明確的分隔符。SQL Server會將這些語句不加分割地組織在一個數據庫通訊包中發送;對于一些專業化程度不高的數據庫審計產品,會將這些語句作為一條語句審計下來。有效地實現多語句分割,需要非常專業的SQL解析技術。一些簡單的方法,比如用select、use 、set這樣的關鍵字來進行語句分割,稍微復雜的情況就不好處理了。
即使采用稍微復雜一些的技術,比如正則表達式,也很難做到準確切割;非專業化的數據庫審計產品都存在這個缺陷。
數據庫對象解析錯誤
數據庫審計產品中一個重要需求是要有效記錄下來SQL語句的操作類型、訪問對象;根據這些操作類型和訪問對象,審計產品可以有效地制訂告警策略,可以有效地根據操作類型、訪問對象進行事后的追蹤與檢索。我國相關部門的數據庫審計產品標準中要求:應對數據庫網絡訪問對象的名稱進行準確審計,包括數據庫服務器名稱、IP名稱、數據庫名稱、表、視圖、序列、包、存儲過程、函數、庫、索引和觸發器等。
參數審計錯誤
參數綁定是數據庫編程中常用的一種方法,通過這種方法,數據庫系統可以減少編譯次數,快速執行,提升效率;但這種編程方法將對數據庫的審計帶來挑戰,在筆者所見到的若干數據庫審計產品中,在這種情況下都出了不少的錯誤。有的是漏審了語句,有的是記錄下了操作的語句,但將具體執行時所使用的參數記錯了或漏記了。這些缺陷對于審計產品無疑很是致命。
除了以上列舉的4個常見缺陷,在實際情況下還有一些常見的缺陷:
錯誤的應答結果,特別是影響行數解析不正確
對于SQL操作是否成功,是數據庫審計的基本需求;對數據庫操作讀取或影響了多少行是用戶的實際需求。但SQL操作成功與否的準確記錄,需要仰仗SQL語句的合理切割和句柄的準確追蹤及對返回結果集的完全解析;大多數數據庫審計產品在多語句情況,或者通過FETCH操作批量獲取等環節下,無法準確獲得查詢執行的正確性以及影響行數。
充滿失真率的應用用戶關聯
市場上的數據庫審計產品大多數都宣傳支持三層關聯審計,實現SQL語句與業務用戶的關聯。這種基于三層關聯審計的技術,是通過http協議中的參數與SQL語句中的參數的匹配,以及時間的匹配來完成的,屬于模糊匹配。這種方法在http參數經過加工后或基于邏輯判斷后再發出SQL語句,也即SQL語句的參數與http參數沒有直接的匹配關系時將完全失效;在高并發時更是一個災難。
不夠專業化的審計界面
這個問題主要是針對基于網絡審計而發展來的數據庫審計產品,這種產品由于在設計之初就不是專門面向數據庫用戶的,因此并未按照數據庫的訪問類別、會話追蹤、數據庫對象層次進行界面組織,造成這類產品的界面極其不易使用。
過度冗余的審計信息存儲
很多應用系統會采用動態拼接SQL語句的方式來實現對數據庫的訪問;這會造成大量SQL語句語法形式相同而僅僅是SQL語句中的參數值不同的語句。當前的很多審計產品將這些語句進行重復地記錄和存儲,造成了審計效率的低下,存儲設備的浪費,并會對SQL語句的分析和排查效率造成致命影響。