淺談資料庫防火牆技術及應用

IT168GB發表於2018-08-02

資料庫防火牆彷彿是近幾年來出現的一款新的安全裝置,但事實上歷史已經很長。2010年,Oracle公司在收購了Secerno公司,在2011年2月份正式釋出了其資料庫防火牆產品(database firewall),已經在市場上出現很多年頭了。

由於資料庫防火牆這個詞通俗易懂,和防火牆、Web防火牆、下一代防火牆等主流安全產品一脈相承,很多公司也就把自己的資料(庫)安全產品命名為資料庫防火牆。每家公司對於資料庫防火牆的定義各不相同,側重點也不一樣。也就是說,雖然大家都在說資料庫防火牆,很有可能是兩個完全不同的資料(庫)安全裝置。 

什麼是資料庫防火牆?

資料庫防火牆顧名思義是一款資料(庫)安全裝置,從防火牆這個詞可以看出,其主要作用是做來自於外部的危險隔離。換句話說,資料庫防火牆應該在入侵在到達資料庫之前將其阻斷,至少需要在入侵過程中將其阻斷。 

如何定義外部?

至於如何定義外部威脅,則需要對於資料庫邊界進行明確的界定,而這個資料庫邊界的界定則具有多變性。第一種定義,從極限的角度來看,由於現在網路邊界的模糊,可以把所有來自於資料庫之外的訪問都定義為外部。如果是這個定義來看,防火牆承載的任務非常繁重,可能不是一個安全裝置所能夠承擔的。第二種定義是資料中心和運維網路可以被定義為內部訪問,其他訪問定義為外部訪問,讓防火牆不需要去承載內部運維安全和員工安全,從而更好的工作。 

綜合看來,我們採用第二種定義,資料庫防火牆主要承載資料中心和運維網路之外的資料(庫)安全工作。 

如何定義資料庫防火牆? 

一旦準確的定義了什麼是外部之後,什麼是資料庫防火牆就比較清楚了。運維網路之外的訪問我們都可以定義為業務訪問。

資料庫防火牆是一款抵禦並消除由於應用程式業務邏輯漏洞或者缺陷所導致的資料(庫)安全問題的安全裝置或者產品。資料庫防火牆一般情況下部署在應用程式伺服器和資料庫伺服器之間,採用資料庫協議解析的方式完成。但這並不是唯一的實現方式,你可以部署在資料庫外部,可以不採用協議解析。從這個定義可以看出,資料庫防火牆其本質目標是給業務應用程式打補丁,避免由於應用程式業務邏輯漏洞或者缺陷影響資料(庫)安全。 

常見的應用程式業務邏輯漏洞和缺陷:

1、SQL隱碼攻擊

2、cc攻擊

3、非預期的大量資料返回

4、敏感資料未脫敏

5、頻繁的同類操作

6、超級敏感操作控制

7、身份盜用和撞庫攻擊

8、驗證繞行和會話劫持

9、業務邏輯混亂

資料庫防火牆的常見應用場景 

1、SQL隱碼攻擊

SQL隱碼攻擊是資料庫防火牆的核心應用場景,甚至可以說資料庫防火牆就是為了防禦SQL隱碼攻擊而存在的。SQL隱碼攻擊是很古老的攻擊手段,特別是網際網路普及之後,一直是主流的安全攻擊手段。需要特別注意的是,SQL隱碼攻擊的發生不是由於資料庫的漏洞導致,而是因為應用程式漏洞和缺陷導致,但是受到傷害和影響的則是資料庫。我們的業務應用程式是水平參差不齊的公司和工程師撰寫,其程式碼質量會遠遠比不上Oracle,微軟等大牌公司的產品,SQL隱碼攻擊以及其他可能的漏洞和缺陷存在是必然的事件。甚至可以認為,只要複雜度超越一定程度的任何業務應用程式都會存在SQL隱碼攻擊漏洞。

SQL隱碼攻擊之所以難以防禦,其主要原因是其攻擊是透過業務應用程式發起的,傳統上部署的所有安全措施對於SQL隱碼攻擊基本無效,使其可以簡單到達企業最為核心的資料庫內部。 

2、cc攻擊

即使一個沒有任何缺陷的應用程式也可以簡單的發起cc攻擊。每個應用程式都會存在資源消耗特別高的某些操作,入侵者只要同時排程這些高資源消耗的操作,就會導致資料庫伺服器失去響應。   

3、非預期的大量資料返回

由於應用程式缺陷,在某些操作中返回了計劃之外的大量資料。大量資料返回很容易引起安全性問題。 

4、敏感資料未脫敏

由於歷史原因,現有應用程式很少對於敏感資料進行脫敏顯示。為了遵循新的安全法規和規則,為了更好的保護客戶和公司,在很多情況下我們需要對於應用程式返回資料進行脫敏。 

5、頻繁的同類操作

透過應用程式不斷的頻繁獲取敏感資訊資料是敏感資訊洩露的主要通道之一,資料庫防火牆可以透過延遲,通知等響應方式來降低此類資料洩露風險。 

6、超級敏感操作控制

很多應用程式往往存在著許可權控制漏洞,無法控制某些敏感操作。比如統方,比如絕密資料的獲取等等。

7、身份盜用和撞庫攻擊

撞庫攻擊是網際網路最大的安全風險之一,絕大部分撞庫攻擊都是為了身份盜用。

8、驗證繞行和會話劫持

由於應用程式缺陷導致起驗證安全機制沒有生效,比如驗證碼等,或者會話被劫持導致業務應用程式被非法控制。

9、業務邏輯混亂

由於應用程式漏洞導致業務邏輯混亂,比如在審批中不檢查前置流程的存在性和合規性,直接觸發下一個流程。

資料庫漏洞檢測防禦和資料庫防火牆 

大家可以觀察到,很多資料庫防火牆都具有資料庫漏洞檢測和虛擬布丁等功能,甚至於把資料庫漏洞檢測防禦變成了資料庫防火牆的核心功能。這個是對於資料庫防火牆理解的典型誤區,資料庫防火牆的核心是檢測和防禦業務應用程式漏洞而不是資料庫漏洞。

當然資料庫防火牆部署資料庫漏洞檢測也有其邏輯基礎:當入侵者透過業務應用程式漏洞入侵資料庫,特別是SQL隱碼攻擊的時候,入侵者為了獲取更大的入侵收益,往往會利用資料庫漏洞進行進一步攻擊。從緊密流程環節來看,在很多場合下,資料庫漏洞攻擊可以被看作SQL隱碼攻擊的一個環節,一個成果擴大環節。 

資料庫防火牆和Web防火牆

Web防火牆 

很多人可能會問,Web防火牆也能夠防禦SQL隱碼攻擊,我為什麼還要部署資料庫防火牆?首先我們來看看WAF能做些什麼:

1、SQL隱碼攻擊

2、XSS攻擊

3、CSRF攻擊

4、SSRF攻擊

5、Webshell後門

6、弱口令

7、反序列化攻擊

8、命令/程式碼執行

9、命令/程式碼注入

10、本地/遠端檔案包含攻擊

11、檔案上傳攻擊

12、敏感資訊洩露

13、XML實體注入

14、XPATH注入

15、LDAP注入

16、其他

從這個列表看,顯然Web防火牆和資料庫防火牆所承載的目標區別比較大,SQL隱碼攻擊攻只是兩種不同防火牆的為數不多的交叉點。 

資料庫防火牆是SQL隱碼攻擊防禦的終極解決方案

資料庫防火牆和Web防火牆部署位置的不同,決定了兩種不同產品對於SQL隱碼攻擊的防禦策略和效果會大不相同。

部署位置:Web防火牆作用在瀏覽器和應用程式之間,資料庫防火牆作用在應用伺服器和資料庫伺服器之間。

作用協議:Web防火牆作用在Http協議上,資料庫防火牆一般作用在資料庫協議上,比如Oracle SQL*Net,MSSQL TDS等。

Web防火牆作用在瀏覽器和應用程式之間,使他只能夠看得見使用者提交的相關資訊,而使用者提交資訊往往只是資料庫SQL語句的一個碎片,缺乏對於資料庫SQL的全域性認知,更加不用說SQL語句的上下文關係了。Web防火牆只能做一些基於常規異常特徵以及出現過的特徵進行識別和過濾,使Web防火牆的SQL隱碼攻擊防禦效果依賴於攻擊者的水平和創意,只要攻擊者具有一定的創意,Web防火牆很難防禦SQL隱碼攻擊。

資料庫防火牆作用在應用伺服器和資料庫伺服器之間,看到的是經過了複雜的業務邏輯處理之後最後生成的完整SQL語句,也就是說是攻擊者的最終表現形態,已經撕去了大量的偽裝。由於看到的是缺乏變化的最終形態,使資料庫防火牆可以比較Web防火牆採用更加積極的防禦策略,比如守白知黑策略進行異常SQL行為檢測,100%防禦SQL隱碼攻擊。即使簡單採用和Web防火牆類似的黑名單策略,由於看到的資訊使完整的最終資訊,使其防禦難度比較Web防火牆大幅度下降,防禦效果自然會更好。

更多的訪問通道

透過http服務應用訪問資料庫只是資料庫訪問中的一種通道和業務,還有大量的業務訪問和http無關,這些http無關的業務自然就無法部署web防火牆,只能依賴於資料庫防火牆來完成。

總結

1、資料庫防火牆主要用來防禦外部入侵風險,需要和內部安全管控適當分開。

2、資料庫防火牆主要聚焦點是透過修復應用程式業務邏輯漏洞和缺陷來降低或者消除資料(庫)安全風險。SQL隱碼攻擊是其核心防禦風險,而資料庫漏洞攻擊檢測和防禦則並不是必須的。

3、由於SQL隱碼攻擊和資料庫漏洞攻擊的伴生性,資料庫防火牆往往具備資料庫漏洞檢測和防禦功能。

4、Web防火牆不能替代資料庫防火牆,Web防火牆是SQL隱碼攻擊的第一道防線,資料庫防火牆則是SQL隱碼攻擊的終極解決方案。 


本文轉載自微信公眾號“杭州美創科技有限公司”,原文作者:柳遵梁

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2168937/,如需轉載,請註明出處,否則將追究法律責任。

相關文章