寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置的製作方法
2023-10-06 08:01:09 1
專利名稱:寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置的製作方法
技術領域:
本發明提供一種保護寄信人地址免受緩衝器溢出(Buffer Overflow)進攻的存儲器堆棧分離方法及裝置,尤其是提供為了防禦以裂化或是病毒為主要進攻手段的緩衝器溢出(Buffer Overflow)進攻而在存儲器的一部分設置有分離堆棧(SplitStack),通過利用變換索引緩衝器(TLBTranslate Look_aside Buffer)的分離堆棧保護分離寄信人地址免受其他數據影響的保護機械裝置,利用保留位鎖定變換索引緩衝器的一個塊進行防禦的一種寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置。
背景技術:
最近,網際網路發展很快,對網際網路的進攻仍然急劇增加。在多樣的進攻方法中佔比例最大的就是緩衝器溢出進攻。1988年最初蠕蟲莫裡斯蠕蟲中利用緩衝器溢出最弱點開始到最近的紅代碼、爆破工蠕蟲為止在許多地方持續著利用緩衝器溢出的進攻。
緩衝器溢出輸入大於分配在存儲器中的緩衝器的量的數據,操作程序的寄信人地址(Return Address),最終實行黑客想要的代碼。在這裡存儲器的堆棧(Stack)區和堆(Heap)區屬於稱作″緩衝器(Buffer)″的程序處理過程中必要的數據一時存儲的空間,根據″緩衝器溢出″是利用這兩個區中的哪一個區可以分成兩類。
但是,緩衝器溢出進攻中最一般的類型是通過溢出變更存儲在堆棧的寄信人地址的堆棧粉碎。大部分的時候緩衝器和寄信人地址由於是鄰接的所以只要做小小的努力就很容易引起緩衝器溢出。接著,為了阻擋堆棧粉碎就必須要保護寄信人地址。
保護寄信人地址的方法包括在寄信人地址和緩衝器之間插入稱作金絲雀(Canary)的任意值,進攻者引起緩衝器溢出時可以感知金絲雀值的變化的方法和把寄信人地址與現在一樣不存儲在堆棧中而是存儲在另外的空間後切斷進攻的可能性的方法。前者的情況,由於簡單地修改矽編譯器可以看到好的效果,內務操作少在″Stack Guard″,″Pro Police″等現有的許多軟體的技法中被使用。後者的情況,由於從開頭就阻擋寄信人地址的濫用,雖然具有更好的優點,但是保護準備的另外空間的附加費用就變得很必要,因此主要被利用在利用硬體的防禦法中。
利用硬體的現有技術Xu,et al或是Lee,et al及Smash Guard防禦法等是從論文中得知的。圖1a是保護寄信人地址免受緩衝器溢出進攻的Xu,et al的方案圖,圖1b是Lee,et al的方案圖,圖1c是Smash Guard的方案圖。
改善現有技術的大部分的軟體方法的低下的性能,為了提高安全性提出的硬體技法應用的是為了共同保護寄信人地址與現有的數據一起不存儲寄信人地址,而是在設置有另外的硬體堆棧中存儲寄信人地址的後者的方式。
Xu,et al首先在它的論文中提出的是利用為了存儲寄信人地址的另外的場所接受硬體的支援的存儲器的一部分或是利用為了提高傳遞途徑的性能而使用的返回地址堆棧(RASReturn Address Stack)的方案。Lee,et al或是Smash Guard防禦法提出的方案是代替現有的硬體應用,設置有為了存儲寄信人地址的新的存儲裝置。但是這樣的方法存在著如下的問題。
Xu,et al時,存在著這樣的問題只是提出了大的模式的概念,並沒有提出怎麼確保另外的存儲空間的具體方法。另外不顧寄信人地址存儲在存儲器中,沒有提出可以保護免受緩衝器溢出進攻的機械裝置。另外,Lee,et al時或是Smash Guard時存在著這樣的問題要存儲寄信人地址的另外的空間與兌現的相同設置有新的存儲空間,因此存在著增加很大費用的缺點和沒有明確新的存儲空間的定義。
發明內容本發明是為了解決上述問題而提出來的,它的目的就是提供為了防禦以裂化或是病毒為主要進攻手段的緩衝器溢出進攻而在存儲器的一部分上設置分離堆棧,通過利用變換索引緩衝器(TLB)的分離堆棧保護分離寄信人地址免受其他數據影響的保護機械裝置,利用保留位鎖定變換索引緩衝器的一個塊從而進行防禦的一種寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置。
為了實現上述目的,本發明的寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法中包括以下幾個步驟,其特徵在於第1步驟,把存儲器的堆棧區分離成緩衝器區和分離堆棧區;第2步驟,根據變換索引緩衝器把上述分離堆棧區以一個塊的鎖住狀態來保護;及第3步驟,恢復上述分離堆棧區的最上部中存在的寄信人地址。
另外,為了實現上述目的,本發明的寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離裝置,其特徵在於為了保護寄信人地址免受緩衝器溢出進攻,把堆棧區分離成為了存儲數據的緩衝器區和為了存儲寄信人地址的分離堆棧區。
本發明的效果如上所述的本發明的寄信人地址免受緩衝器溢出的存儲器堆棧分離方法及裝置有如下效果由於用硬體防禦緩衝器溢出進攻,與利用軟體的方法相比可以改善性能低下的問題,可以最大限度地改善新硬體的使用,由於利用修改的現有的硬體,因此可以降低實現的費用。另外,現有技術支持使用的軟體的互換性,因此可以很容易地使用,增加了用戶的便利性。
為進一步說明本發明的上述目的、結構特點和效果,以下將結合附圖對本發明進行詳細的描述。
圖1a是保護寄信人地址免受緩衝器溢出進攻的Xu,et al的方案圖。
圖1b是保護寄信人地址免受緩衝器溢出進攻的Lee,et al的方案圖。
圖1c是保護寄信人地址免受緩衝器溢出進攻的Smash Guard的方案圖.
圖2是說明本發明的實施例的保護寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法的概念圖。
附圖中主要部分的符號說明dTLB(data Translation Look-aside Buffer)數據變換索引緩衝器TLB(Translation Look-aside Buffer)變換索引緩衝器具體實施方式
下面參照附圖對本發明的寄信人地址免受緩衝器溢出的存儲器堆棧分離方法及裝置的實施例進行詳細說明。
首先在各個圖面的構成要素上附加參照符號,必須要留意即使相同的構成要素在不同的圖面上顯示的也可能是一個相同的符號。
另外,由於對本發明已經進行了說明,因此省略了判斷有關的眾所周知的構成或是技能的具體的說明。
圖2是說明本發明的實施例的保護寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法的概念圖。
首先,本發明中把存儲器堆棧分離(Split)成緩衝器(Buffer)區和寄信人地址(Return Address)區。如圖2中的(a)所示分成構成緩衝器1、緩衝器2、緩衝器3...等的堆棧區和構成寄信人地址1、寄信人地址2、寄信人地址3...等的分離堆棧區。
接著,為了保護分離堆棧區免受緩衝器溢出進攻呼出Dtlb(Data TranslationLook-aside Buffer)。在這裡把稱作TLB的假想地址變成物理的地址參照的一種表格,分成命令語的iTLB和數據的dTLB,本發明中使用頻率是使用相對少的dTLB。
呼出dTLB函數後,根據如圖2中的(b)所示的dTLB利用鎖定位(Locking Bit)保護分離堆棧區。接著,由於鎖定根據dTLB被保護的一個塊,因此保留dTLB塊是存儲器區中存儲的寄信人地址的堆棧。這裡,鎖定狀態的分離堆棧區由於只能在dTLB的呼出和恢復時才可能寫/讀,因此保護那個存儲器區。另外,根據代替運算法則(LRU,FIFO,Random)變化不變的構造。為了存儲指出那以外新生成的堆棧的最上部的值附加稱作通信順序進程的寄存器。
在這裡,鎖定存儲寄信人地址的分離堆棧區的方式有許多種。
一個動態方式是在整個TLB中附加鎖定位把設定與否作為作業系統(OSOperating System)來控制的方式。這時,根據鎖定位的設定與否沒有附加費用,因而可以調整容易分離的堆棧大小,這是它所具有的優點。但是每一個TLB附加鎖定位的費用會增加很多。
另外一個方式就是靜態的,把一個塊從最開始就鎖定成一定容量大小。dTLB的一個塊的大小如果假定為4K字節的話,由於可以存儲1024個寄信人地址,因此幾乎沒有增加分離堆棧區大小的必要性。它雖然不能象動態分配那樣調整被分離的堆棧的大小,但是可以減少附加整個TLB鎖定位的費用,因此具有構造簡單的優點。
一方面,保護分離堆棧區以後如圖2中的(c)所示在分離堆棧區中根據dTLB返回最上部的寄信人地址3。接著,指出分離堆棧區的最上部的寄存器通信順序進程的值就成為寄信人地址2。
雖然dTLB的分離堆棧區的一個塊使用在其他用途與原來的dTLB中使用的相比增加了″Miss″,但這幾乎可以算作沒有。如圖2中的(b)所示128個記錄具有的塊大小4K Bytes,4Way Associative dTLB的時″Miss″率只增加0.05%。
靜態方式時,關於這個部分不需要另外的實現費用。但是動態的方式時,為了鎖定dTLB的塊每一個塊都需要顯示保留與否的鎖定位。另外必須附加為了檢查保留與否的程序。但是以塊單位可以鎖定的可能進行多樣的應用,實際上與Arm協議棧相同可以在新開發的協議棧中採納。
如上所述的本發明,提供為了防禦以裂化或是病毒為主要進攻手段的緩衝器溢出進攻而在存儲器的一部分上設置有分離堆棧,通過利用變換索引緩衝器(TLB)的分離堆棧保護分離寄信人地址免受其他數據的影響的保護機械裝置,可以實現利用保留位鎖定變換索引緩衝器的一個塊來進行防禦,保護寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置。
上述說明不過是把本發明的技術思想進行示例性的說明,在本發明所屬的技術部門中本領域熟練技術人員在不脫離本發明的本質特性的範圍內可以進行多樣的修改及變形。
本技術領域:
中的普通技術人員應當認識到,以上的實施例僅是用來說明本發明,而並非用作為對本發明的限定,只要在本發明的實質精神範圍內,對以上所述實施例的變化、變型都將落在本發明權利要求
書的範圍內。
權利要求
1.一種寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法,其特徵在於包括以下幾種步驟第1步驟,把存儲器的堆棧區分離成緩衝器區和分離堆棧區;第2步驟,根據數據變換索引緩衝器把上述分離堆棧區以一個塊的鎖定狀態來保護;第3步驟,恢復上述分離堆棧區的最上部的寄信人地址。
2.如權利要求
1所述的存儲器堆棧分離方法,其特徵在於所述分離堆棧區只形成數個寄信人地址。
3.如權利要求
1所述的存儲器堆棧分離方法,其特徵在於所述第3步驟中上述寄信人地址被恢復以後指出上述最上部的通信順序進程的寄存器值變成下面一個的寄信人地址。
4.如權利要求
1所述的存儲器堆棧分離方法,其特徵在於所述第2步驟中上述分離堆棧區只在上述變換索引緩衝器的呼出和恢復時保護可能的寫/讀。
5.如權利要求
1所述的存儲器堆棧分離方法,其特徵在於所述第2步驟中以整個上述分離堆棧區內附加鎖定位把設定與否作為作業系統來控制的動態方式來鎖定。
6.如權利要求
1所述的存儲器堆棧分離方法,其特徵在於所述第2步驟中最開始就以一定的容量大小來鎖定上述一個塊。
7.一種寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離裝置,其特徵在於保護寄信人地址免受緩衝器溢出進攻,把堆棧區分離成為了存儲數據的緩衝器區和為了存儲寄信人地址的分離堆棧區。
8.如權利要求
7所述的存儲器堆棧分離裝置,其特徵在於所述分離堆棧區根據數據變換索引緩衝器以鎖定狀態保護一個塊,根據上述變換索引緩衝器恢復上述分離堆棧區的最上部中的寄信人地址。
9.如權利要求
7或8所述的存儲器堆棧分離裝置,其特徵在於所述分離堆棧區保護只在上述變換索引緩衝器的呼出和恢復時可能的寫/讀。
專利摘要
本發明提供一種寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置,為了防禦以裂化或是病毒為主要進攻手段的緩衝器溢出進攻而在存儲器的一部分設置有分離堆棧,通過利用變換索引緩衝器的分離堆棧分離保護寄信人地址免受其他數據影響的保護機械裝置,利用保留位鎖定變換索引緩衝器的一個塊進行防禦保護寄信人地址免受緩衝器溢出進攻的存儲器堆棧分離方法及裝置。依據本發明,由於是用硬體來防禦緩衝器溢出進攻的,因此與利用軟體的方法相比可以改善低下的性能,最大限度改善新硬體的使用,由於利用的是修改的現有的硬體,因此有降低實現費用的效果。另外,支持現有使用軟體的互換性,可以很容易使用,有方便用戶的效果。
文檔編號G06F1/00GK1991852SQ200510112012
公開日2007年7月4日 申請日期2005年12月26日
發明者仁鍾言 申請人:上海樂金廣電電子有限公司導出引文BiBTeX, EndNote, RefMan