一、概述
數(shù)據(jù)庫防火墻仿佛是近幾年來出現(xiàn)的一款新的安全設備,但事實上歷史已經很長。2010年,Oracle公司在收購了Secerno公司,在2011年2月份正式發(fā)布了其數(shù)據(jù)庫防火墻產品(database firewall),已經在市場上出現(xiàn)很多年頭了。由于數(shù)據(jù)庫防火墻這個詞通俗易懂,和防火墻、Web防火墻、下一代防火墻等主流安全產品一脈相承,很多公司也就把自己的數(shù)據(jù)(庫)安全產品命名為數(shù)據(jù)庫防火墻。每家公司對于數(shù)據(jù)庫防火墻的定義各不相同,側重點也不一樣。也就是說,雖然大家都在說數(shù)據(jù)庫防火墻,很有可能是兩個完全不同的數(shù)據(jù)(庫)安全設備。
二、什么是數(shù)據(jù)庫防火墻
數(shù)據(jù)庫防火墻顧名思義是一款數(shù)據(jù)(庫)安全設備,從防火墻這個詞可以看出,其主要作用是做來自于外部的危險隔離。換句話說,數(shù)據(jù)庫防火墻應該在入侵在到達數(shù)據(jù)庫之前將其阻斷,至少需要在入侵過程中將其阻斷。
1. 如何定義外部?
至于如何定義外部威脅,則需要對于數(shù)據(jù)庫邊界進行明確的界定,而這個數(shù)據(jù)庫邊界的界定則具有多變性。第一種定義,從極限的角度來看,由于現(xiàn)在網絡邊界的模糊,可以把所有來自于數(shù)據(jù)庫之外的訪問都定義為外部。如果是這個定義來看,防火墻承載的任務非常繁重,可能不是一個安全設備所能夠承擔的。第二種定義是數(shù)據(jù)中心和運維網絡可以被定義為內部訪問,其他訪問定義為外部訪問,讓防火墻不需要去承載內部運維安全和員工安全,從而更好的工作。
綜合看來,我們采用第二種定義,數(shù)據(jù)庫防火墻主要承載數(shù)據(jù)中心和運維網絡之外的數(shù)據(jù)(庫)安全工作。
2. 如何定義數(shù)據(jù)庫防火墻?
一旦準確的定義了什么是外部之后,什么是數(shù)據(jù)庫防火墻就比較清楚了。運維網絡之外的訪問我們都可以定義為業(yè)務訪問。
數(shù)據(jù)庫防火墻是一款抵御并消除由于應用程序業(yè)務邏輯漏洞或者缺陷所導致的數(shù)據(jù)(庫)安全問題的安全設備或者產品。數(shù)據(jù)庫防火墻一般情況下部署在應用程序服務器和數(shù)據(jù)庫服務器之間,采用數(shù)據(jù)庫協(xié)議解析的方式完成。但這并不是唯一的實現(xiàn)方式,你可以部署在數(shù)據(jù)庫外部,可以不采用協(xié)議解析。從這個定義可以看出,數(shù)據(jù)庫防火墻其本質目標是給業(yè)務應用程序打補丁,避免由于應用程序業(yè)務邏輯漏洞或者缺陷影響數(shù)據(jù)(庫)安全。
常見的應用程序業(yè)務邏輯漏洞和缺陷:
SQL注入攻擊
cc攻擊
非預期的大量數(shù)據(jù)返回
敏感數(shù)據(jù)未脫敏
頻繁的同類操作
超級敏感操作控制
身份盜用和撞庫攻擊
驗證繞行和會話劫持
業(yè)務邏輯混亂
3. 數(shù)據(jù)庫防火墻的常見應用場景
(1) SQL注入攻擊
SQL注入攻擊是數(shù)據(jù)庫防火墻的核心應用場景,甚至可以說數(shù)據(jù)庫防火墻就是為了防御SQL注入攻擊而存在的。SQL注入攻擊是很古老的攻擊手段,特別是互聯(lián)網普及之后,一直是主流的安全攻擊手段。需要特別注意的是,SQL注入攻擊的發(fā)生不是由于數(shù)據(jù)庫的漏洞導致,而是因為應用程序漏洞和缺陷導致,但是受到傷害和影響的則是數(shù)據(jù)庫。我們的業(yè)務應用程序是水平參差不齊的公司和工程師撰寫,其代碼質量會遠遠比不上Oracle,微軟等大牌公司的產品,SQL注入以及其他可能的漏洞和缺陷存在是必然的事件。甚至可以認為,只要復雜度超越一定程度的任何業(yè)務應用程序都會存在SQL注入漏洞。
SQL注入攻擊之所以難以防御,其主要原因是其攻擊是通過業(yè)務應用程序發(fā)起的,傳統(tǒng)上部署的所有安全措施對于SQL注入攻擊基本無效,使其可以簡單到達企業(yè)最為核心的數(shù)據(jù)庫內部。
(2) cc攻擊
即使一個沒有任何缺陷的應用程序也可以簡單的發(fā)起cc攻擊。每個應用程序都會存在資源消耗特別高的某些操作,入侵者只要同時調度這些高資源消耗的操作,就會導致數(shù)據(jù)庫服務器失去響應。
(3) 非預期的大量數(shù)據(jù)返回
由于應用程序缺陷,在某些操作中返回了計劃之外的大量數(shù)據(jù)。大量數(shù)據(jù)返回很容易引起安全性問題。
(4) 敏感數(shù)據(jù)未脫敏
由于歷史原因,現(xiàn)有應用程序很少對于敏感數(shù)據(jù)進行脫敏顯示。為了遵循新的安全法規(guī)和規(guī)則,為了更好的保護客戶和公司,在很多情況下我們需要對于應用程序返回數(shù)據(jù)進行脫敏。
(5) 頻繁的同類操作
通過應用程序不斷的頻繁獲取敏感信息資料是敏感信息泄露的主要通道之一,數(shù)據(jù)庫防火墻可以通過延遲,通知等響應方式來降低此類數(shù)據(jù)泄露風險。
(6) 超級敏感操作控制
很多應用程序往往存在著權限控制漏洞,無法控制某些敏感操作。比如統(tǒng)方,比如絕密資料的獲取等等。
(7) 身份盜用和撞庫攻擊
撞庫攻擊是互聯(lián)網最大的安全風險之一,絕大部分撞庫攻擊都是為了身份盜用。
(8) 驗證繞行和會話劫持
由于應用程序缺陷導致起驗證安全機制沒有生效,比如驗證碼等,或者會話被劫持導致業(yè)務應用程序被非法控制。
(9) 業(yè)務邏輯混亂
由于應用程序漏洞導致業(yè)務邏輯混亂,比如在審批中不檢查前置流程的存在性和合規(guī)性,直接觸發(fā)下一個流程。
4. 數(shù)據(jù)庫漏洞檢測防御和數(shù)據(jù)庫防火墻
大家可以觀察到,很多數(shù)據(jù)庫防火墻都具有數(shù)據(jù)庫漏洞檢測和虛擬布丁等功能,甚至于把數(shù)據(jù)庫漏洞檢測防御變成了數(shù)據(jù)庫防火墻的核心功能。這個是對于數(shù)據(jù)庫防火墻理解的典型誤區(qū),數(shù)據(jù)庫防火墻的核心是檢測和防御業(yè)務應用程序漏洞而不是數(shù)據(jù)庫漏洞。
當然數(shù)據(jù)庫防火墻部署數(shù)據(jù)庫漏洞檢測也有其邏輯基礎:當入侵者通過業(yè)務應用程序漏洞入侵數(shù)據(jù)庫,特別是SQL注入攻擊的時候,入侵者為了獲取更大的入侵收益,往往會利用數(shù)據(jù)庫漏洞進行進一步攻擊。從緊密流程環(huán)節(jié)來看,在很多場合下,數(shù)據(jù)庫漏洞攻擊可以被看作SQL注入攻擊的一個環(huán)節(jié),一個成果擴大環(huán)節(jié)。
三、數(shù)據(jù)庫防火墻和Web防火墻
1. Web防火墻
很多人可能會問,Web防火墻也能夠防御SQL注入攻擊,我為什么還要部署數(shù)據(jù)庫防火墻?首先我們來看看WAF能做些什么:
SQL注入攻擊
XSS攻擊
CSRF攻擊
SSRF攻擊
Webshell后門
弱口令
反序列化攻擊
命令/代碼執(zhí)行
命令/代碼注入
本地/遠程文件包含攻擊
文件上傳攻擊
敏感信息泄露
XML實體注入
XPATH注入
LDAP注入
其他
從這個列表看,顯然Web防火墻和數(shù)據(jù)庫防火墻所承載的目標區(qū)別比較大,SQL注入攻擊攻只是兩種不同防火墻的為數(shù)不多的交叉點。
2. 數(shù)據(jù)庫防火墻是SQL注入防御的終極解決方案
數(shù)據(jù)庫防火墻和Web防火墻部署位置的不同,決定了兩種不同產品對于SQL注入攻擊的防御策略和效果會大不相同。
部署位置:Web防火墻作用在瀏覽器和應用程序之間,數(shù)據(jù)庫防火墻作用在應用服務器和數(shù)據(jù)庫服務器之間。
作用協(xié)議:Web防火墻作用在Http協(xié)議上,數(shù)據(jù)庫防火墻一般作用在數(shù)據(jù)庫協(xié)議上,比如Oracle SQL*Net,MSSQL TDS等。
Web防火墻作用在瀏覽器和應用程序之間,使他只能夠看得見用戶提交的相關信息,而用戶提交信息往往只是數(shù)據(jù)庫SQL語句的一個碎片,缺乏對于數(shù)據(jù)庫SQL的全局認知,更加不用說SQL語句的上下文關系了。Web防火墻只能做一些基于常規(guī)異常特征以及出現(xiàn)過的特征進行識別和過濾,使Web防火墻的SQL注入攻擊防御效果依賴于攻擊者的水平和創(chuàng)意,只要攻擊者具有一定的創(chuàng)意,Web防火墻很難防御SQL注入攻擊。
數(shù)據(jù)庫防火墻作用在應用服務器和數(shù)據(jù)庫服務器之間,看到的是經過了復雜的業(yè)務邏輯處理之后最后生成的完整SQL語句,也就是說是攻擊者的最終表現(xiàn)形態(tài),已經撕去了大量的偽裝。由于看到的是缺乏變化的最終形態(tài),使數(shù)據(jù)庫防火墻可以比較Web防火墻采用更加積極的防御策略,比如守白知黑策略進行異常SQL行為檢測,100%防御SQL注入攻擊。即使簡單采用和Web防火墻類似的黑名單策略,由于看到的信息使完整的最終信息,使其防御難度比較Web防火墻大幅度下降,防御效果自然會更好。
3. 更多的訪問通道
通過http服務應用訪問數(shù)據(jù)庫只是數(shù)據(jù)庫訪問中的一種通道和業(yè)務,還有大量的業(yè)務訪問和http無關,這些http無關的業(yè)務自然就無法部署web防火墻,只能依賴于數(shù)據(jù)庫防火墻來完成。
四、總結
1. 數(shù)據(jù)庫防火墻主要用來防御外部入侵風險,需要和內部安全管控適當分開。
2. 數(shù)據(jù)庫防火墻主要聚焦點是通過修復應用程序業(yè)務邏輯漏洞和缺陷來降低或者消除數(shù)據(jù)(庫)安全風險。SQL注入攻擊是其核心防御風險,而數(shù)據(jù)庫漏洞攻擊檢測和防御則并不是必須的。
3. 由于SQL注入攻擊和數(shù)據(jù)庫漏洞攻擊的伴生性,數(shù)據(jù)庫防火墻往往具備數(shù)據(jù)庫漏洞檢測和防御功能。
4. Web防火墻不能替代數(shù)據(jù)庫防火墻,Web防火墻是SQL注入攻擊的第一道防線,數(shù)據(jù)庫防火墻則是SQL注入攻擊的終極解決方案。
評論