祝賀《如何終結數據庫SQL注入攻擊》文章發表
發布時間:
2017.01.20 | 來源:
帕拉迪
由杭州樂桦網絡科技有限公司副總經理李總撰寫的文章《如何終結數據庫SQL注入攻擊》發表在《互聯網安全的40個(gè)智慧洞見(jiàn)》一(yī)書中。該書作者均是在中國(guó)乃至全球具有重要影響力的中外網絡安全名家,内容不僅覆蓋Web 安全、移動安全、企業(yè)安全、電(diàn)子取證、雲與數據、軟件(jiàn)安全、APT 等熱點安全領域,還(hái)涉及國(guó)家網絡空間戰略、新興威脅、工(gōng)控安全、車聯網安全、信息安全立法等新興安全領域。
文章從(cóng)DT時代面臨的數據庫安全威脅、優雅而堅定的和SQL注入說再見(jiàn)、應用場景三個(gè)部分進行闡述。李總指出:大數據和雲計算(suàn)時代的來臨,數據安全防護顯得尤為(wèi)重要。衆所周知,基礎信息網絡和重要信息系統安全防護能(néng)力不強,企業(yè)内部的惡意違規和誤操作,以及第三方運維和開(kāi)發人員(yuán)留取的後門(mén)程序等技(jì)術(shù)安全風險因素和人為(wèi)惡意攻擊的存在,使得數據庫安全乃至信息安全問題頻發。而SQL注入攻擊具有廣泛存在、手段隐蔽、特征不可枚舉、攻擊手段及工(gōng)具平民(mín)化的特征。可以說,隻要人類還(hái)在編寫數據庫應用,SQL注入漏洞就(jiù)會(huì)一(yī)直存在。NGDAP通(tōng)過白(bái)模型鑒别的非常态阻斷模式,對請求數據進行标準化處理,然後将處理後的數據進行規則匹配,合法請求将被傳遞到(dào)真實的數據庫當中。而其他所有的SQL請求則會(huì)立即被阻斷,系統發出攻擊告警,并形成記錄日志(zhì),通(tōng)過這個(gè)過程,NGDAP能(néng)輕松的在源頭成功遏制SQL注入攻擊問題。帕拉迪将圍繞數據安全威脅的發現與防禦的核心貢獻目标,構建和持續完善數據邊界安全産品線,針對數據全生(shēng)命周期的不同場景,提供相(xiàng)匹配的數據安全保護産品及解決方案。
全文如下(xià):
如何終結數據庫SQL注入攻擊
随著(zhe)IT時代的發展,我們的生(shēng)活越來越便捷,高(gāo)速信息時代讓我們能(néng)實現數據的互聯互通(tōng)、信息資源的共享,這就(jiù)是我們所說的信息技(jì)術(shù)時代;而随著(zhe)大數據、雲計算(suàn)等技(jì)術(shù)的不斷興起與成熟,在大數據時代下(xià)的我們體驗的是消費(fèi)行為(wèi)的智能(néng)化,商業(yè)價值的數字化,DT數據技(jì)術(shù)時代的到(dào)來讓我們數據産生(shēng)巨大價值的同時,也帶來了許多(duō)高(gāo)危風險。
跟我們日常息息相(xiàng)關的一(yī)些新聞,比如說某某電(diàn)商因為(wèi)用戶信息洩露,導緻用戶流量大減,品牌造成很大的負面影響;某社保局的參保人員(yuán)信息遭到(dào)洩露,個(gè)人身份證、手機(jī)号碼、參保金額等敏感信息被迫曝光(guāng);某某某高(gāo)校新生(shēng)信息被洩密,不法分子通(tōng)過精準信息進行詐騙,騙走新生(shēng)全家多(duō)年(nián)積攢的學費(fèi)緻使新生(shēng)猝死等事(shì)件(jiàn)頻發。但從(cóng)事(shì)件(jiàn)的本質來看(kàn),這些客戶的數據庫均遭受到(dào)了拖庫攻擊。
一(yī)、數據庫安全威脅分析
那我們的疑問同時也出現了,各大電(diàn)商企業(yè)、金融單位、政府信息中心通(tōng)過多(duō)年(nián)的IT建設,各安全設備已經部署很完善了。從(cóng)邊界安全、過程控制、内容審計等多(duō)方面進行防護,安全服務團隊定期進行漏洞掃描、安全加固等動作,為(wèi)什麽在立體式的防護過程中,數據庫還(hái)是被拖走了呢(ne),而且在很多(duō)情況下(xià)是被長(cháng)時間的、悄無痕迹的竊取掉呢(ne)?
我們從(cóng)兩個(gè)角度來分析:
第一(yī)個(gè)從(cóng)IT建設發展的曆程分析。目前大部分客戶在對安全體系的設計和治理方案中主要依靠傳統邊界安全防護,如防火牆、下(xià)一(yī)代防火牆、IPS、IDS等安全控制類産品;随著(zhe)邊界安全防護的進一(yī)步落地,逐步開(kāi)始向内容安全防護過度,如上(shàng)網行為(wèi)管理、堡壘機(jī)、數據庫審計等安全設備;而随著(zhe)數據大集中之後,數據庫裡(lǐ)的數據越來越有價值,而目前的防護體系中針對數據庫的安全防護是空白(bái)的。很多(duō)客戶認為(wèi)自(zì)己有災備軟件(jiàn)、有數據庫審計就(jiù)能(néng)對數據庫進行安全管理,但實際上(shàng)災備軟件(jiàn)隻能(néng)恢複數據庫原有數據,數據庫審計隻能(néng)事(shì)後對訪問情況進行追溯,如果業(yè)務系統存在SQL注入漏洞,惡意攻擊者就(jiù)可以通(tōng)過繞過WAF等行為(wèi)對數據庫造成攻擊,客戶無法實時保障數據不被竊取或篡改,無法做到(dào)針對數據庫的事(shì)前預防和事(shì)中阻斷。
第二個(gè)從(cóng)目前信息安全等級保護整改遺留的難點分析。等級保護整改中涉及物(wù)理安全、網絡安全、服務器(qì)安全、制度安全等各部分的整改,相(xiàng)對來說通(tōng)過技(jì)術(shù)、制度、傳統安全設備的配置可以較快速和穩妥的進行加固。但是在數據庫安全、應用系統安全上(shàng)的安全加固以及整改卻成棘手之事(shì)。不同的數據庫以及各版本都有漏洞,但由于業(yè)務系統的長(cháng)時間不間斷運行,擔心由于補丁及版本升級造成業(yè)務癱瘓,故把這部分的安全問題暫時擱置;另外,由于應用系統開(kāi)發商已經把業(yè)務系統交付多(duō)年(nián),雖然代碼層面可能(néng)留有一(yī)些漏洞,但是讓項目組重新對代碼進行加固,阻力和壓力都是很大的。由于這些問題的存在,數據庫的大門(mén)一(yī)直向黑(hēi)客敞開(kāi)著(zhe)。不是目前的防護體系已經把核心資産保護的水(shuǐ)洩不通(tōng),而是黑(hēi)客目前還(hái)沒盯上(shàng)你。
通(tōng)過Verison2015年(nián)企業(yè)安全威脅報(bào)告我們可以看(kàn)出,作為(wèi)數據庫的安全威脅越來越高(gāo)。很多(duō)企業(yè)以前業(yè)務中斷已經是很大的安全事(shì)故了,但現在随著(zhe)互聯網的成熟,一(yī)旦客戶或企業(yè)的核心敏感信息被曝光(guāng),基本上(shàng)對其發展、品牌以及事(shì)件(jiàn)導緻的經濟損失将會(huì)是成指數級别的量級遞增。再加之現在的黑(hēi)客産業(yè)鏈發展,已經由當初的個(gè)人散兵作戰,發展到(dào)現在的有組織、有預謀、有利益、有生(shēng)态鏈的規模。由此可見(jiàn),企業(yè)、政府所面臨的數據庫威脅已迫在眉睫。
二、傳統數據庫安全防護弊端
我們來分析一(yī)下(xià)傳統安全防護的弊端。數據庫防火牆主要是基于網絡層的訪問控制,很難對數據庫協議以及應用層協議作出分析與控制;就(jiù)算(suàn)近幾年(nián)發展的如火如荼的下(xià)一(yī)代防火牆,也很難對數據庫協議進行精準解碼并且作出實時阻斷;IPS、IDS主要也是對邊界攻擊進行掃描分析,數據庫層面的分析也很難進行控制;再分析一(yī)下(xià)web應用防火牆,其主要是通(tōng)過規則庫的方式來進行攻擊攔截,而目前很多(duō)Oday攻擊、SQL注入攻擊等方式,都可以繞開(kāi)WAF直接對數據庫進行拖庫。傳統的安全防護手段是無法解決數據庫安全的問題。
三、精準攔截SQL注入攻擊
接下(xià)來看(kàn)看(kàn)我們是如何解決數據庫安全威脅的。在數據庫的衆多(duō)威脅中,業(yè)務系統遭到(dào)SQL注入攻擊,導緻數據庫拖庫應該算(suàn)是最大的威脅之一(yī)。而SQL注入攻擊是廣泛存在的,其攻擊手段隐蔽、特征不可窮舉、攻擊手段平民(mín)化,這些特點也讓其安全防護者頭痛。隻要人類還(hái)在編寫數據庫應用,就(jiù)存在SQL注入漏洞的威脅。
為(wèi)了數據庫安全,我們就(jiù)需要了解數據庫遭到(dào)攻擊或威脅的途徑有哪些:1、操作者直接進入機(jī)房,通(tōng)過直連的方式連接并操作數據庫;2、操作者通(tōng)過網絡途徑使用遠(yuǎn)程C/S客戶端連接數據庫并進行操作;3、B/S中間件(jiàn)三層架構操作者通(tōng)過前端網頁連接中間件(jiàn)應用服務器(qì),再通(tōng)過SQL語句連接數據庫。
前面兩種通(tōng)過相(xiàng)應的制度和控制技(jì)術(shù)可以進行防護,本次重點闡述的是針對中間件(jiàn)業(yè)務系統的防護是整個(gè)數據庫安全行業(yè)的重點關注點
正常的業(yè)務訪問是使用者按照(zhào)正常的訪問方式進行,應用服務器(qì)把前端的請求轉換成SQL語句與數據庫進行交互。而惡意的業(yè)務訪問是惡意攻擊者構建非正常的SQL語句,我們把它定義為(wèi)破壞模态化的行為(wèi)。當一(yī)個(gè)應用系統開(kāi)發完交付的那一(yī)刻起,其正常的業(yè)務交互邏輯或語法就(jiù)已經固化下(xià)來,我們稱之為(wèi)模态化。而惡意攻擊的方法或手段的結果就(jiù)是破壞了正常的模态化。
這就(jiù)需要我們能(néng)對正常的業(yè)務流還(hái)是惡意的攻擊流做到(dào)精準的分析。要做到(dào)這點是需要有大量的技(jì)術(shù)基礎的,比如:數據庫是在IT系統的最後端,前端所有的數據都要彙總過來,實際情況下(xià)就(jiù)存在著(zhe)大數據的并發。網絡中數據包是雜(zá)亂無序進行傳播的,需要通(tōng)過流會(huì)話技(jì)術(shù)把數據包進行重組,使其成為(wèi)有序傳播的會(huì)話。若重組技(jì)術(shù)不成熟,将出現各種丢包、錯(cuò)組的情況,給數據庫防護帶來災難。另外一(yī)個(gè)重點就(jiù)是協議解碼,各個(gè)數據庫都有自(zì)己的私有協議,各家數據庫廠商未向國(guó)内廠商公開(kāi)。我們的解碼工(gōng)作就(jiù)是翻譯,如果協議解碼不全,就(jiù)像打戰一(yī)樣我們無法獲取清楚的情報(bào),基于解碼不全的任何阻斷都是空談。
那在解決其方法的技(jì)術(shù)上(shàng),我們通(tōng)過對業(yè)務SQL語句的關鍵字、邏輯關系等特征自(zì)動采樣學習,并結合高(gāo)性能(néng)的SQL語義分析計算(suàn),構建對應的SQL語法樹,完成模态數據建模。在實際應用環境中,海量的數據主要包括以下(xià)三種數據:業(yè)務數據、運維數據、非法數據;而數據量占比最大的就(jiù)是正常的業(yè)務數據。我們通(tōng)過自(zì)動化學習,把正常的業(yè)務模态化數據流分離出來,把存在惡意攻擊的語句識别出來。在惡意攻擊語句中,SQL注入和中間件(jiàn)通(tōng)道複用兩種攻擊是難中難,同時也是重中重。其難以被發現,所以成為(wèi)防護中重要環節的重點防護對象。
舉個(gè)例子:惡意攻擊者通(tōng)過非法途徑獲得中間件(jiàn)webshell,通(tōng)過其發起的對數據庫的交互,無論是賬号、密碼、IP來源都是相(xiàng)同的,不同的地方可能(néng)是使用後台木(mù)馬作為(wèi)連接工(gōng)具或直接SQL語句來進行數據庫攻擊。通(tōng)過我們自(zì)動的SQL語法建模以及來自(zì)多(duō)維度的準入因子識别技(jì)術(shù),可以把惡意攻擊擋在我們的安全大門(mén)之外。
我們解決問題以及設計的核心思想就(jiù)是放(fàng)水(shuǐ)抓魚,我們通(tōng)過識别海量正常的業(yè)務流使其放(fàng)行,抓取我們所關注的惡意攻擊語句。這不同于傳統的規則庫的方式,由于采用SQL語法樹的建模方式,得以對0DAY、SQL注入等攻擊進行防護,保護數據庫不被拖庫。