專利名稱:訪問控制裝置以及訪問控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種控制通過程序向控制對象資源的訪問的訪問控制裝置以及訪問控制方法。
背景技術(shù):
經(jīng)由網(wǎng)絡(luò)等得到程序,并在個人計(jì)算機(jī)或PDA、移動電話中進(jìn)行執(zhí)行的使用方式正在普及。這樣的使用方式由于可以迅速地得到所需要的應(yīng)用程序,所以具有可以提高用戶的便利性的效果。另一方面,在通過網(wǎng)絡(luò)流通的程序代碼中存在以破壞系統(tǒng)或非法操作為目的的具有惡意的代碼、引起系統(tǒng)資源的亂用或動作故障等的具有缺陷的代碼。隨著下載應(yīng)用程序的使用擴(kuò)大,確保用戶的便利行并確保程序執(zhí)行的安全性成為緊要的課題,防止由于具有惡意或缺陷的代碼(非法代碼)導(dǎo)致的傷害的機(jī)構(gòu)的重要性正在提高。
作為防止非法代碼傷害的機(jī)構(gòu),具有被稱為沙箱(sandbox)的、限制了向資源的訪問的程序代碼的執(zhí)行環(huán)境。沙箱具有訪問控制功能,該功能按照被稱為安全策略的訪問控制規(guī)則,控制對來自在沙箱上執(zhí)行的程序代碼(被沙箱化的代碼)的文件或網(wǎng)絡(luò)等進(jìn)行的訪問。這里,為了確保沙箱的安全性,需要防止被沙箱化的代碼旁路(bypath)訪問控制處理來對資源進(jìn)行直接訪問。
作為防止旁路訪問控制的有力方法,具有使用了系統(tǒng)調(diào)用鉤子(hook)的沙箱。系統(tǒng)調(diào)用是在程序代碼對文件或網(wǎng)絡(luò)等資源進(jìn)行訪問時(shí)對操作系統(tǒng)(OS)進(jìn)行發(fā)行的請求。因?yàn)椴唤?jīng)由系統(tǒng)調(diào)用操作計(jì)算機(jī)的資源是困難的,所以通過以系統(tǒng)調(diào)用為中介(以下稱為「鉤子」。)附加訪問控制處理,由此,旁路變得困難。(例如參照Using Kernel Hypervisors to Secure Applications,inProceedings of the Annual Computer Security Application Conference,1997。)。
但是,系統(tǒng)調(diào)用是OS的低等級接口,OS難以由已掛鉤的系統(tǒng)調(diào)用的信息來取得程序的意思信息。因此,存在以下的課題在通過系統(tǒng)調(diào)用鉤子的訪問控制中,對程序的意思信息進(jìn)行了考慮的控制/處理是困難的。在無法得到程序的意思信息的情況下,有如下問題需要對低等級的接口設(shè)定訪問控制規(guī)則,需要與系統(tǒng)有關(guān)的較深知識和較費(fèi)功夫。此外,還存在以下的問題通過系統(tǒng)調(diào)用等級來描述被稱為「允許備份程序安裝或取得履歷為條件」的允許附加條件等基于程序意思信息的柔性訪問規(guī)則是困難的。
因無法取得意思信息而引起的課題可以通過使用了庫(library)函數(shù)調(diào)用的鉤子的沙箱來解決。具有以下的實(shí)現(xiàn)方法把包含控制對象的函數(shù)的庫置換為包含向沙箱的鉤子處理的庫(例如參照DIToolsApplication Level Supportfor Dynamic Extension and Flexible Composition,in Proceedings of 2000USENIX Annual Technical Conference,2000)。由此,可以對具有高抽象度的接口追加訪問控制處理,可以高效率地設(shè)定基于意思信息的多樣的訪問規(guī)則。
但是,在僅依存于庫函數(shù)調(diào)用鉤子的沙箱中,無法防止稱為直接發(fā)行系統(tǒng)調(diào)用的旁路攻擊,存在安全性方面的重大問題。
發(fā)明內(nèi)容
因此,本發(fā)明是鑒于上述課題而發(fā)明的,其目的在于提供一種實(shí)現(xiàn)基于程序意思信息的高度的資源訪問控制、和防止旁路的強(qiáng)安全性兩者的訪問控制裝置以及訪問控制方法。
一種訪問控制裝置,其控制通過程序向控制對象資源的訪問,具有函數(shù)訪問檢測部,其檢測來自程序的對控制對象函數(shù)的調(diào)用,并生成識別信息,該識別信息確定從該檢測到的控制對象函數(shù)所發(fā)行的訪問請求;資源訪問控制部,其從所述程序取得對所述控制對象資源的訪問請求,并根據(jù)所述識別信息判定可否進(jìn)行所述訪問請求。
一種訪問控制方法,其控制通過程序向控制對象資源的訪問,具有如下步驟檢測來自程序的對控制對象函數(shù)的調(diào)用,并生成識別信息,該識別信息確定來自該檢測出的控制對象函數(shù)的訪問請求;以及從所述程序取得對所述控制對象資源的訪問請求,根據(jù)所述識別信息判定可否進(jìn)行所述訪問的請求。
圖1是使用了本實(shí)施方式的訪問控制裝置的系統(tǒng)的說明圖。
圖2是本實(shí)施方式的訪問控制裝置的結(jié)構(gòu)方框圖。
圖3是本實(shí)施方式的資源訪問控制規(guī)則的一個例子。
圖4是表示本實(shí)施方式的訪問控制方法的流程圖。
圖5是安裝了本實(shí)施方式的程序之后的狀態(tài)的說明圖。
圖6是用于說明對函數(shù)調(diào)用通知用系統(tǒng)調(diào)用的發(fā)行源進(jìn)行驗(yàn)證的說明圖。
圖7是用于對本實(shí)施方式的訪問控制裝置的堆棧(stack)進(jìn)行說明的圖。
具體實(shí)施例方式
附圖描述了本發(fā)明的各種實(shí)施方式。在附圖中對相同或相近的部分及要素賦予相同或相近的數(shù)字,并且對于說明書中相同或相近的部分及要素予以省略或者進(jìn)行簡單說明。
(訪問控制裝置)圖1表示對本發(fā)明實(shí)施方式的應(yīng)用程序進(jìn)行發(fā)布以及執(zhí)行的系統(tǒng)形態(tài)。在本系統(tǒng)中,個人計(jì)算機(jī)或PDA、移動電話等計(jì)算機(jī)100執(zhí)行Web瀏覽器或郵件客戶端、游戲等各種各樣的程序。這里,在計(jì)算機(jī)100執(zhí)行的程序中包含在計(jì)算機(jī)100售出時(shí)已經(jīng)安裝的程序、從CD-ROM、DVD-ROM等記錄媒體400復(fù)制的程序、通過網(wǎng)絡(luò)200或基站500從應(yīng)用程序下載服務(wù)器300下載的程序等,可靠度和品質(zhì)不同。
如圖2所示,本實(shí)施方式的計(jì)算機(jī)100通過具備訪問控制裝置10,保護(hù)用戶數(shù)據(jù)、系統(tǒng)文件、網(wǎng)絡(luò)等控制對象資源30遠(yuǎn)離非法的程序。具體地說,訪問控制裝置10控制通過各個系統(tǒng)調(diào)用(例如open()、write())向控制對象資源30的訪問。
訪問控制裝置10具備鉤子部11,其取得程序70對內(nèi)核(kernel)20發(fā)行的系統(tǒng)調(diào)用,并傳送給預(yù)先設(shè)定的函數(shù)訪問檢測部12以及資源訪問控制部14;函數(shù)訪問檢測部12,其檢測來自程序70的對控制對象函數(shù)的調(diào)用,并生成識別信息,該識別信息確定是從所檢測到的控制對象函數(shù)發(fā)行的訪問請求;函數(shù)訪問控制部15,取得控制對象函數(shù)的調(diào)用源進(jìn)程的信息,根據(jù)函數(shù)許可用訪問控制規(guī)則判定可否調(diào)用控制對象函數(shù);資源訪問控制部14,從程序70取得對控制對象資源30的訪問請求,根據(jù)識別信息判斷可否請求訪問;追加處理部13,在函數(shù)訪問檢測部12允許控制對象函數(shù)的調(diào)用的情況下,執(zhí)行預(yù)先規(guī)定的處理。
在圖2中,在程序執(zhí)行代碼40中包含多個函數(shù)調(diào)用,將func_1()、func_2()作為控制對象函數(shù)。此外,在func_1()執(zhí)行代碼50、func_2()執(zhí)行代碼60的開始,存在作為用于對訪問控制裝置10(內(nèi)核20)通知函數(shù)調(diào)用的通知命令(稱為「函數(shù)調(diào)用通知用系統(tǒng)調(diào)用」)的notify(),當(dāng)處理移動到控制對象函數(shù)(func_1()、func_2())時(shí),發(fā)行notify()。
對系統(tǒng)調(diào)用notify()的自變量設(shè)定控制對象函數(shù)名等、在內(nèi)核20確定從控制對象函數(shù)發(fā)行的系統(tǒng)調(diào)用時(shí)所需要的識別信息或用于生成識別信息的關(guān)聯(lián)信息。例如,可以將函數(shù)執(zhí)行代碼在存儲器上的存儲地址或用于計(jì)算存儲地址的虛擬地址、在堆棧堆積的信息等作為識別信息來使用。對于識別信息在后面進(jìn)行詳細(xì)的敘述。
然后,對訪問控制裝置10的各個處理部進(jìn)行詳細(xì)的說明。
鉤子部11取得函數(shù)調(diào)用通知用系統(tǒng)調(diào)用notify(),并傳送給函數(shù)訪問檢測部12。此外,鉤子部11把請求向控制對應(yīng)資源30進(jìn)行訪問的系統(tǒng)調(diào)用傳送給資源訪問控制部14。
函數(shù)訪問檢測部12檢測對來自程序70的控制對象函數(shù)的調(diào)用,生成確定是從該檢測到的控制對象函數(shù)發(fā)行的系統(tǒng)調(diào)用的識別信息。
例如,函數(shù)訪問檢測部12由系統(tǒng)調(diào)用notify()的自變量取得控制對象函數(shù)名和控制對象函數(shù)調(diào)用源進(jìn)程(例如程序執(zhí)行代碼40)的信息,根據(jù)函數(shù)許可用訪問控制規(guī)則判斷可否調(diào)用控制對象函數(shù)。這里,在「函數(shù)許可用訪問控制規(guī)則」中記述了是否為允許調(diào)用的控制對象函數(shù)。
此外,函數(shù)訪問檢測部12在判斷可否調(diào)用之前驗(yàn)證函數(shù)調(diào)用通知用系統(tǒng)調(diào)用notify()是否沒有被非法調(diào)用,僅在確認(rèn)了從該控制對象函數(shù)發(fā)行系統(tǒng)調(diào)用notify()的情況下可以繼續(xù)進(jìn)行處理。關(guān)于具體的確認(rèn)方法將在后面進(jìn)行詳細(xì)的敘述。
函數(shù)訪問控制部15取得控制對象函數(shù)的函數(shù)名和控制對象函數(shù)的調(diào)用源進(jìn)程的信息,根據(jù)函數(shù)許可用訪問控制規(guī)則判定可否調(diào)用控制對象函數(shù)。然后,函數(shù)訪問檢測部12在允許調(diào)用的情況下生成識別信息。
追加處理部13在函數(shù)訪問控制部15允許控制對象函數(shù)的調(diào)用的情況下,執(zhí)行預(yù)先規(guī)定的處理。這里,在上述的「函數(shù)許可用訪問控制規(guī)則」中也可以記述以特定處理為條件地允許函數(shù)調(diào)用的條件附加許可規(guī)則。在允許附加條件情況下,函數(shù)訪問檢測部12將處理移動至追加處理部13,執(zhí)行作為條件記述的處理。
作為在條件中設(shè)定的處理,例如具有伴隨函數(shù)調(diào)用的向資源訪問履歷的記錄(log)、取得控制對象資源30的備份等。
此外,追加處理部13執(zhí)行預(yù)先已規(guī)定的處理,函數(shù)訪問控制部15在所述追加處理部執(zhí)行了預(yù)先已規(guī)定的處理的情況下,可以允許調(diào)用控制對象函數(shù)。
此外,在允許函數(shù)調(diào)用的情況下,函數(shù)訪問檢測部12使用函數(shù)調(diào)用通知用系統(tǒng)調(diào)用自變量的信息和可以從內(nèi)核20取得的信息的一方或雙方,生成對來自該函數(shù)的系統(tǒng)調(diào)用發(fā)行進(jìn)行檢測時(shí)所必需的識別信息。
資源訪問控制部14從程序70取得對控制對象資源30的訪問請求,根據(jù)函數(shù)訪問檢測部12所生成的識別信息以及資源許可用訪問控制規(guī)則,判定系統(tǒng)調(diào)用的訪問可否進(jìn)行。這里,如圖3所示,在「資源訪問控制規(guī)則」中記述了控制對象資源30的信息、訪問請求源的程序70的信息、函數(shù)訪問檢測部12生成的識別信息、通過許可動作組記述的規(guī)則。作為進(jìn)行控制的規(guī)則,可以列舉出僅規(guī)定的控制對象函數(shù)可以訪問規(guī)定的控制對象資源30、僅規(guī)定的控制對象函數(shù)拒絕規(guī)定的控制對象資源30。例如,在資源訪問控制規(guī)則中記述了以下的規(guī)則無條件地允許來自計(jì)算機(jī)100售出時(shí)所安裝的程序的系統(tǒng)調(diào)用,但對于下載的程序僅允許由識別信息確定的系統(tǒng)調(diào)用。此時(shí),資源訪問控制部14對于下載的程序,僅通過函數(shù)中被允許調(diào)用的函數(shù),允許對控制對象資源30進(jìn)行訪問。
(訪問控制方法)然后,使用圖4對本實(shí)施方式的訪問控制方法進(jìn)行說明。
首先,作為前提如圖5所示,設(shè)為通過編譯程序源(programme source)來生成程序目標(biāo)文件(programme object file),在程序執(zhí)行文件上配置應(yīng)用程序執(zhí)行代碼。此外,通過與靜態(tài)鏈接庫(static link library)進(jìn)行鏈接,作為本實(shí)施方式控制對象函數(shù)的func_1()、func_2()的執(zhí)行代碼被配置在程序執(zhí)行文件上。此外,在程序執(zhí)行文件上配置表示了各個執(zhí)行代碼的配置信息的再配置信息、作為用于動態(tài)地鏈接公共庫的信息的動態(tài)(dynamic)信息等。通過安裝這些程序,在實(shí)際存儲器地址上配置應(yīng)用程序執(zhí)行代碼、func_1()執(zhí)行代碼、func_2()執(zhí)行代碼。此外,通過與公共庫進(jìn)行鏈接,也可以配置作為庫目標(biāo)的func_3()執(zhí)行代碼。
在圖4的步驟S101中,鉤子部11取得為了通知控制對象函數(shù)的調(diào)用而設(shè)置的通知命令(例如函數(shù)調(diào)用通知用系統(tǒng)調(diào)用notify())。然后,鉤子部11將通知命令傳送給函數(shù)訪問檢測部12。
然后,在步驟S102,函數(shù)訪問檢測部12從程序檢測對于控制對象函數(shù)的調(diào)用。
然后,在步驟S103,函數(shù)訪問檢測部12驗(yàn)證函數(shù)調(diào)用通知用系統(tǒng)調(diào)用notify()是否沒有被非法調(diào)用。例如,通過參照程序計(jì)數(shù)器等方法取得系統(tǒng)調(diào)用notify()發(fā)行源的存儲器地址,通過驗(yàn)證是否與由系統(tǒng)調(diào)用自變量確定的控制對象函數(shù)的存儲地址范圍一致,可以進(jìn)行確認(rèn)。如圖5所示,控制對象函數(shù)的存儲地址例如在程序執(zhí)行代碼的頭(head)區(qū)域記述向函數(shù)目標(biāo)的偏移(offset),通過將偏移與程序的偏移目的地地址相加,可以計(jì)算func_1()偏移地址、func_2()偏移地址。
此外,在控制對象函數(shù)(func_3())包含在公共庫中的情況下,按照圖6所示的順序,可以驗(yàn)證notify系統(tǒng)調(diào)用的發(fā)行源。設(shè)在庫中包含notify系統(tǒng)調(diào)用的發(fā)行函數(shù),從控制對象函數(shù)調(diào)用庫內(nèi)的notify系統(tǒng)調(diào)用發(fā)行函數(shù)。通過函數(shù)訪問檢測部12可以對表示配置了公共庫的地址范圍的地址解決表進(jìn)行管理,判定notify系統(tǒng)調(diào)用的發(fā)行源地址是否位于上述地址范圍內(nèi)。
在函數(shù)調(diào)用通知用系統(tǒng)調(diào)用notify()是恰當(dāng)?shù)那闆r下,進(jìn)入到步驟S104,在不恰當(dāng)?shù)那闆r下進(jìn)入到步驟S111,進(jìn)行顯示函數(shù)調(diào)用通知用系統(tǒng)調(diào)用notify()不恰當(dāng)?shù)腻e誤處理,并結(jié)束處理。
然后,在步驟S104,函數(shù)訪問檢測部12從系統(tǒng)調(diào)用notify()的自變量取得控制對象函數(shù)名和控制對象函數(shù)調(diào)用源進(jìn)程(例如程序執(zhí)行代碼40)的信息,根據(jù)函數(shù)許可用訪問控制規(guī)則判斷可否進(jìn)行控制對象函數(shù)的調(diào)用。在允許調(diào)用的情況下,進(jìn)入步驟S105,在不允許的情況下進(jìn)行步驟S11,進(jìn)行顯示沒有控制對象函數(shù)調(diào)用權(quán)限等消息的錯誤處理,并結(jié)束處理。
然后,在步驟S105,函數(shù)訪問檢測部12判斷在函數(shù)許可用訪問控制規(guī)則中是否記述了以特定處理為條件允許函數(shù)調(diào)用的條件附加許可規(guī)則。在允許附加條件的情況下,進(jìn)入步驟S106;在不允許附加條件的情況下進(jìn)入步驟S107。
然后,在步驟S106,追加處理部13執(zhí)行作為條件所記述的處理。
然后,在步驟S107,函數(shù)訪問檢測部12生成確定是從該檢測到的控制對象函數(shù)所發(fā)行的系統(tǒng)調(diào)用的識別信息。
例如,函數(shù)訪問檢測部12在調(diào)用了控制對象函數(shù)的情況下,將控制對象函數(shù)的函數(shù)名堆積在堆棧;在處理返回控制對象函數(shù)的調(diào)用源進(jìn)程的情況下,從堆棧除去控制對象函數(shù)的函數(shù)名,并作為識別信息生成在堆棧所存儲的信息。具體地說,如圖7所示,在對在自變量中包含了控制對象函數(shù)的函數(shù)名的、函數(shù)調(diào)用通知用系統(tǒng)調(diào)用(notify1())進(jìn)行接收時(shí),將函數(shù)名(func_1()、func_2())堆積在堆棧信息,在接收函數(shù)返回通知用系統(tǒng)調(diào)用(notify2())時(shí),從堆棧信息去除函數(shù)名(func_1()、func_2()),通過以上順序可以生成識別信息。
而且,函數(shù)訪問檢測部12僅在取得通知命令時(shí)的程序正在執(zhí)行時(shí)、代碼的存儲器地址包含在函數(shù)目標(biāo)文件的存儲范圍內(nèi)的情況下,可以把從通知命令所取得的控制對象函數(shù)名堆積在堆棧。
除此之外,函數(shù)訪問檢測部12計(jì)算控制對象函數(shù)的執(zhí)行代碼的實(shí)際存儲器上的存儲地址的范圍,可以作為識別信息生成存儲地址范圍。具體地說,如圖4所示,當(dāng)在函數(shù)調(diào)用通知用系統(tǒng)調(diào)用的自變量中設(shè)定了函數(shù)執(zhí)行代碼的地址偏移和大小的情況下,取得已安裝了程序執(zhí)行代碼的實(shí)際存儲器地址,通過將偏移與大小進(jìn)行相加來計(jì)算函數(shù)執(zhí)行代碼的實(shí)際存儲器上的存儲地址范圍。然后,作為識別信息生成計(jì)算出的存儲地址范圍。此外,在函數(shù)調(diào)用通知用系統(tǒng)調(diào)用的自變量中也可以直接包含存儲器地址范圍。
而且,在函數(shù)調(diào)用通知用系統(tǒng)調(diào)用的自變量中也可以包含控制對象函數(shù)的執(zhí)行代碼的虛擬存儲器地址范圍。此時(shí),函數(shù)訪問檢測部12根據(jù)虛擬存儲器地址范圍求出配置了執(zhí)行代碼的實(shí)際存儲器地址范圍,作為識別信息生成實(shí)際存儲器地址范圍。作為求出實(shí)際存儲器地址范圍的方法,例如虛擬存儲器地址范圍,根據(jù)函數(shù)調(diào)用通知用系統(tǒng)調(diào)用的執(zhí)行代碼設(shè)為是控制對象函數(shù)的最后的執(zhí)行代碼的地址偏移,函數(shù)訪問檢測部12通過將上述地址偏移與接收函數(shù)調(diào)用通知用系統(tǒng)調(diào)用時(shí)的正在執(zhí)行的代碼的存儲器地址相加,由此可以求出實(shí)際存儲器地址范圍。
此外,也可以將上述堆棧信息和地址范圍進(jìn)行組合來作為識別信息。例如,可以使在堆棧堆積的函數(shù)信息和函數(shù)執(zhí)行代碼的地址范圍相互對應(yīng)來生成識別信息。
然后,在步驟S108,鉤子部11取得系統(tǒng)調(diào)用(例如open()、write()),并參照系統(tǒng)調(diào)用自變量檢測對控制對象資源30的訪問請求。然后,鉤子部11把向控制對象資源30的訪問請求傳送給資源訪問控制部14。
然后,在步驟S109,資源訪問控制部14根據(jù)函數(shù)訪問檢測部12所生成的識別信息,判定可否進(jìn)行系統(tǒng)調(diào)用的訪問。在允許的情況下,進(jìn)入步驟S110,允許向控制對象資源30的訪問。另一方面,在不允許的情況下,進(jìn)入步驟S112,進(jìn)行顯示沒有資源訪問權(quán)限的錯誤處理,拒絕向控制對象資源30的訪問。在圖2中,在func_1()執(zhí)行代碼50、func_2()執(zhí)行代碼60中包含的系統(tǒng)調(diào)用open()、write()由資源訪問控制部14許可了向控制對象資源30的訪問,但在程序執(zhí)行代碼40中包含的系統(tǒng)調(diào)用open()由資源訪問控制部14拒絕了訪問。
此外,作為可否訪問的判定方法,例如在作為識別信息使用在堆棧中存儲的信息的情況下,資源訪問控制部14根據(jù)在堆棧中是否堆積了控制對象函數(shù)的函數(shù)名,判定可否進(jìn)行系統(tǒng)調(diào)用的訪問(在已堆積時(shí)允許系統(tǒng)調(diào)用)。
此外,在作為識別信息正在使用存儲地址范圍的情況下,資源訪問控制部14參照進(jìn)程的程序計(jì)數(shù)器,根據(jù)發(fā)行了系統(tǒng)調(diào)用的命令代碼的存儲地址是否在存儲地址的范圍內(nèi),判定可否進(jìn)行系統(tǒng)調(diào)用的訪問。
此外,在作為識別信息正在使用把上述堆棧信息和地址范圍組合起來的信息的情況下,資源訪問控制部14驗(yàn)證控制對象函數(shù)正堆積在堆棧和發(fā)行了系統(tǒng)調(diào)用的命令代碼的存儲地址正收容在函數(shù)執(zhí)行代碼的存儲地址范圍內(nèi),在滿足兩個條件的情況下,進(jìn)行允許系統(tǒng)調(diào)用的判定處理。
此外,在上述的說明中,使用單一的流程圖對鉤子部11、函數(shù)訪問檢測部12以及資源訪問控制部14的動作進(jìn)行了說明,但函數(shù)訪問檢測部12和資源訪問控制部14可以作為單獨(dú)的模塊進(jìn)行動作。(作用以及效果)當(dāng)使用本實(shí)施方式的訪問控制裝置10以及訪問控制方法時(shí),生成確定是從檢測到的控制對象函數(shù)發(fā)行的系統(tǒng)調(diào)用的識別信息,通過根據(jù)該識別信息判定可否進(jìn)行向資源的訪問,可以根據(jù)識別信息將控制對象函數(shù)調(diào)用信息反映在對低等級的資源訪問請求的訪問控制中,可以同時(shí)確保函數(shù)調(diào)用單位的訪問控制的高抽象度和低等級資源訪問請求單位的訪問控制的強(qiáng)安全性兩者。由此,可以高效率地記述基于程序的意思信息的多樣的訪問規(guī)則,可以安全地執(zhí)行多功能的程序。
此外,函數(shù)訪問控制部15取得控制對象函數(shù)的函數(shù)名和控制對象函數(shù)的調(diào)用源進(jìn)程的信息,根據(jù)函數(shù)許可用訪問控制規(guī)則判定可否進(jìn)行控制對象函數(shù)的調(diào)用。然后,函數(shù)訪問控制部12在允許了調(diào)用的情況下,可以生成識別信息。因此,可以拒絕非法的控制對象函數(shù)的調(diào)用。
此外,當(dāng)使用本實(shí)施方式的訪問控制裝置10以及訪問控制方法時(shí),在允許了控制對象函數(shù)的調(diào)用的情況下,可以執(zhí)行預(yù)先規(guī)定的處理?;蛘撸趫?zhí)行了預(yù)先規(guī)定的處理的情況下,可以允許進(jìn)行控制對象函數(shù)的調(diào)用。因此,可以對控制對象函數(shù)調(diào)用進(jìn)行掛鉤,插入預(yù)先所規(guī)定的處理。由此,例如可安裝以備份的取得或履歷的取得等處理的執(zhí)行為條件的高度的訪問控制規(guī)則,可以應(yīng)對應(yīng)用程序或系統(tǒng)的多樣的必要條件。
此外,資源訪問控制部14除了識別信息之外,可以根據(jù)資源許可用訪問控制規(guī)則判定可否進(jìn)行系統(tǒng)調(diào)用的訪問。因此,關(guān)于向特定資源的訪問,可以附加使用特定函數(shù)的義務(wù)。由此,可以僅通過信賴的函數(shù)允許向特性資源的訪問,可以提高程序執(zhí)行的安全性。
此外,函數(shù)訪問檢測部12通過取得為了通知控制對象函數(shù)的調(diào)用而設(shè)置的通知命令(例如notify()),可以檢測對控制對象函數(shù)的調(diào)用。因此,可以通過對該通知命令進(jìn)行掛鉤檢測控制對象函數(shù)的調(diào)用,來取得通知命令的自變量中包含的識別信息或用于生成識別信息的關(guān)聯(lián)信息,可以通過簡易的處理實(shí)現(xiàn)函數(shù)調(diào)用檢測。由此,可以削減本訪問控制裝置以及方法的處理成本和安裝成本。
此外,函數(shù)訪問檢測部12在確認(rèn)了上述通知命令是從控制對象函數(shù)發(fā)行的情況下,可以生成識別信息。因此,例如在程序?yàn)榱朔欠ㄔL問資源而假冒發(fā)行通知控制對象函數(shù)調(diào)用的命令時(shí),可以將其檢測到。由此可以進(jìn)一步提高程序執(zhí)行的安全性。
此外,函數(shù)訪問檢測部12生成已在堆棧存儲的信息來作為識別信息,資源訪問控制部14可以根據(jù)是否在堆棧堆積了控制對象函數(shù)的函數(shù)名來判定可否進(jìn)行通過系統(tǒng)調(diào)用的資源訪問。因此,即使在控制對象函數(shù)進(jìn)一步調(diào)用了函數(shù)的情況下,因?yàn)楹瘮?shù)的調(diào)用履歷包含在堆棧信息中,所以可以識別通過控制對象函數(shù)以及其下級函數(shù)的資源訪問。
此外,上述通知命令包含控制對象函數(shù)名,函數(shù)訪問檢測部12可以把根據(jù)通知命令得到的控制對象函數(shù)名堆積在堆棧。這樣,通過對該通知命令進(jìn)行掛鉤可以檢測控制對象函數(shù)調(diào)用并取得函數(shù)名,可以通過簡單的處理實(shí)現(xiàn)函數(shù)調(diào)用檢測。由此,可以削減本訪問控制裝置以及方法的處理成本和安裝成本。
此外,函數(shù)訪問檢測部12僅在函數(shù)目標(biāo)文件的存儲范圍中包含了取得通知命令時(shí)的程序的執(zhí)行中代碼的存儲器地址時(shí),可以把從通知命名取得的控制對象函數(shù)名堆積在堆棧。由此,通知命令可以驗(yàn)證是否正在從在程序頭中記述的目標(biāo)存儲范圍進(jìn)行發(fā)行。例如,在程序?yàn)榱朔欠ㄔL問資源而假冒發(fā)行通知控制對象函數(shù)調(diào)用的命令時(shí),可以將其檢測到。由此,可以進(jìn)一步提高程序執(zhí)行的安全性。
此外,函數(shù)檢測部12對控制對象函數(shù)的執(zhí)行代碼在實(shí)際存儲器上的存儲地址范圍進(jìn)行計(jì)算,作為識別信息生成存儲地址范圍,資源訪問檢測部14參照進(jìn)程的程序計(jì)數(shù)器,可以根據(jù)發(fā)行了系統(tǒng)調(diào)用的命令代碼的存儲地址是否在存儲地址范圍內(nèi)來判定可否進(jìn)行系統(tǒng)調(diào)用的訪問。因此,根據(jù)配置了函數(shù)的執(zhí)行代碼的存儲器地址范圍,可以驗(yàn)證向控制對象資源的訪問請求是否是從控制對象函數(shù)發(fā)行的。
此外,上述通知命令包含控制對象函數(shù)的執(zhí)行代碼的存儲器地址,函數(shù)訪問檢測部12可以生成根據(jù)通知命令得到的存儲器地址范圍來作為識別信息。如此,通過對該通知命令進(jìn)行掛鉤可以檢測控制對象函數(shù)調(diào)用并取得存儲器地址范圍,可以通過簡易的處理實(shí)現(xiàn)控制對象函數(shù)調(diào)用的檢測。由此,可以削減本訪問控制裝置以及方法的處理成本和安裝成本。
此外,上述通知命令包含控制對象函數(shù)的執(zhí)行代碼的虛擬存儲器地址范圍,函數(shù)訪問檢測部12從虛擬的存儲器地址范圍求出配置了執(zhí)行代碼的實(shí)際存儲器地址范圍,并可以作為識別信息生成實(shí)際存儲器地址范圍。這樣,可以從包含在通知命令中的虛擬存儲器地址范圍求出存儲函數(shù)的執(zhí)行代碼的實(shí)際存儲器地址范圍。由此,即使在生成程序執(zhí)行代碼時(shí)無法導(dǎo)出實(shí)際存儲器地址范圍的情況下,也可以使用本訪問控制裝置以及方法。
此外,將虛擬存儲器地址范圍,根據(jù)函數(shù)調(diào)用通知用系統(tǒng)調(diào)用的執(zhí)行代碼設(shè)為是控制對象函數(shù)的最后的執(zhí)行代碼的地址偏移,函數(shù)訪問檢測部12通過將上述地址偏移與接收函數(shù)調(diào)用通知用系統(tǒng)調(diào)用時(shí)的正在執(zhí)行的代碼的存儲器地址相加,由此可以求出實(shí)際存儲器地址范圍。如此,可以從包含在通知命令中的虛擬存儲器地址范圍求出存儲函數(shù)的執(zhí)行代碼的實(shí)際存儲器地址范圍。由此,即使在生成程序執(zhí)行代碼時(shí)無法導(dǎo)出實(shí)際存儲器地址范圍的情況下,也可以使用本訪問控制裝置以及方法。
(其他實(shí)施方式)通過第一以及第二實(shí)施方式對本發(fā)明進(jìn)行了記述。但應(yīng)該理解為部分構(gòu)成本發(fā)明的實(shí)施方式以及附圖并沒有限定本發(fā)明。通過本發(fā)明的公開,本領(lǐng)域的技術(shù)人員可以清楚本發(fā)明不同其他的實(shí)施例以及操作技術(shù)。
例如,在圖2中采用了將訪問控制裝置10安裝在操作系統(tǒng)的內(nèi)核20的內(nèi)部的結(jié)構(gòu),但也可以將訪問控制裝置10安裝在其他的位置。
此外,在上述的實(shí)施方式中,對判定可否進(jìn)行來自系統(tǒng)調(diào)用的訪問請求進(jìn)行了說明,但本發(fā)明并不限于系統(tǒng)調(diào)用,即使是來自其他程序的訪問請求也可以適用。
在領(lǐng)會了本發(fā)明的內(nèi)容并且不偏離本發(fā)明范圍的情況下,技術(shù)人員可能提出不同的修改。
權(quán)利要求
1.一種訪問控制裝置,其控制通過程序向控制對象資源的訪問,其特征在于,具有函數(shù)訪問檢測部,其檢測來自程序的對控制對象函數(shù)的調(diào)用,并生成識別信息,該識別信息確定從該檢測到的控制對象函數(shù)所發(fā)行的訪問請求;資源訪問控制部,其從所述程序取得對所述控制對象資源的訪問請求,并根據(jù)所述識別信息判定可否進(jìn)行所述訪問請求。
2.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,還具有函數(shù)訪問控制部,其取得所述控制對象函數(shù)的調(diào)用源進(jìn)程的信息,并根據(jù)函數(shù)許可用訪問控制規(guī)則判定可否進(jìn)行所述控制對象函數(shù)的調(diào)用,所述函數(shù)訪問檢測部在允許了調(diào)用的情況下,生成所述識別信息。
3.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,還具有在檢測到所述控制對象函數(shù)的調(diào)用時(shí),執(zhí)行預(yù)先規(guī)定的處理的追加處理部。
4.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,還具有執(zhí)行預(yù)先規(guī)定的處理的追加處理部,所述函數(shù)訪問控制部在所述追加處理部執(zhí)行了預(yù)先規(guī)定的處理的情況下,允許所述控制對象函數(shù)的調(diào)用。
5.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,所述資源訪問控制部除了所述識別信息之外,可以根據(jù)資源許可用訪問控制規(guī)則判定可否進(jìn)行所述系統(tǒng)調(diào)用的訪問,在所述資源許可用訪問控制規(guī)則中記述了控制通過規(guī)定的所述控制對象函數(shù)的向所述控制對象資源的訪問的規(guī)則。
6.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,所述函數(shù)訪問檢測部通過取得為了通知所述控制對象函數(shù)的調(diào)用而設(shè)置的通知命令,來檢測對所述控制對象函數(shù)的調(diào)用,在所述通知命令中包含所述識別信息或生成所述識別信息所必需的信息。
7.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,所述函數(shù)訪問檢測部在確認(rèn)了正在從所述控制對象函數(shù)發(fā)行所述通知命令的情況下,生成所述識別信息。
8.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,所述函數(shù)訪問檢測部在調(diào)用了所述控制對象函數(shù)的情況下,將所述控制對象函數(shù)的函數(shù)名堆積在堆棧;在處理返回所述控制對象函數(shù)的調(diào)用源進(jìn)程的情況下,從堆棧除去所述控制對象函數(shù)的函數(shù)名,并作為所述識別信息生成在所述堆棧中所存儲的信息,所述資源訪問控制部根據(jù)所述控制對象函數(shù)的函數(shù)名是否正堆積在所述堆棧中來判定可否進(jìn)行所述資源訪問請求。
9.根據(jù)權(quán)利要求1所述的訪問控制裝置,其特征在于,所述函數(shù)訪問檢測部對所述控制對象函數(shù)的執(zhí)行代碼在實(shí)際存儲器上的存儲地址范圍進(jìn)行計(jì)算,作為所述識別信息生成所述存儲地址范圍,所述資源訪問控制部參照進(jìn)程的程序計(jì)數(shù)器,根據(jù)發(fā)行了所述資源訪問請求的命令代碼的存儲地址是否在所述存儲地址范圍內(nèi),來判定可否進(jìn)行所述資源訪問請求。
10.一種訪問控制方法,其控制通過程序向控制對象資源的訪問,其特征在于,具有如下步驟檢測來自程序的對控制對象函數(shù)的調(diào)用,并生成識別信息,該識別信息確定來自該檢測出的控制對象函數(shù)的訪問請求;從所述程序取得對所述控制對象資源的訪問請求,根據(jù)所述識別信息判定可否進(jìn)行所述訪問的請求的步驟。
全文摘要
一種訪問控制裝置,其控制通過程序向控制對象資源的訪問,具有函數(shù)訪問檢測部,其檢測來自程序的對控制對象函數(shù)的調(diào)用,并生成確定從該檢測到的控制對象函數(shù)所發(fā)行的訪問請求的識別信息;資源訪問控制部,其從所述程序取得對所述控制對象資源的訪問請求,并根據(jù)所述識別信息判定可否進(jìn)行所述訪問請求。
文檔編號G06F21/22GK1834978SQ200610057400
公開日2006年9月20日 申請日期2006年3月14日 優(yōu)先權(quán)日2005年3月14日
發(fā)明者鈴木敬, 金野晃, 藤本拓, 中山雄大 申請人:株式會社Ntt都科摩