新四季網

信息設備、程序、防止執行不正當程序代碼的方法、及計算機能夠讀取的記錄介質的製作方法

2023-06-12 16:09:11

專利名稱:信息設備、程序、防止執行不正當程序代碼的方法、及計算機能夠讀取的記錄介質的製作方法
技術領域:
本發明涉及信息設備、程序、防止執行不正當程序代碼的方法、及計算機能夠讀取的記錄介質。
背景技術:
通常,在PC (Personal Computer 個人計算機)或 WS (Work Mation 工作站) 等信息設備中,CPU (Central Processing Unit 中央處理單元)等控制部依次執行在 RAM (Random Access Memory 隨機存取存儲器)等存儲部的工作區域中展開的程序代碼,由此執行各種數據處理。近年來,由於由具有惡意的用戶製作的程序代碼引起的不正當處理, 產生對信息設備的不正當訪問。通常,對信息設備所管理的數據設定訪問權限。因此,如果沒有對數據的訪問權限,就不能進行不正當訪問。但是,在利用具有對數據的訪問權限的通常的程序代碼而執行了不正當操作的情況下,將能夠進行不正當訪問。關於這種方法,已被公知的方法是採用所謂緩衝器溢出(buffer overflow)的方法,即,使執行程序代碼時的數據從在RAM等中確保的規定區域中溢出。在此,關於採用緩衝器溢出的不正當訪問,通過對比來詳細說明正常執行了程序代碼的情況和在執行程序代碼時不正當地執行的情況。首先,參照圖9、圖10說明正常執行程序代碼的情況。圖9表示對程序代碼的原始碼進行例示的示意圖。圖9所示的程序代碼從main 函數開始,在mainO函數中調用strcpyjielIoworld函數。在該程序代碼中,在strcpy_ helloworldO函數中準備字符串「Hello ! 」,利用mainO函數的printf函數使該字符串顯示於監視器等中。另外,函數是指將規定的功能模塊化而形成的子循環(subroutine)、 子程序等,能夠在為主的程序內隨時調用。在執行圖9所示的程序代碼時的數據被存儲於在RAM等中確保的堆棧區域中。在該堆棧區域中,按照後入先出(LIF0:Last In First Out)構造來存儲數據。圖10表示對執行程序代碼時的堆棧區域的概況進行例示的示意圖。如圖10所示, 從上到下向依次確保的區域中存儲執行程序代碼時的數據。例如,在執行基於圖9例示的原始碼的程序代碼時,在處理了 mainO函數時, ReturnAddressUebp backup>char buf[8]等被存儲為一個堆棧幀(stack frame)。然後, 當在 mainO 函數中調用了 strcpy_helIoworld函數時,ReturnAddress2、ebp backup2、 int i等被存儲為一個堆棧幀。ReturnAddress (返回地址)表示在程序結束時應該返回的地址值、及在子程序被函數等調用的情況下該子程序結束時應該返回的地址值。該ReturnAddress在剛剛執行程序後及子程序剛剛被函數等調用後,通過CPU被自動存儲在堆棧區域中。ebp是CPU的寄存器的一種,表示當前使用的臨時性存儲器區域的地址的緊前面
4(緊挨著且位於其前面)。在圖10的示例中,是char buf[8]、int i的前面的地址,是堆棧幀的ReturnAddress。因此,在堆棧幀中,通過將上述寄存器值備份(backup)為ebp backup, 能夠容易地將該堆棧幀內的一個區域用作存儲臨時性數據(變量、數組等)的存儲器區域。char buf [8]存儲作為在mainO函數中使用的數組的buf。該buf是存儲8個char 型變量(1位元組)的數組,能夠存儲8位元組的數據。int i存儲作為在StrCpy_hellOWOrld 函數中使用的int型變量的i。因此,通過執行上述程序代碼,在堆棧區域中,確保mainO函數的堆棧幀,並確保StrCpy_hellOWOrld函數的堆棧幀。然後,int i的值順序遞增,6位元組量的字符串「Hello ! 」被存儲在char buf [8]中。然後,根據strcpyjielloworld函數的結束, ReturnAddress2被讀出,並向main函數返回,根據main函數的結束,ReturnAddressl 被讀出,程序正常結束。下面,參照圖11、圖12說明在執行程序代碼時不正當執行的情況。圖11表示對程序代碼的原始碼進行例示的示意圖。圖11所示的程序代碼與圖9 所示的程序代碼的不同之處在於,向數組buf中寫入12位元組量(11字符+字符串末尾)的數據 「Hello World,,。圖12表示對在執行程序代碼時的堆棧區域的概況進行例示的示意圖。如圖12所示,在堆棧區域中,確保8位元組量的區域作為存儲數組buf的區域。因此,在執行strCpy_ helloworldO函數時,寫入了所確保的大小以上的數據。這樣,如果在存儲器中寫入了所確保的大小以上的數據,則產生緩衝器溢出。另外,將在堆棧區域中產生這種緩衝器溢出的情況稱為基於堆棧的緩衝器溢出。在圖12所示的堆棧區域中,從上到下順序地確保區域,而在向該確保的區域中寫入數據時是從下到上來進行的。因此,在執行了 strcpyjielIoworldO函數時, ReturnAddress 1、ebp backup 被 12 字節的數據"Hello World」不正當地覆蓋(overwrite)。 由於上述覆蓋,ReturnAddressl的內容被改寫為能夠執行的程序代碼所在的地址的情況下,根據mainO函數的結束,ReturnAddressl被讀出,並執行在該被改寫後的地址中存儲的程序代碼。在圖11所示的原始碼中,由於預先定義的字符串「Hello World」而導致緩衝器溢出。但是,實際上也存在如下情況,即通過郵件伺服器、Web伺服器等的通信埠而接收到的數據、或者從控制臺(console)及文件輸入的數據等,被存儲在數組buf中。在這種情況下,具有惡意的用戶通過通信、控制臺輸入、文件輸入等而執行任意的程序代碼,致使產生數據的被盜、篡改等不正當訪問。作為檢測這些不正當訪問的方法,可以考慮下述方法,即檢查在堆棧區域中存儲的返回地址,並比較正常執行程序時和攻擊代碼動作時的返回地址的配置模式(pattern) 的差異,由此檢測是否執行不正當訪問。例如,返回地址所表示的目的地的存儲器屬性是支持用於配置程序代碼的存儲器區域的情況下、或者該存儲器區域是不能寫入的屬性的情況下,判定為正常的程序。但是,在這種不正當訪問的檢測方法中,存在不能檢測Return-to-libc攻擊(參照非專利文獻1)的可能性。Return-to-libc攻擊是指這樣的攻擊方法,S卩不向程序代碼追加寫入具有惡意的代碼,通過調用已經在計算機中存儲的函數來進行不正當訪問。
圖13表示對在執行圖11所示的程序代碼時受到Return-to-libc攻擊時的堆棧區域的概況進行例示的示意圖。如圖13所示,在Return-to-libc攻擊中,以上說明的返回地址所表示的值即ReturnAddressl的內容被設定為OS (Operating System:作業系統)的標準函數等正常函數的開頭地址。堆棧區域上的返回地址表示用於放置程序代碼的存儲器區域、或者該存儲器區域是不能寫入的屬性的情況下,存在不能與正常程序進行區分的可能性。還可以考慮這樣的攻擊,即應用該Return-to-libc攻擊,將已經存儲在信息設備的存儲部中的程序的程序代碼進行組合,由此執行規定的程序代碼。在這種攻擊方法中, 堆棧區域上的返回地址具有與Return-to-libc攻擊相同的特徵,因而也存在不能與正常程序進行區分的可能性。專利文獻1公開了一種技術,S卩使用CPU的功能之一即分支跟蹤(branch trace),從正在執行中的函數返回到調用源的函數的處理時,對返回到OS的標準函數的開頭地址這種行動進行檢測,由此檢測Return-to-libc攻擊。現有技術文獻專利文獻專利文獻1 美國專利第10/763867號說明書非專利文獻非專利文獻1 :「Return-to-libc attack,,、[online]、λ ^ ^ r λ 7 財団、 [2009 年3月 23 日檢索]、4 >夕一才、7 卜、(URL :http://en. wikipedia. org/wiki/ Return-to-1ibc_attack)
發明概要發明要解決的問題但是,在專利文獻1記載的技術中,雖然能夠使用分支跟蹤功能來檢測 Return-to-libc攻擊,但是由於使用CPU具有的功能,因而存在CPU的處理負荷的增大、對除使用分支跟蹤功能之外的其它應用(性能計測工具等)的使用產生限制等的可能性。即, 在執行用於檢測Return-to-libc攻擊的處理的期間,計算機的處理負荷增大,有可能導致可用性的降低。

發明內容
本發明的課題就是鑑於上述現有技術的問題而提出的,本發明提供一種技術,不依據CPU具有的功能,即可容易且可靠地防止與緩衝器溢出有關的不正當訪問。用於解決問題的手段為了解決上述問題,技術方案1記載的發明是一種通過在存儲器中展開的各個程序代碼與中央控制部之間的協作來進行數據處理的信息設備,具有檢測單元,檢測所述任意一個程序代碼的調用時刻;返回地址取得單元,在由所述檢測單元檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址;以及停止單元,在由所述檢測單元檢測到的程序代碼的調用時刻,根據由所述返回地址取得單元依次取得的返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。
技術方案2記載的發明是根據權利要求1記載的發明,所述存儲器具有存儲各個程序代碼的返回地址的堆棧區域,所述返回地址取得單元跟蹤(trace)並取得在所述堆棧區域中存儲的返回地址。技術方案3記載的發明是根據權利要求1或2記載的發明,在由所述屬性取得單元取得的各個返回地址所表示的目的地的地址是函數的開始地址的情況下,所述停止單元檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。技術方案4記載的發明是根據權利要求1 3中任意一項記載的發明,在與由所述屬性取得單元取得的各個返回地址所表示的目的地的地址相對應的前一個命令不是調用命令的情況下,所述停止單元檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。技術方案5記載的發明使執行在存儲器中展開的各個程序代碼的計算機作為以下單元發揮作用檢測單元,檢測所述任意一個程序代碼的調用時刻;返回地址取得單元, 在由所述檢測單元檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址;以及停止單元,在由所述檢測單元檢測到的程序代碼的調用時刻,根據由所述返回地址取得單元依次取得的返回地址所表示的目的地的地址來檢測不正當訪問, 在檢測到該不正當訪問的情況下停止所述數據處理。技術方案6記載的發明是一種防止計算機執行不正當程序代碼的方法,該計算機執行在存儲器中展開的各個程序代碼,該方法中,檢測所述任意一個程序代碼的調用時刻, 在該檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址,根據該取得的各個返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。技術方案7記載的發明是一種存儲程序的計算機可讀取的記錄介質,該程序用於使執行在存儲器中展開的各個程序代碼的計算機作為以下單元發揮作用檢測單元,檢測所述任意一個程序代碼的調用時刻;返回地址取得單元,在由所述檢測單元檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址;以及停止單元,在由所述檢測單元檢測到的程序代碼的調用時刻,根據由所述返回地址取得單元依次取得的返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。發明效果根據本發明,不依賴於CPU具有的功能,即可容易且可靠地防止與緩衝器溢出有關的不正當訪問。


圖1是示意地表示本實施方式的信息設備的功能結構的框圖。圖2A是表示當執行Return-to-libc攻擊時在RAM30的規定區域中確保的堆棧區域的一例的圖。圖2B是表示在採用了 Return-to-libc攻擊的應用方法的攻擊的情況下、在RAM30 的規定區域中確保的堆棧區域的一例的圖。圖3是表示信息設備的掛鈎處理的流程圖。
圖4是表示在信息設備中執行的堆棧布局檢查處理的安裝例的流程圖。圖5是表示返回地址是函數的開始地址附近的情況下的代碼的一例的示意圖。圖6是表示返回地址被設定為與函數的開始地址完全不同的程序代碼的地址來執行該程序的情況下的代碼的一例的示意圖。圖7是表示在Return-to-libc攻擊中正在執行CreateFile時的堆棧的內容的圖。圖8是表示在Return-to-libc攻擊中正在執行URLDownloacTTofile時的堆棧的內容的圖。圖9是對程序代碼的原始碼進行例示的示意圖。圖10是對在執行程序代碼時的堆棧區域的概況進行例示的示意圖。圖11是對程序代碼的原始碼進行例示的示意圖。圖12是對在執行程序代碼時的堆棧區域的概況進行例示的示意圖。圖13是對在Return-to-libc攻擊中執行程序代碼時的堆棧區域的概況進行例示的示意圖。
具體實施例方式下面,參照附圖來說明本發明的實施方式,但本發明的範圍不局限於下面的實施方式。首先,對本實施方式的信息設備的結構進行說明。圖1示意地表示信息設備1的功能性結構。如圖1所示,信息設備1具有CPU 10、 存儲部20、RAM 30、操作部40、顯示部50、I/F部60。上述信息設備1的各個部分通過總線 70而電連接。具體地講,信息設備1是PC、WS、PDA (Personal Digital Assistant :個人數字助理)、手機等。CPU 10對信息設備1的動作進行中央控制。CPU 10將在存儲部20中存儲的程序代碼及各種數據展開到RAM 30的工作區域中,通過與在RAM 30中展開的數據的協作,向各個部分輸出控制信號。存儲部20以能夠由CPU 10進行讀寫的方式存儲程序代碼及各種設定信息等數據。例如,存儲部20是HDD (Hard Disk Drive 硬碟驅動器)、半導體存儲器等。並且,存儲部20也可以構成為,將上述數據存儲在ROM (Read Only Memory :只讀存儲器)等中。另外, 作為存儲部20存儲的程序代碼,除OS (Operating System)等基本軟體之外,還包括供應商提供的各種應用程式、與後述的處理相關的程序等。在RAM 30中確保用於對執行程序代碼時的數據進行存儲的堆棧區域。圖2A表示在執行Return-to-libc攻擊的情況下、RAM 30的堆棧區域中的某個堆棧幀的一例。如圖2A所示,在堆棧區域中,存儲有Exitprocess的自變量、ReturnAddress、 WinExec 的自變量 2 和 1、ExitProcess 的開始地址、ebp backup 等數據。在 Return-to-libc 攻擊中,作為執行WinExecO後的返回地址,有時設定Exitfrocess 的開始地址。圖2A 示出的示例表示,在進行Return-to-libc攻擊、並且正在執行WinExecO時的堆棧區域。Exitprocess 是用於使程序結束的函數,對自變量設定應結束的程序的結束代碼。WinExecO是用於執行所指定的程序的函數。在ebp backup的緊前面具有ReturnAddress,因而通過追溯(迪3 )ebp backup,能夠依次跟蹤並取得ReturnAddress。在依次執行各個程序代碼的情況下,隨著該程序代碼的執行來依次確保堆棧區域中所包含的堆棧幀。例如,在執行為主的程序代碼、在該程序代碼內調用與子循環相關的程序代碼、並且調用其它程序代碼的情況下等,按照堆棧幀的各個順序來確保與各個程序代碼相關的區域。在與該各個程序代碼相關的處理結束時,堆棧幀的ReturnAddress被讀出, 由此進行向為主的程序代碼的返回及程序結束後的處理。圖2B表示前述Return-to-libc攻擊的應用方法中的在RAM30的規定區域中確保的堆棧區域的堆棧幀的一例。在「已有的程序代碼」的區域中,存儲有用於調用已有的程序代碼內的ExitProcess的代碼。操作部40受理來自用戶的操作輸入,向CPUlO輸出與該操作相應的操作信號。例如,操作部40是具有字符輸入鍵、數字輸入鍵、與其它各種功能對應的鍵的鍵盤、滑鼠等指示(pointing)裝置等。顯示部50在顯示畫面上顯示基於從CPU 10輸出的顯示控制信號的圖像。例如, 顯示部 50 可以是 CRT (Cathode Ray Tube 陰極射線管)、LCD (Liquid Crystal Display 液晶顯示器)等。I/F部60具有數據通信用ICantegrated Circuit 集成電路)及連接用連接器等(均未圖示),與外部設備和通信網絡進行連接並能與它們通信。例如,I/F部60可以是 USB (Universal Serial Bus 通用串行總線)通信埠、或與 LAN (Local Area Network 區域網)、WAN(Wide Area Network 廣域網)、網際網路等連接的網絡接口卡(NIC :Network Interface Card)。下面,說明信息設備1檢測不正當的程序代碼的執行時的動作。在信息設備1中, 為了防止執行不正當的程序代碼,需要插入如下處理,即檢測執行不正當的程序代碼所需要的API、庫函數、系統調用等,檢查有無執行不正當的程序代碼。在本實施方式的信息設備 1中,採用掛鈎(Hook)來實現如下處理的插入,該處理即對調用規定庫函數的具有惡意的代碼進行檢測和對不正當進行檢查。掛鈎用於使利用者能夠向程序中的特定部位追加獨自的處理。即,被用於下述情況,即製作了被掛鈎側的程序代碼的編程員和製作了掛鈎側的程序代碼的編程員不是同一編程員、與相互的程序代碼相關的原始碼不由同一編程員製作的情況。因此,被用於供應商提供的OS及函數的功能變更、或追加任意的處理時。另外,掛鈎也可以用於編程員自身能夠修正作為檢查對象的函數等的子程序的情況。但是,在編程員自身能夠修正子程序、並且修正為使得在執行該子程序時進行對不正當的檢查的情況下,不需要使用掛鈎,並且能夠將已有的函數及庫安裝為更安全的狀態。首先,關於進行API掛鈎(掛鈎庫函數)並檢查有無執行不正當的程序代碼的情況,參照圖3進行說明。下面,例示供應商準備的WinExec 這種庫函數的掛鈎處理(圖3),並例示在該庫函數被調用時執行的堆棧布局檢查處理(圖4)。另外,同樣適用於其它庫函數(例如 ExitProcess 等)的掛鈎處理。圖3表示在信息設備1中執行的掛鈎處理的流程圖。通過CPU 10與在存儲部20 中存儲的程序之間的協作來執行掛鈎處理。
如圖3所示,首先取得WinExecO函數的開始地址(步驟Si)。該函數的地址取得能夠通過調用由供應商提供的函數來實現。然後,動態地生成對API的執行進行掛鈎的較小函數(暫時性函數)(步驟S2)。 該動態地生成的函數是指後面敘述的調用堆棧布局檢查處理的函數。然後,進行WinExecO的開頭代碼的改寫,進行變更以使得執行在步驟S2生成的函數(步驟S3)。在信息設備1中,通過上述的掛鈎處理,能夠插入檢測子程序代碼的調用並進行對不正當的檢查的處理。通常,在與函數相關的子程序被調用的情況下,直接執行被某個函數調用的函數。但是,在信息設備1中,通過在子程序代碼被調用之前進行上述的掛鈎處理,能夠在子程序代碼調用時使得執行堆棧布局檢查處理。圖4表示在信息設備1中執行的堆棧布局檢查處理的流程圖。CPU 10與在存儲部 20中存儲的程序進行協作,從而利用通過掛鈎處理而動態生成的函數來調用堆棧布局檢查處理。另外,在該堆棧布局檢查處理中,使用MackWalkO函數進行堆棧跟蹤,但是也能夠不使用MackWalkO來進行堆棧跟蹤。如圖4所示,進行MackWalkO庫的初始化(步驟Sll)。MackWalkO庫是由供應商準備的進行堆棧跟蹤的函數。通過利用該MackWalkO使跟蹤位置增加或減少,能夠依次取得在堆棧區域中存儲的返回地址。然後,回溯跟蹤(back trace) 一個堆棧(步驟Si》,以便調用MackWalkO並順序調用堆棧區域的堆棧幀,在進行跟蹤後判定是否正確取得了返回地址(步驟S13)。在步驟S13,在沒有判斷為正確取得了返回地址的情況下(步驟S13 否),作為正常結束而繼續執行作為檢查對象的WinExecO。這相當於堆棧由於不正當訪問以外的未知原因等而被破壞、MackWalkO不正常動作的情況等。另外,在本實施方式中,在 StackffalkO不正常動作的情況下正常結束,但也可以是,在該堆棧跟蹤失敗的情況下,也在顯示部50顯示用於程序停止、使用戶確認是否停止的對話(dialogue)。另一方面,在判斷為正確取得了返回地址的情況下(步驟S13 是),判定該返回地址是否是函數的開始地址(步驟S14)。函數的開始地址可以利用公知的各種取得方法來取得,例如,可以參照預先在存儲部20中存儲的值來取得,還可以參照用於存儲所輸入的函數的實際存儲器地址的作為數組的IAT(Imp0rt Address Table)來取得。在沒有判斷為是開始地址的情況下(步驟S14 否),判斷返回地址的前一個命令是否是CALL命令(步驟SB)。CALL命令是用於調用子循環的命令,在步驟S15中,判斷返回地址所指示的目的地的前一個命令。在判斷為是CALL命令的情況下(步驟S15 是),判斷是否存在未檢查的返回地址 (步驟S16)。在判斷為存在未檢查的返回地址的情況下(步驟S16 是),返回步驟S12,跟蹤下一個返回地址。在沒有判斷為存在未檢查的返回地址的情況下(步驟S16 否),作為正常結束而執行作為檢查對象的WinExec 。另一方面,在判斷為是開始地址的情況下(步驟S14 是),在判斷為不是CALL命令的情況下(步驟S15 否),在顯示部50顯示使數據處理暫時停止的對話,以便檢測不
10正當訪問等的攻擊並防止執行不正當的程序代碼(步驟S17),程序的執行被停止(步驟 S18)。在以上說明的堆棧布局檢查處理中,在步驟S14和步驟S15中,檢測 Return-to-libc攻擊。在被進行了 Return-to-libc攻擊時,具有返回地址所指示的目的地是函數的開始地址的特徵。在通常程序的情況下,返回地址所指示的目的地不是函數的開始地址,而是接著該函數開始繼續處理。並且,在作為Return-to-libc攻擊的應用方法的對在信息設備1中存儲的程序代碼進行了組合的攻擊中,具有返回地址所指示的目的地的前一個命令不是CALL命令的特徵。這兩個特徵是執行正常的程序時不具有的特徵。在堆棧布局檢查處理中,根據這兩個特徵來檢測Return-to-libc攻擊。下面,說明在堆棧布局檢查處理中能夠檢測的、Return-to-libc攻擊的派生模式。在上述說明的堆棧布局檢查處理中,通過檢查返回地址所指示的目的地,能夠檢測 Return-to-libc攻擊,但關於Return-to-libc攻擊公知有各種攻擊模式。圖5表示返回地址是函數的開始地址附近的情況下的代碼Cl的一例。通常,在OS 提供的函數的開始地址的緊前面,常配置有即使由CPU執行也不進行任何動作的命令。在 Return-to-libc攻擊中,可以考慮不將返回地址指定為函數的開始地址,而故意指定為開始地址附近。如圖5所示,在函數的開始地址的位置前面插入有多個nop命令。nop命令是表示CPU什麼也不執行的命令。在圖5所示的情況下,由於返回地址所指示的目的地不是函數的開始地址,因而在步驟S14中不能檢測Return-to-libc攻擊,但通過在步驟S15中檢查返回地址所指示的目的地的前一個命令是否是CALL命令,能夠檢測Return-to-libc攻擊。圖6表示當返回地址被設定為與函數的開始地址完全不同的程序代碼的地址來執行該程序時的代碼C2的一例。在圖6示出的示例中,在返回地址所指示的目的地存儲有命令代碼「jmp eax」。命令「jmp eax」使得執行在eax寄存器中存儲的值所指示的目的地的命令。在eax寄存器中存儲有想要執行的函數的開始地址。若在圖6所示的狀態下執行返回地址所指示的目的地的代碼,則首先執行「 jmp eax",然後執行想要執行的函數的開始地址。在圖6所示的情況下,由於返回地址所指示的目的地不是函數的開始地址,因而在步驟S14中不能檢測Return-to-libc攻擊。但是,具有惡意的攻擊者需要從其它程序代碼的區域中尋找成為「jmp eax」的命令代碼,並設定為返回地址。在Return-to-libc攻擊中,成為「jmp eax」的命令代碼的前一個命令經常不是CALL命令,因而在步驟S15中能夠檢測 Return-to-libc 攻擊。下面,舉出在Windows (註冊商標,下面省略注釋)中執行的Return-to-libc攻擊的例子,說明本發明的信息設備1檢測Return-to-libc攻擊的時機。首先,說明由於執行CPU 10製作的文件而引起的Return-to-1 ibc攻擊的一例。在這種情況下,使用Windows提供的函數即CreateFileO、WriteFileO、WinExecO、 Exitprocess 等函數,進行Return-to-libc攻擊。CreateFileO是用於製作文件等的函數,所製作的文件名等成為自變量。WriteFileO是用於向文件寫入數據的函數,表示寫入數據的對象的文件句柄(file handle)和寫入數據、數據大小等成為自變量。首先,在Return-to-libc 攻擊中,使用 CreateFile ,WriteFile 製作規定的文件。由WinExecO執行該製作的文件,並在Exitfrocess 中結束。圖7表示在Return-to-libc攻擊中當正在執行CreateFileO時在RAM30中存儲的堆棧區域的一例。在圖7所示的堆棧的狀態下,作為堆棧布局檢查處理中的檢查對象的返回地址,「WriteFile的開始地址」、「WinExec的開始地址」、「Exitfrocess的開始地址」這三個開始地址成為檢查對象。在開始地址表示如圖5所示的開始地址附近、或如圖6所示的其它程序代碼的情況下,也能夠在步驟S15中檢測Return-to-libc攻擊。還存在Return-to-libc攻擊中的攻擊代碼通過網際網路而下載具有惡意的代碼並執行其文件的情況。例如,首先使用Windows提供的函數URLDownloadTofile ,通過I/F 部60從網際網路下載具有惡意的文件。通過使用WinExecO來執行所下載的文件。圖 8 表示當在 Return-to-libc 攻擊中正在執行 URLDownloacTTofileO 時在 RAM30 中存儲的堆棧區域的一例。在圖8所示的堆棧的狀態下,作為堆棧布局檢查處理中的檢查對象的返回地址,「WinExec的開始地址」、「Exitfrocess的開始地址」這兩個開始地址成為檢查對象。在開始地址表示如圖5所示的開始地址附近、或如圖6所示的其它程序代碼的情況下,也能夠在步驟S15中檢測Return-to-libc攻擊。如上所述,根據本發明的信息設備,不依賴於CPU具有的功能,即可容易且可靠地防止與緩衝器溢出有關的不正當訪問的方法即Return-to-libc攻擊。另外,上述的實施方式中的記述只示出了一例,本發明不限定於該示例。關於上述的實施方式中的結構和動作能夠適當進行變更。例如,在上面的說明中,作為本發明的程序的計算機可讀取的介質,公開了採用存儲部20或ROM的示例,但不限定於該示例。作為其它的計算機可讀取的介質,能夠採用快閃記憶體等非易失性存儲器、CD-ROM等可移動型記錄介質。並且,作為通過與I/F部60連接的通信線路來提供本發明的程序的數據的介質,本發明也能夠採用載波。另外,包括說明書、權利要求書、附圖及摘要在內的、2009年4月27日提交的日本專利申請No. 2009-107294號的所有公開內容,都被直接引用於本申請的一部分。工業實用性本發明能夠應用在PC、WS、手機、網絡設備等信息設備領域中。標號說明1信息設備10 CPU20存儲部30 RAM40操作部50顯示部60 I/F 部70 總線
權利要求
1.一種信息設備,通過在存儲器中展開的各個程序代碼與中央控制部之間的協作來進行數據處理,其中,該信息設備具有檢測單元,檢測所述任意一個程序代碼的調用時刻;返回地址取得單元,在由所述檢測單元檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址;以及停止單元,在由所述檢測單元檢測到的程序代碼的調用時刻,根據由所述返回地址取得單元依次取得的返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。
2.根據權利要求1所述的信息設備,其中,所述存儲器具有堆棧區域,該堆棧區域存儲各個程序代碼的返回地址,所述返回地址取得單元跟蹤並取得在所述堆棧區域中存儲的返回地址。
3.根據權利要求1或2所述的信息設備,其中,在由所述屬性取得單元取得的各個返回地址所表示的目的地的地址是函數的開始地址的情況下,所述停止單元檢測不正當訪問,在檢測到該不正當訪問的情況下,所述停止單元停止所述數據處理。
4.根據權利要求1 3中任意一項所述的信息設備,其中,在與由所述屬性取得單元取得的各個返回地址所表示的目的地的地址相對應的前一個命令不是調用命令的情況下,所述停止單元檢測不正當訪問,在檢測到該不正當訪問的情況下,所述停止單元停止所述數據處理。
5.一種程序,用於使執行在存儲器中展開的各個程序代碼的計算機作為以下單元發揮作用檢測單元,檢測所述任意一個程序代碼的調用時刻;返回地址取得單元,在由所述檢測單元檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址;以及停止單元,在由所述檢測單元檢測到的程序代碼的調用時刻,根據由所述返回地址取得單元依次取得的返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。
6.一種防止計算機執行不正當程序代碼的方法,該計算機執行在存儲器中展開的各個程序代碼,該方法中,檢測所述任意一個程序代碼的調用時刻,在該檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址,根據該取得的各個返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。
7.一種存儲程序的計算機可讀取的記錄介質,該程序用於使執行在存儲器中展開的各個程序代碼的計算機作為以下單元發揮作用檢測單元,檢測所述任意一個程序代碼的調用時刻;返回地址取得單元,在由所述檢測單元檢測到的程序代碼的調用時刻,依次取得在所述存儲器中展開的各個程序代碼的返回地址;以及停止單元,在由所述檢測單元檢測到的程序代碼的調用時刻,根據由所述返回地址取得單元依次取得的返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到該不正當訪問的情況下停止所述數據處理。
全文摘要
本發明不依賴於CPU具有的功能,即可容易且可靠地防止與緩衝器溢出有關的不正當訪問。信息設備(1)通過在存儲器中展開的各個程序代碼與中央控制部之間的協作來進行數據處理,通過掛鈎處理來檢測程序代碼的調用時刻,通過堆棧布局檢查處理,依次取得在RAM(30)中展開的各個程序代碼的返回地址,根據該取得的返回地址所表示的目的地的地址來檢測不正當訪問,在檢測到不正當訪問的情況下停止數據處理。
文檔編號G06F21/24GK102422299SQ20108001852
公開日2012年4月18日 申請日期2010年4月12日 優先權日2009年4月27日
發明者石山智祥 申請人:株式會社一四四零技術研究所

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀