網(wǎng)絡(luò)技術(shù)具有資源共享、信息傳輸與集中處理、負(fù)載均衡與分布處理和綜合信息服務(wù)等功能,給我們的工作和生活提供了極大的方便。網(wǎng)絡(luò)技術(shù)豐富多彩,吸引著越來(lái)越多的人使用它,其正在改變我們長(zhǎng)久以來(lái)形成的思維模式和生活模式。但是其在使用過(guò)程中也存在著一些漏洞,諸如帶寬短缺、IP地址資源匱乏、數(shù)據(jù)驅(qū)動(dòng)型漏洞等。而這些漏洞的存在也影響著我們的正常安全使用,隨著科學(xué)技術(shù)的不斷進(jìn)步,相信網(wǎng)絡(luò)技術(shù)所存在的漏洞都能夠逐一得到解決。
這里我們將對(duì)基于網(wǎng)絡(luò)技術(shù)的兩種數(shù)據(jù)驅(qū)動(dòng)型漏洞形成原理進(jìn)行介紹。攻擊者希望利用數(shù)據(jù)驅(qū)動(dòng)型漏洞對(duì)網(wǎng)絡(luò)技術(shù)進(jìn)行攻擊,進(jìn)而得到自己想要的東西。為避免數(shù)據(jù)驅(qū)動(dòng)型漏洞的出現(xiàn),我們應(yīng)當(dāng)了解其基本的形成原理,這樣才能夠從源頭上保證信息安全。
其一是緩沖區(qū)溢出漏洞。其攻擊原理是向程序中的緩沖區(qū)寫(xiě)入超出其邊界的數(shù)據(jù),造成溢出。攻擊者所想的到的效果是溢出所產(chǎn)生的錯(cuò)誤程序能夠執(zhí)行攻擊者預(yù)設(shè)的代碼,進(jìn)而順利打開(kāi)遠(yuǎn)程連接的 She11,以得到自己想得到的信息。而棧溢出是最為常見(jiàn)的緩沖區(qū)溢出方式。程序編碼都有固定的函數(shù)表達(dá)方式,如果更改了函數(shù)的表達(dá)方式就會(huì)導(dǎo)致棧溢出。攻擊者通常會(huì)對(duì)某個(gè)函數(shù)進(jìn)行調(diào)用,并在棧頂為調(diào)用的函數(shù)分配一個(gè)固定的棧幀結(jié)構(gòu),這樣就可以實(shí)現(xiàn)益處。攻擊者如果想要實(shí)現(xiàn)對(duì)程序的控制和信息的獲取,就可以將返回地址值覆蓋,這樣一來(lái)就可以使函數(shù)在返回程序的時(shí)候就會(huì)轉(zhuǎn)向新的地址繼續(xù)執(zhí)行,就可以實(shí)現(xiàn)對(duì)程序的控制和信息的獲取。
其二是格式化字符串漏洞。其形成原理是,當(dāng) Printf()系列函數(shù)被調(diào)用的時(shí)候,會(huì)從字符串里面讀取字符,如果遇到格式化的字符的時(shí)候,函數(shù)會(huì)按照控制字符從輸出表項(xiàng)對(duì)應(yīng)的變量中讀取數(shù)據(jù),然后按照控制字符的規(guī)定格式輸出數(shù)據(jù),這樣就可以實(shí)現(xiàn)對(duì)系統(tǒng)程序的控制。程序的運(yùn)行是依托于代碼的,如果更改了代碼內(nèi)的函數(shù)編排順序,就可以改變程序的運(yùn)行方向,達(dá)到攻擊者的目的。而格式化字符串漏洞則是通過(guò)改變字符串的運(yùn)行方式實(shí)現(xiàn)對(duì)系統(tǒng)的控制的。
網(wǎng)絡(luò)技術(shù)是從1990年左右逐漸發(fā)展起來(lái)的一項(xiàng)新技術(shù),而從那個(gè)時(shí)候開(kāi)始,針對(duì)數(shù)據(jù)驅(qū)動(dòng)型漏洞的研究就已經(jīng)開(kāi)始了,發(fā)展到現(xiàn)在,對(duì)基于數(shù)據(jù)驅(qū)動(dòng)漏洞的攻擊行為和方式的研究已經(jīng)比較成熟。數(shù)據(jù)驅(qū)動(dòng)型漏洞的攻擊行為,從不同的角度觀察有著不同的結(jié)果。例如從程序員的角度觀察,基于網(wǎng)絡(luò)技術(shù)的數(shù)據(jù)驅(qū)動(dòng)型漏洞的緩沖區(qū)溢出應(yīng)當(dāng)是不可避免的。從網(wǎng)絡(luò)技術(shù)開(kāi)始應(yīng)用的時(shí)候,國(guó)內(nèi)外就開(kāi)始對(duì)基于數(shù)據(jù)驅(qū)動(dòng)型漏洞的攻擊行為進(jìn)行研究了。比較典型的有2000年的時(shí)候,在acm sigsoft會(huì)議上,CERT的Richard Pethia認(rèn)為數(shù)據(jù)驅(qū)動(dòng)型漏洞是唯一最重要的安全問(wèn)題。而從我們現(xiàn)在的角度來(lái)看,他的這句話是及其正確的。目前我們?cè)诰W(wǎng)絡(luò)技術(shù)的應(yīng)用中,數(shù)據(jù)驅(qū)動(dòng)型漏洞確實(shí)是唯一最重要的安全問(wèn)題。而國(guó)內(nèi)對(duì)基于網(wǎng)絡(luò)技術(shù)的數(shù)據(jù)驅(qū)動(dòng)型攻擊技術(shù)的研究起步較晚,沒(méi)有形成相應(yīng)的體系,只有部分黑客和安全人員在這一方方面有著深入的研究。另外,國(guó)內(nèi)的一些比較知名的殺毒軟件,在進(jìn)行軟件開(kāi)發(fā)的時(shí)候,也對(duì)基于網(wǎng)絡(luò)技術(shù)的數(shù)據(jù)驅(qū)動(dòng)型漏洞檢測(cè)技術(shù)有所研究。
目前針對(duì)數(shù)據(jù)驅(qū)動(dòng)型漏洞的檢測(cè)主要有兩種,即動(dòng)態(tài)監(jiān)測(cè)和靜態(tài)檢測(cè)。動(dòng)態(tài)監(jiān)測(cè)技術(shù)主要是從操作系統(tǒng)的底層出發(fā),針對(duì)C語(yǔ)言編輯器本身的特征,對(duì)運(yùn)行中的程序進(jìn)行動(dòng)態(tài)追蹤和保護(hù)。動(dòng)態(tài)監(jiān)測(cè)顧名思義,需要編碼程序在運(yùn)行過(guò)程中進(jìn)行檢測(cè)工作,在程序運(yùn)行過(guò)程中,如果收到惡意攻擊或者非法篡改代碼的情況,就會(huì)自動(dòng)發(fā)出警告信息或者直接將程序停止運(yùn)行,避免危險(xiǎn)的侵入。這種技術(shù)主要包含增強(qiáng)編譯器技術(shù)、黑盒測(cè)試技術(shù)和安全鏈接技術(shù)等。而靜態(tài)檢測(cè)技術(shù)則依托于源代碼,并不需要程序運(yùn)行。靜態(tài)檢測(cè)技術(shù)在應(yīng)用過(guò)程中需要得到編譯理論的支持和對(duì)源代碼進(jìn)行分析和模式匹配等,這樣才能夠保證靜態(tài)檢測(cè)技術(shù)的正常運(yùn)行。靜態(tài)檢測(cè)技術(shù)在工作過(guò)程中,如果識(shí)別到漏洞信息,就會(huì)對(duì)其進(jìn)行準(zhǔn)確的定位,并發(fā)出警告和進(jìn)行自動(dòng)修復(fù)。在具體的應(yīng)用過(guò)程中,可以結(jié)合這兩種技術(shù)進(jìn)行使用,以最大程度的避免漏洞對(duì)網(wǎng)絡(luò)技術(shù)的損害。
數(shù)據(jù)驅(qū)動(dòng)型漏洞的檢測(cè)系統(tǒng)依托的是語(yǔ)義分析的原型檢測(cè)系統(tǒng),是以編譯原理中的詞法分析和語(yǔ)法分析作為基礎(chǔ)的,采用的是Wagner對(duì)緩沖區(qū)的數(shù)學(xué)描述方法,實(shí)現(xiàn)語(yǔ)義方面的檢測(cè)。而原型系統(tǒng)主要包括四個(gè)模塊,即語(yǔ)法分析模塊、緩沖區(qū)預(yù)先搜索模塊、創(chuàng)建程序執(zhí)行流程模塊及綜合處理模塊。四個(gè)模塊分別具有自己的作用,通過(guò)四個(gè)模塊的協(xié)調(diào)配合,及時(shí)的監(jiān)測(cè)出與源代碼所不同的地方,并發(fā)出預(yù)警和盡可能的進(jìn)行自我修復(fù)。語(yǔ)法分析模塊負(fù)責(zé)的事讀入源代碼文件及源代碼文件的關(guān)鍵字等部分,而緩沖區(qū)預(yù)先搜索模塊則是在源代碼系統(tǒng)中進(jìn)行準(zhǔn)確的緩沖區(qū)定位,而創(chuàng)建程序執(zhí)行流程模塊則是遍歷源代碼,生成程序執(zhí)行流程的有向圖,而綜合處理模塊則是采用語(yǔ)法分析、語(yǔ)義分析的手段對(duì)源代碼進(jìn)行檢測(cè),并及時(shí)的得出檢測(cè)的結(jié)果。
緩沖區(qū)溢出漏洞的檢測(cè)。針對(duì)緩沖區(qū)益處漏洞的檢測(cè),采用的是緩沖區(qū)搜索的方法,對(duì)緩沖區(qū)進(jìn)行全面的搜索,對(duì)溢出位置進(jìn)行及時(shí)的警告,通過(guò)停止程序運(yùn)行等方式對(duì)益處問(wèn)題進(jìn)行解決,從而保證信息安全。數(shù)據(jù)驅(qū)動(dòng)型漏洞的形成與源代碼中緩沖區(qū)的開(kāi)辟有著不可分割的關(guān)系,所以需要對(duì)源代碼的緩沖區(qū)進(jìn)行搜索和預(yù)判,這樣才能夠及時(shí)的發(fā)現(xiàn)溢出位置,并進(jìn)行解決,避免信息安全問(wèn)題的出現(xiàn)。
格式化字符串漏洞的檢測(cè)。不同于其他漏洞的形成原理,格式化字符串漏洞是通過(guò)對(duì)格式化字符串實(shí)現(xiàn)的系統(tǒng)漏洞,通常是由 Printf()以及同一類的函數(shù)形成的,所以對(duì)其的漏洞檢測(cè)工作也比較簡(jiǎn)單。針對(duì)格式化字符串攻擊的局限性,可以采用對(duì)源代碼進(jìn)行檢測(cè)的方式實(shí)現(xiàn)對(duì)格式化字符串漏統(tǒng)的檢測(cè)。具體的檢測(cè)方式通常會(huì)采用模式匹配算法。這樣可以對(duì)字符串中的函數(shù)進(jìn)行逐一的對(duì)比,對(duì)于出現(xiàn)錯(cuò)誤或者出現(xiàn)缺少的參數(shù),會(huì)及時(shí)的提出字符串缺失或錯(cuò)誤的信號(hào),引起檢測(cè)者的注意。
數(shù)據(jù)驅(qū)動(dòng)型漏洞是現(xiàn)有階段唯一最重要的安全問(wèn)題,必須著手解決數(shù)據(jù)驅(qū)動(dòng)型漏洞,才能夠保證信息安全。當(dāng)軟件出現(xiàn)漏洞的時(shí)候,極其容易被木馬、病毒等利用,而產(chǎn)生信息安全問(wèn)題,所以解決漏洞問(wèn)題勢(shì)在必行。而數(shù)據(jù)驅(qū)動(dòng)型漏洞又是漏洞問(wèn)題中出現(xiàn)最多的一種形式。所以有必要加強(qiáng)數(shù)據(jù)驅(qū)動(dòng)型漏洞的系統(tǒng)檢測(cè)工作,這樣才能夠從根本上保證網(wǎng)絡(luò)技術(shù)安全和網(wǎng)絡(luò)信息安全。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2015年10期