2015年10月數(shù)據(jù)安全漏洞分析報告
為了提高廣大用戶的安全意識,數(shù)據(jù)庫安全廠商安華金和綜合來自補天、烏云、漏洞盒子等漏洞平臺高危數(shù)據(jù)安全漏洞,發(fā)布每日安全資訊,數(shù)據(jù)庫攻防實驗室(DBSec Labs)以月為單位,將數(shù)百個高危漏洞匯總,形成分析報告,分享廣大用戶及合作伙伴。
2015年10月,安華每日安全資訊總結(jié)發(fā)布了154個數(shù)據(jù)泄密高危漏洞,這些漏洞分別來自烏云、補天、漏洞盒子等平臺,涉及8個行業(yè),公司機構(gòu)、互聯(lián)網(wǎng)、交通運輸、教育、金融保險、能源、運營商、政府。同比9月份的134個,漏洞數(shù)量增加20個。10月份的漏洞中,SQL注入漏洞數(shù)量占總量的38%,重回“第一寶座”。
格局不改,SQL注入重回“王者”
數(shù)據(jù)安全問題多數(shù)是從Web端開始。10月份SQL注入漏洞再次引爆新高潮,被白帽子挖掘出58個SQL注入相關(guān)漏洞,這些漏洞遍及公司機構(gòu)、互聯(lián)網(wǎng)、政府等6個行業(yè)。SQL注入漏洞在10月份統(tǒng)計的漏洞總數(shù)中占據(jù)了近4成比例。
10月平臺SQL注入漏洞占主要比重
10月的SQL注入漏洞與以往的SQL注入漏洞存在很大的不同點。以往SQL注入是由于平臺缺乏對應(yīng)的校驗機制而導(dǎo)致注入成功。10月的SQL注入案例中很多平臺的后臺存在WAF,但入侵者繞過WAF進行SQL注入。這源于WAF的某些技術(shù)限制,確實存在一些手段可以繞過WAF進行SQL注入。
白帽子“獨愛”政府,60個漏洞顯現(xiàn)
從10月154個受到數(shù)據(jù)泄露漏洞威脅的行業(yè)來看,政府、互聯(lián)網(wǎng)、行業(yè)機構(gòu)依舊是重災(zāi)區(qū)。10月單月僅安華每日安全資訊統(tǒng)計出的154個高危漏洞中就有60個政府行業(yè)漏洞(包含了衛(wèi)生醫(yī)療、教育、社保公積金幾個子類)占比38%,互聯(lián)網(wǎng)行業(yè)占全部數(shù)據(jù)泄露威脅的22%。行業(yè)機構(gòu)緊隨其后,漏洞比例占11%。
10月數(shù)據(jù)安全漏洞行業(yè)分布情況
10月政府行業(yè)漏洞數(shù)量暴漲,本月政府行業(yè)有60個漏洞,同比9月份的43個增加了17個,占整體漏洞總數(shù)的38%。也是9月份以來三大高危行業(yè)(政府、互聯(lián)網(wǎng)、行業(yè)機構(gòu))中,唯一漏洞數(shù)大幅攀升的行業(yè)。政府被集中爆出漏洞與自身網(wǎng)站的WAF策略配置有明顯關(guān)系。政府漏洞中有24個漏洞是繞過WAF的SQL注入漏洞。60個中還存在兩個弱口令漏洞、三個配置錯誤漏洞,弱口令直接被白帽子用工具爆破出密碼。相信通過合理的制度和一定的輔助工具弱口令和配置錯誤應(yīng)該能夠被杜絕。在企業(yè)機構(gòu)、教育、運營商和互聯(lián)網(wǎng)中,也存在上述問題。雖然本月平臺系統(tǒng)漏洞有明顯減少,但依舊活躍在各個行業(yè)。錯誤配置、弱口令等人為因素依舊沒有杜絕。
10月常見數(shù)據(jù)泄露原因分析
SQL注入是一種常見的黑客入侵WEB應(yīng)用服務(wù)器的手法。SQL注入產(chǎn)生的根本原理在于SQL語言是一種解釋型語言。解釋型語言是一種在運行時由一個運行時組件解釋語言代碼并執(zhí)行其中包含指令的語言。
SQL注入正是基于解釋型語言的執(zhí)行方式產(chǎn)生的。解釋器處理的數(shù)據(jù)實際上是由程序員編寫的代碼和用戶提交的數(shù)據(jù)共同組成的。黑客向Web應(yīng)用發(fā)送精心構(gòu)造的輸入,這個輸入中的一部分被解釋成程序指令,改變原來的程序判斷的邏輯。最終黑客可能通過SQL注入獲取Web應(yīng)用的管理員權(quán)限和Web應(yīng)用存在數(shù)據(jù)庫中的大量敏感信息。
10月份數(shù)據(jù)泄漏威脅主要原因
WAF雖然在一定程度上可以對SQL注入進行防護,但往往需要在性能和防護效果上做權(quán)衡。讓W(xué)AF處于這種尷尬境地的原因在于SQL注入是從http和SQL兩個角度進行入侵的手法,而WAF主要針對HTTP 協(xié)議進行解析。如果繞過的手法是出現(xiàn)在SQL語法中,WAF無法知道WEB應(yīng)用中生成用于訪問數(shù)據(jù)庫完整的SQL語句,無法針對訪問數(shù)據(jù)庫的SQL語句進行分析、識別,于是只能考慮采用關(guān)鍵字過濾等方式來進行禁止,這種一個一個封堵的方式難以遍歷所有SQL注入情況,在防守上存在遺漏,如果大量使用正則匹配又會降低性能。產(chǎn)生這些問題的根源都在于WAF無法對訪問數(shù)據(jù)庫的完整SQL語句做分析、識別。
由于WAF采用的是正則匹配的方式,于是出現(xiàn)了以下3中常見繞過WAF的手段:
(1).編碼繞過
在大小寫繞過的基礎(chǔ)上開始出現(xiàn)編碼繞過,主要出現(xiàn)了三種:URL編碼、十六進制編碼、Unicode編碼。在瀏覽器中輸入URL會進行一次URL編碼,黑客會通過多次編碼來進行WAF繞過,例如:Id.php?id=1%2520union/**/select ,數(shù)據(jù)庫得到的Id.php?id=1 union/**/select。如果只解碼一次得到的是Id.php?id=1%20union/**/select,很有可能繞過WAF入侵數(shù)據(jù)庫。針對這一問題可以采用多次循環(huán)解碼來應(yīng)對。其中Unicode編碼種類很多,如果只是基于黑名單過濾,無法處理全部情況,其中UTF-32曾經(jīng)實現(xiàn)過對GOOGLE的繞過。
(2).注釋繞過
不但可以采用編碼改寫關(guān)鍵字,還可以采用注釋改寫關(guān)鍵字,避免正則匹配。例如z.com/index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4 'union%a0select pass from users# 。就是用符號編碼代替一部分字母和判定的空格來逃避正則匹配。(selectxxx不會被攔截,因為可能是函數(shù)名等。select 空格xxx則一定會被攔截,去掉空格成為繞過的關(guān)鍵)。同樣還有針對MYSQL版本的/*!5000union*/系列。
(3).等價替換
等價替換是個比較大的分類,主要可以分為等價函數(shù)、等價符號、特殊符號、比較符號等4類。
等價函數(shù),就是同功能函數(shù)替換。WAF禁止了一些函數(shù),但對另外一些函數(shù)沒有禁止例如 Substring()可以用mid(),substr()這些函數(shù)來替換。還將可以采用生僻函數(shù)迂回完成原函數(shù)的功能,進行WAF關(guān)鍵字繞過。and or 這種關(guān)鍵字在PHP中可以用|| 和&&代替。于是語句id=1 or 1=1就可以寫成id=1 || 1=來進行繞過。同樣!= 、>、<等都可以代替等號進行繞過。
除去繞過關(guān)鍵字和關(guān)鍵符號外,最關(guān)鍵的是繞過空格。想各種方式避免空格出現(xiàn)。
例如 原句 id=1 or 1=1
可以寫成 id=1+or+1=1
id=1%0bor%0b1=1
id=1--s%0aor--s%0a1=1
id=1/*!or*/1=1
id=1()or(1=1) 等多種形式進行嘗試繞過
Waf解決上述問題的方法基本是在特征庫中添加更多的過濾項。越多的過濾項,越慢的性能。
從SQL角度防守SQL注入
WAF擅長解析過濾http協(xié)議,不能對SQL語句進行整體分析。針對這個缺陷,可以在WEB應(yīng)用和數(shù)據(jù)庫之間加入數(shù)據(jù)庫防火墻進行SQL部分的解析和過濾。數(shù)據(jù)庫防火墻對從WEB應(yīng)用發(fā)向數(shù)據(jù)庫的SQL語句進行語法解析,可以理解SQL語句的真實含義,并做以下四點判斷:
1. 語句是否含有明顯的SQL注入特征;
2. 語句訪問的對象是否屬于該用戶訪問權(quán)限;
3. 語句調(diào)用的核心函數(shù)是否存在高危漏洞;
4. 限制語句的返回行數(shù),把危險控制在最低限。
加入數(shù)據(jù)庫防火墻后,數(shù)據(jù)庫防火墻會在WEB應(yīng)用和數(shù)據(jù)庫之間獲取WEB應(yīng)用發(fā)送給數(shù)據(jù)庫的SQL語句。通過拿到的SQL語句,按照不同數(shù)據(jù)庫進行SQL協(xié)議解析。通過協(xié)議解析把應(yīng)用發(fā)送的SQL語句還原成標(biāo)準(zhǔn)模式(去掉各種數(shù)據(jù)庫兼容符號和特殊用法)防止黑客利用上述繞過WAF的手法繞過數(shù)據(jù)庫防火墻進行SQL注入。首先還原后的SQL語句和黑名單中的禁止語句結(jié)構(gòu)進行匹配,如果認為是威脅語句,則禁止該語句發(fā)送到數(shù)據(jù)庫端,并通過發(fā)送短信、郵件等方式及時通知管理員進行處理;語句結(jié)構(gòu)判斷沒有問題后防火墻接下來會對語句中的操作對象和謂詞進行判斷,如果對象或謂詞有控制,則依舊禁止該語句發(fā)送到數(shù)據(jù)庫端;即便繞過全部防護,SQL語句被發(fā)送到數(shù)據(jù)庫端,數(shù)據(jù)庫防火墻還可以通過限制返回行數(shù)來減小數(shù)據(jù)外泄的損失。
結(jié)束語
在防御SQL注入上WAF的最大問題是無法對WEB發(fā)給數(shù)據(jù)庫的SQL語句進行獲取、分析。只能通過正則匹配來盡量保證遍歷每種情況,即使這樣也無法保證完全遍歷。如果為了達到完全遍歷而設(shè)置大量的正則匹配,會對性能產(chǎn)生嚴重影響。因為技術(shù)路線原因?qū)е耊AF無法克服這種自身缺陷,而數(shù)據(jù)庫防火墻則恰好彌補了WAF的技術(shù)路線缺陷。數(shù)據(jù)庫防火墻的防護策略、手段都是基于SQL協(xié)議解析而來。數(shù)據(jù)庫防火墻在防止SQL注入上徹底的解決了WAF以犧牲性能為代價的方式,相信如果數(shù)據(jù)庫防火墻和WAF配合使用會使我們的數(shù)據(jù)庫更加安全。
為了實現(xiàn)讓數(shù)據(jù)使用更安全的使命,安華金和作為專業(yè)的數(shù)據(jù)庫安全廠商,有義務(wù)和責(zé)任為客戶提供創(chuàng)新前沿與穩(wěn)定的數(shù)據(jù)庫安全防護產(chǎn)品與解決方案。
最后,也是最重要的,用戶還是要從主觀因素上提高安全意識,加強內(nèi)部安全管理防范。安全就是這樣一種形態(tài),平時不出狀況看不到安全的效果,一旦企業(yè)出現(xiàn)了數(shù)據(jù)泄露事件,其經(jīng)濟損失、名譽損失將不可估量,更甚者會使企業(yè)形象一落千丈。