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

數據驅動型漏洞是現有階段唯一最重要的安全問題,必須著手解決數據驅動型漏洞,才能夠保證信息安全。當軟件出現漏洞的時候,極其容易被木馬、病毒等利用,而產生信息安全問題,所以解決漏洞問題勢在必行。而數據驅動型漏洞又是漏洞問題中出現最多的一種形式。所以有必要加強數據驅動型漏洞的系統檢測工作,這樣才能夠從根本上保證網絡技術安全和網絡信息安全。