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