隨著信息化的發(fā)展,數(shù)據(jù)庫(kù)安全問(wèn)題成為當(dāng)前政府和企業(yè)用戶關(guān)注的焦點(diǎn),數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品成為當(dāng)前信息安全產(chǎn)品的新寵。
當(dāng)前在市面上存在著幾十種數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,這些產(chǎn)品的來(lái)源大約有四種類(lèi)型:
(1)國(guó)內(nèi)原先具有網(wǎng)絡(luò)審計(jì)產(chǎn)品的廠商,在網(wǎng)絡(luò)審計(jì)產(chǎn)品的基礎(chǔ)上經(jīng)過(guò)簡(jiǎn)單包裝,推出的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,比如我國(guó)幾大安全廠商推出的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品;
(2)國(guó)內(nèi)廠商專門(mén)針對(duì)數(shù)據(jù)庫(kù)通訊協(xié)議的特點(diǎn),開(kāi)發(fā)出專門(mén)的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,比如安華金和、思福迪、安恒、國(guó)都興業(yè)和帕拉迪等;
(3)國(guó)外的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,比如Imperva、Guardium等;
(4)OEM第三方的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,OEM對(duì)象可能是國(guó)內(nèi)的產(chǎn)品,也可能是國(guó)外的產(chǎn)品(比如Imperva或韓國(guó)的DBInsight);
從國(guó)家的安全政策上,國(guó)外的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品或OEM國(guó)外的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品都存在安全隱患,不在本文的評(píng)論范圍內(nèi)。
在這里我們主要分析下國(guó)內(nèi)廠商開(kāi)發(fā)的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的常見(jiàn)缺陷,當(dāng)然這些缺陷并不是每種產(chǎn)品都具備,讀者若有興趣且條件方便的話,可以進(jìn)行有針對(duì)性的測(cè)試:
1:長(zhǎng)SQL語(yǔ)句漏審
原因是長(zhǎng)SQL語(yǔ)句(比如超過(guò)2K)被分配到了多個(gè)通訊包中,而相關(guān)產(chǎn)品對(duì)跨通訊包的協(xié)議解析并未進(jìn)行精細(xì)化的處理,該錯(cuò)誤會(huì)造成全部或局部漏審,極易被攻擊者利用。
2:多語(yǔ)句無(wú)法有效分割;
SQL Server這樣的數(shù)據(jù)庫(kù)支持多語(yǔ)句同時(shí)發(fā)送,語(yǔ)句間缺乏明確的分割標(biāo)識(shí);由于大多的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品是基于正則表達(dá)式,無(wú)法有效分割SQL語(yǔ)句,造成SQL語(yǔ)句的審計(jì)解析錯(cuò)誤,如無(wú)法正確捕獲SQL語(yǔ)句的類(lèi)型、操作對(duì)象等。
3:復(fù)雜語(yǔ)句對(duì)象解析錯(cuò)誤
SQL語(yǔ)句由于要表達(dá)各種復(fù)雜的檢索條件和統(tǒng)計(jì)分析情況,語(yǔ)法非常復(fù)雜,數(shù)據(jù)庫(kù)系統(tǒng)需要借助Yacc&Lex這樣的詞法和語(yǔ)法解析工具進(jìn)行語(yǔ)句解析。
但大多數(shù)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品采用的是正則匹配技術(shù),在語(yǔ)句中具有子查詢、關(guān)聯(lián)查詢等情況時(shí)無(wú)法準(zhǔn)確獲得多層對(duì)象,特別是在SQL語(yǔ)句中使用別名的時(shí)候;這些缺陷往往會(huì)造成錯(cuò)誤的數(shù)據(jù)庫(kù)對(duì)象記錄。
4:參數(shù)值與SQL語(yǔ)句匹配錯(cuò)誤
為了提升SQL處理的效率,大多數(shù)應(yīng)用軟件會(huì)利用數(shù)據(jù)庫(kù)編程的語(yǔ)句預(yù)編譯(Prepare)、參數(shù)綁定(bind)機(jī)制,以實(shí)現(xiàn)高效處理。
這種機(jī)制本質(zhì)上是通過(guò)句柄追蹤機(jī)制完成的,大多數(shù)的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品能夠處理簡(jiǎn)單的預(yù)編譯與參數(shù)綁定的情況;但當(dāng)預(yù)編譯與參數(shù)綁定達(dá)到幾十條時(shí),調(diào)用情況稍微復(fù)雜,就發(fā)生了大量的參數(shù)值與語(yǔ)句的錯(cuò)誤搭配,從而造成大量錯(cuò)審。
5:錯(cuò)誤的應(yīng)答結(jié)果,,特別是影響行數(shù)解析不正確
對(duì)于SQL操作是否成功,是數(shù)據(jù)庫(kù)審計(jì)的基本需求;對(duì)數(shù)據(jù)庫(kù)操作讀取或影響了多少行是用戶的實(shí)際需求。
但SQL操作成功與否的準(zhǔn)確記錄,需要仰仗SQL語(yǔ)句的合理切割和句柄的準(zhǔn)確追蹤及對(duì)返回結(jié)果集的完全解析;大多數(shù)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品在多語(yǔ)句情況,或者通過(guò)FETCH操作批量獲取等環(huán)節(jié)下,無(wú)法準(zhǔn)確獲得查詢執(zhí)行的正確性以及影響行數(shù)。
6:充滿失真率的應(yīng)用用戶關(guān)聯(lián)
市場(chǎng)上的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品大多數(shù)都宣傳支持三層關(guān)聯(lián)審計(jì),實(shí)現(xiàn)SQL語(yǔ)句與業(yè)務(wù)用戶的關(guān)聯(lián)。這種基于三層關(guān)聯(lián)審計(jì)的技術(shù),是通過(guò)http協(xié)議中的參數(shù)與SQL語(yǔ)句中的參數(shù)的匹配,以及時(shí)間的匹配來(lái)完成的,屬于模糊匹配。
這種方法在http參數(shù)經(jīng)過(guò)加工后或基于邏輯判斷后再發(fā)出SQL語(yǔ)句,也即SQL語(yǔ)句的參數(shù)與http參數(shù)沒(méi)有直接的匹配關(guān)系時(shí)將完全失效;在高并發(fā)時(shí)更是一個(gè)災(zāi)難。
這種方法的準(zhǔn)確率往往很難超過(guò)80%。
7、未專業(yè)化的審計(jì)界面
這個(gè)問(wèn)題主要是針對(duì)基于網(wǎng)絡(luò)審計(jì)而發(fā)展來(lái)的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,這種產(chǎn)品由于在設(shè)計(jì)之初就不是專門(mén)面向數(shù)據(jù)庫(kù)用戶的,因此并未按照數(shù)據(jù)庫(kù)的訪問(wèn)類(lèi)別、會(huì)話追蹤、數(shù)據(jù)庫(kù)對(duì)象層次進(jìn)行界面組織,造成這類(lèi)產(chǎn)品的界面極其不易使用。
8、過(guò)度冗余的審計(jì)信息存儲(chǔ)
很多應(yīng)用系統(tǒng)會(huì)采用動(dòng)態(tài)拼接SQL語(yǔ)句的方式來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn);這會(huì)造成大量SQL語(yǔ)句語(yǔ)法形式相同而僅僅是SQL語(yǔ)句中的參數(shù)值不同的語(yǔ)句。當(dāng)前的很多審計(jì)產(chǎn)品將這些語(yǔ)句進(jìn)行重復(fù)地記錄和存儲(chǔ),造成了審計(jì)效率的低下,存儲(chǔ)設(shè)備的浪費(fèi),并會(huì)對(duì)SQL語(yǔ)句的分析和排查效率造成致命影響。
以上是對(duì)8類(lèi)問(wèn)題的簡(jiǎn)單總結(jié),在后續(xù)章節(jié)中將對(duì)每個(gè)問(wèn)題進(jìn)行展開(kāi)說(shuō)明。
說(shuō)明:本文來(lái)自數(shù)據(jù)庫(kù)安全廠家“安華金和” 的投稿,獨(dú)發(fā)“游俠安全網(wǎng)”(www.youxia.org),轉(zhuǎn)載請(qǐng)包括本聲明。