Web 應(yīng)用程序防火墻(WAF)現(xiàn)在已經(jīng)成為許多商業(yè) Web 網(wǎng)站與系統(tǒng)的基本保護(hù)措施,它的確在防范許多針對(duì) Web 系統(tǒng)的安全攻擊方面卓有成效,但是 WAF 在面對(duì)攻擊方式多種多樣的 SQL 注入方面還是顯得束手無策。所以,不要以為有了 WAF 的保護(hù),數(shù)據(jù)庫安全就萬無一失了。事實(shí)上,數(shù)據(jù)庫仍然存在很大的安全隱患。
背景知識(shí):什么是 WAF?
Web 應(yīng)用防火墻(WAF)是一種基礎(chǔ)的安全保護(hù)模塊,主要針對(duì) HTTP 訪問的 Web 程序保護(hù),部署在 Web 應(yīng)用程序前面,在用戶請(qǐng)求到達(dá) Web 服務(wù)器前對(duì)用戶請(qǐng)求進(jìn)行掃描和過濾,分析并校驗(yàn)每個(gè)用戶請(qǐng)求的網(wǎng)絡(luò)包,確保每個(gè)用戶請(qǐng)求有效且安全,對(duì)無效或有攻擊行為的請(qǐng)求進(jìn)行阻斷或隔離。
WAF 可通過定義一些常見的 SQL 注入特征碼對(duì)常見 SQL 注入攻擊提供防護(hù),比如 SQL 注入代碼加入到某些命令或某些輸入,這些 WAF 是沒有問題的。但是市面上的關(guān)系型數(shù)據(jù)總類非常多,雖然有統(tǒng)一的 SQL 結(jié)構(gòu)化數(shù)據(jù)查詢語言,但是每個(gè)數(shù)據(jù)庫的具體實(shí)現(xiàn)有非常多的差異,這些差異就導(dǎo)致了多種 SQL 注入攻擊方式的產(chǎn)生。因此也就導(dǎo)致了像 WAF 這類安全保護(hù)系統(tǒng)在不理解應(yīng)用程序的上下文,不熟悉數(shù)據(jù)庫類型、命令、結(jié)構(gòu)的情況下,僅僅通過分析網(wǎng)絡(luò)數(shù)據(jù)包,加上定義一些數(shù)據(jù)庫特殊字符黑名單,遠(yuǎn)遠(yuǎn)不足以防護(hù)多種多樣的 SQL 注入攻擊。
WAF 在 Web 應(yīng)用安全防護(hù)方面的作用的確值得認(rèn)可,它能有效防護(hù)多種 Web 攻擊,每個(gè)企業(yè)都應(yīng)該使用 WAF 為 Web 應(yīng)用程序提供安全保障。但是,千萬不要天真地以為,有了 WAF 你的數(shù)據(jù)庫就安全了,這種想法非常的危險(xiǎn)。
數(shù)據(jù)庫暴露的訪問點(diǎn)多種多樣
從 WAF 的原理來看,WAF 并不能完全保護(hù) Web 應(yīng)用程序免受 SQL 注入攻擊,因?yàn)樗?Web 應(yīng)用程序外部,不了解應(yīng)用程序的上下文,不知道目標(biāo)數(shù)據(jù)庫的類型,這就從根本上決定了 WAF 只能防范最常見的 SQL 注入方式。
即使 WAF 做的足夠好,能夠防范絕大多數(shù)從 Web 系統(tǒng)進(jìn)入的 SQL 注入攻擊,也不能斷言數(shù)據(jù)庫得到了全面的保護(hù),因?yàn)槟茉L問數(shù)據(jù)庫的不僅僅是 Web 系統(tǒng),還有許多其他途徑。
除了 Web 系統(tǒng)外,還有三類主要的數(shù)據(jù)庫訪問途徑:
1.組織內(nèi)其他應(yīng)用系統(tǒng)能訪問數(shù)據(jù)庫:比如在電子商務(wù)系統(tǒng)里,價(jià)格和庫存可能會(huì)用一些自動(dòng)化的腳本來定時(shí)更新。2.一些內(nèi)部管理程序可以訪問系統(tǒng),也可能是一些接口,方便雇員添加信息或者發(fā)送信息給客戶。3.還有就是數(shù)據(jù)庫 DBA,IT 經(jīng)理,QA,開發(fā)人員等等內(nèi)部人員通過數(shù)據(jù)庫管理工具可以訪問數(shù)據(jù)庫。
WAF 只監(jiān)控通過 HTTP 方式來的數(shù)據(jù),這些潛在的數(shù)據(jù)庫訪問源頭 WAF 是毫不知情的,但是來自內(nèi)部的攻擊則更可怕。內(nèi)部人員非常清楚數(shù)據(jù)庫的結(jié)構(gòu)和內(nèi)容,目標(biāo)性也更加明確,不是獲取經(jīng)濟(jì)利益就是獲取大量內(nèi)部信息,造成的危害可以說是毀滅性的,比如前兩年發(fā)生在銀行客戶數(shù)據(jù)庫大規(guī)模泄露事件就很清晰地證明了這一點(diǎn)。同時(shí)現(xiàn)在黑客攻擊手段越來越高明,翻墻技術(shù)已經(jīng)非常成熟,而且在云時(shí)代有明顯邊界的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)越來越少。總之,WAF 對(duì) SQL 注入攻擊的防護(hù)作用越來越小。
多維度數(shù)據(jù)庫保護(hù)是萬全之策
既然數(shù)據(jù)庫的訪問途徑很多,要想比較好的解決數(shù)據(jù)泄露的危險(xiǎn),多維度防護(hù)才是最佳方法,只有堵住每條可能泄露的攻擊才能確保數(shù)據(jù)庫的安全,可能的方法包括但不僅限于:
運(yùn)行時(shí)應(yīng)用程序自我保護(hù)(RASP)
1.數(shù)據(jù)庫防火墻2.模式學(xué)習(xí)過程3.職責(zé)分離4.風(fēng)險(xiǎn)為基礎(chǔ)的政策5.敏感信息屏蔽6.定期審計(jì)管理和訪問敏感信息
運(yùn)行時(shí)應(yīng)用程序自我保護(hù)(RASP)
RASP 針對(duì)應(yīng)用程序保護(hù)的,不僅僅是對(duì) Web 應(yīng)用測試,它將代碼掃描工具的漏洞發(fā)現(xiàn)功能和 WAF 的實(shí)時(shí)攻擊攔截能力結(jié)合起來,將這些防護(hù)功能像疫苗一樣注入到應(yīng)用程序中,讓應(yīng)用程序像人體擁有疫苗一樣。
對(duì)攻擊擁有免疫能力,找到所有已知漏洞,像一個(gè)虛擬的大補(bǔ)丁一樣修補(bǔ)所有已知漏洞,免于大多數(shù)漏洞攻擊,同時(shí)它和應(yīng)用程序一起運(yùn)行同一個(gè)進(jìn)程,擁有應(yīng)用程序的上下文,了解應(yīng)用程序的每一個(gè)動(dòng)作,因此能精確了解每一個(gè)攻擊并能夠?qū)崟r(shí)對(duì)攻擊進(jìn)行防御。比如 SQL 注入,它在每個(gè)數(shù)據(jù)庫 JDBC 的 statement 具體實(shí)現(xiàn)里,根據(jù)每個(gè)不同的數(shù)據(jù),有針對(duì)性地將 SQL 注入保護(hù)程序注入,這樣就能確保各種可能的 SQL 注入攻擊得到有效的防范,并且這個(gè)防護(hù)是在應(yīng)用程序訪問數(shù)據(jù)庫的必經(jīng)之路,是不可繞過的。這兩個(gè)優(yōu)勢是 WAF 無法企及的。如果每個(gè)應(yīng)用程序都進(jìn)行 RASP 保護(hù),至少無論內(nèi)外通過應(yīng)用進(jìn)行 SQL 注入基本上是不可能的,這樣就可以堵住應(yīng)用程序訪問數(shù)據(jù)庫的漏洞。目前 RASP 是比較新的概念,國外有 HP 在做,國內(nèi)有一個(gè)初創(chuàng)安全 OneRASP 在做類似的產(chǎn)品。
數(shù)據(jù)庫防火墻
數(shù)據(jù)庫防火墻技術(shù)是針對(duì)關(guān)系型數(shù)據(jù)庫保護(hù)需求應(yīng)運(yùn)而生的一種數(shù)據(jù)庫安全主動(dòng)防御技術(shù),數(shù)據(jù)庫防火墻部署于應(yīng)用服務(wù)器和數(shù)據(jù)庫之間。用戶必須通過該系統(tǒng)才能對(duì)數(shù)據(jù)庫進(jìn)行訪問或管理。數(shù)據(jù)庫防火墻所采用的主動(dòng)防御技術(shù)能夠主動(dòng)實(shí)時(shí)監(jiān)控、識(shí)別、告警、阻擋繞過企業(yè)網(wǎng)絡(luò)邊界(FireWall、IDSIPS等)防護(hù)的外部數(shù)據(jù)攻擊、來自于內(nèi)部高權(quán)限用戶(DBA、開發(fā)人員、第三方外包服務(wù)提供商)的數(shù)據(jù)竊取、破壞、損壞等,從數(shù)據(jù)庫 SQL 語句精細(xì)化控制的技術(shù)層面,提供一種主動(dòng)的安全防御措施。
模式匹配學(xué)習(xí)過程
基于自學(xué)習(xí)機(jī)制的風(fēng)險(xiǎn)管控模型,主動(dòng)監(jiān)控?cái)?shù)據(jù)庫活動(dòng),防止未授權(quán)的數(shù)據(jù)庫訪問、SQL 注入、權(quán)限或角色升級(jí),與對(duì)敏感數(shù)據(jù)的非法訪問等。
基于風(fēng)險(xiǎn)管理的策略
任何類型的數(shù)據(jù)庫查詢語句或命令,都可以用一些方法來評(píng)估。影響風(fēng)險(xiǎn)評(píng)估的因素包括白名單和黑名單,命令是從哪里過來的,在一定時(shí)間有多少個(gè)類似的命令等等,利用所有的信息,一個(gè)基于規(guī)則的系統(tǒng)可以借助一系列的規(guī)則來評(píng)估哪些命令是可疑的。
權(quán)責(zé)分明
為數(shù)據(jù)庫訪問分配適當(dāng)?shù)臋?quán)限是非常必要的。基于 Web 的應(yīng)用程序只應(yīng)該有有限的查詢權(quán)限,數(shù)據(jù)庫管理員擁有更大的管理權(quán)限是有必要的。通過適當(dāng)?shù)貓?zhí)行職責(zé)分離,可以有效避免多種數(shù)據(jù)庫攻擊。
混淆敏感數(shù)據(jù)
所有人都應(yīng)該能查看敏感數(shù)據(jù),甚至包括數(shù)據(jù)庫管理員,程序員,以及高管。DBA 可以執(zhí)行一些數(shù)據(jù)庫管理任務(wù),但是沒有必要讓他們能看到數(shù)據(jù)庫中個(gè)人的敏感數(shù)據(jù),為了達(dá)到這個(gè)目的,使用一個(gè)非常強(qiáng)大的和實(shí)時(shí)的數(shù)據(jù)混淆解決方案是非常重要的。一些組織使用離線的“生產(chǎn)”系統(tǒng)進(jìn)行屏蔽,但隨著實(shí)時(shí)數(shù)據(jù)的混淆的成熟,實(shí)時(shí)數(shù)據(jù)混淆系統(tǒng)在成本和避免數(shù)據(jù)更新方面有更大的優(yōu)勢,所有改變都可以實(shí)時(shí)在數(shù)據(jù)庫中體現(xiàn)。
定時(shí)審計(jì)對(duì)敏感數(shù)據(jù)的管理和訪問行為
一致的和可靠的審計(jì)過程中,尋找可疑的活動(dòng)和更新政策,不斷提高數(shù)據(jù)庫安全還有很長的路要走。今天的數(shù)據(jù)庫安全產(chǎn)品可以根據(jù)可定制的規(guī)則對(duì)某些種類的訪問提供警報(bào)服務(wù)。
讓每個(gè)公司都能保護(hù)得起數(shù)據(jù)庫安全
在以前,數(shù)據(jù)庫安全保護(hù)只有少數(shù)大公司花大價(jià)錢才能搞好,數(shù)據(jù)庫防火墻非常昂貴。制定規(guī)則,審計(jì)行為都需要大量的人力去解決,小公司基本沒有能力去做。現(xiàn)在 RASP 是一種非常好的解決方案,只要制定簡單規(guī)則,比如只有管理員能訪問生產(chǎn)數(shù)據(jù)庫等,其他所有數(shù)據(jù)庫訪問都通過應(yīng)用程序進(jìn)行,而每個(gè)應(yīng)用程序都安裝 RASP 保護(hù)程序,這樣數(shù)據(jù)庫的安全才是有保障的。






