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