欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法及裝置的制作方法

文檔序號:6385194閱讀:158來源:國知局
專利名稱:基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機安全防范技術(shù)領(lǐng)域,具體涉及一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法及裝置。
背景技術(shù)
在通用操作系統(tǒng)中,內(nèi)核擴展模塊運行于內(nèi)核態(tài),幾乎可以訪問所有計算機系統(tǒng)的資源,具有非常高的權(quán)限。因此,內(nèi)核擴展模塊的安全性直接影響著操作系統(tǒng)的安全性。同時,由于內(nèi)核擴展模塊可以進行任意添加和刪除,因此操作系統(tǒng)大量使用內(nèi)核擴展模塊來實現(xiàn)各種功能。在Linux操作系統(tǒng)中,代碼量占操作系統(tǒng)代碼總量70%左右的設(shè)備驅(qū)動就是作為內(nèi)核擴展模塊運行的。但是內(nèi)核擴展模塊可能存在較大的安全隱患,因此,提高內(nèi)核擴展模塊的安全性對于計算機安全性的提升具有重要意義。通常情況下,內(nèi)核擴展模塊的安全性方面常常依賴于開發(fā)者對開發(fā)規(guī)范的遵守,并且需要進行反復的測試以及審核分析,這些對于程序開發(fā)者的能力以及職業(yè)素養(yǎng)都有較高的要求,同時部署難度也很大。綜上所述,一種新的內(nèi)核擴展模塊錯誤檢測方法及裝置是亟待提供的。

發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明的目的在于提供一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法及裝置,用于實時準確的檢測出內(nèi)核擴展模塊運行過程是否存在不安全因素,進而提升操作系統(tǒng)內(nèi)核的安全性,減少不必要的損失,同時降低程序員的工作量。(二)技術(shù)方案本發(fā)明技術(shù)方案如下一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法,包括步驟S1.為內(nèi)核擴展模塊設(shè)定內(nèi)核函數(shù)使用規(guī)則;S2.分析所述使用規(guī)則與內(nèi)核擴展模塊之間的依賴關(guān)系并根據(jù)所述依賴關(guān)系建立狀態(tài)轉(zhuǎn)移圖;S3.根據(jù)所述狀態(tài)轉(zhuǎn)移圖中的轉(zhuǎn)移條件,在所述內(nèi)核擴展模塊中添加插裝標記;S4.所述內(nèi)核擴展模塊運行至插裝標記位置時觸發(fā)根據(jù)所述使用規(guī)則執(zhí)行的檢測。優(yōu)選的,所述步驟S3包括根據(jù)所述轉(zhuǎn)移條件,查找所述內(nèi)核擴展模塊與所述使用規(guī)則相關(guān)的所有必要接口 ;在所有必要接口處添加插裝標記。優(yōu)選的,所述插裝標記包括注冊和初始化標記以及觸發(fā)檢測的標記。優(yōu)選的,所述步驟S4之后還包括步驟若所述步驟S4中檢測到所述內(nèi)核擴展模塊轉(zhuǎn)移到不安全狀態(tài),則對其執(zhí)行審計或者刪除操作。優(yōu)選的,所述不安全狀態(tài)包括所述內(nèi)核擴展模塊調(diào)用其無權(quán)調(diào)用的函數(shù)、所述內(nèi)核擴展模塊訪問其無權(quán)訪問的內(nèi)存以及所述內(nèi)核擴展模塊隱含潛在的危害。 本發(fā)明還提供了 一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測裝置一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測裝置,包括分別與待檢測內(nèi)核擴展模塊連接的使用規(guī)則庫、標記插裝單元以及動態(tài)檢測器;所述標記插裝單元在根據(jù)所述使用規(guī)則庫中的使用規(guī)則查找到的必要接口處添加插裝標記,所述動態(tài)檢測器根據(jù)所述插裝標記實時監(jiān)控內(nèi)核擴展模塊的運行狀態(tài)并在所述內(nèi)核擴展模塊轉(zhuǎn)移至不安全狀態(tài)時向操作系統(tǒng)內(nèi)核報警。(三)有益效果本發(fā)明的內(nèi)核擴展模塊錯誤檢測方法,通過為內(nèi)核擴展模塊設(shè)定內(nèi)核函數(shù)使用規(guī)貝U,分析使用規(guī)則與內(nèi)核擴展模塊之間的依賴關(guān)系并根據(jù)依賴關(guān)系建立狀態(tài)轉(zhuǎn)移圖,進而結(jié)合狀態(tài)轉(zhuǎn)移圖在所述內(nèi)核擴展模塊中添加插裝標記,內(nèi)核擴展模塊運行至插裝標記位置時會觸發(fā)根據(jù)所述使用規(guī)則執(zhí)行的檢測,從而能夠?qū)崟r準確的檢測出內(nèi)核擴展模塊運行過程是否存在不安全因素,進而提升操作系統(tǒng)內(nèi)核的安全性,減少不必要的損失,同時降低程序員的工作量。


圖1是本發(fā)明實施例一中自旋鎖的工作機理和狀態(tài)轉(zhuǎn)移圖;圖2是本發(fā)明的一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測裝置結(jié)構(gòu)示意圖。
具體實施例方式下面結(jié)合附圖和實施例,對發(fā)明的具體實施方式
做進一步描述。以下實施例僅用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。實施例一一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法,主要包括以下步驟S1.為內(nèi)核擴展模塊設(shè)定內(nèi)核函數(shù)使用規(guī)則;使用規(guī)則可以是既定規(guī)則,也可以是一些機構(gòu)或者系統(tǒng)所有者自定義的一些和既定規(guī)則沒有直接關(guān)系的特定規(guī)則;例如,Linux操作系統(tǒng)中的自旋鎖用于保證對臨界區(qū)的互斥訪問,其接口函數(shù)中有加鎖和解鎖兩類操作,其中“自旋鎖不能在未被加鎖之前解鎖”就是一條關(guān)于自旋鎖的內(nèi)核擴展模塊的內(nèi)核函數(shù)使用規(guī)則;同樣,內(nèi)核在釋放后不能再次被使用同樣是一條使用規(guī)則;甚至可以自定義內(nèi)核在第一次使用前必須執(zhí)行清空操作,這也是一條合理的使用規(guī)則。本實施例中以自旋鎖為例進行說明,自旋鎖加鎖通過spin_lock (**)執(zhí)行,解鎖則通過spin_unlock(**)執(zhí)行;現(xiàn)定義自旋鎖的使用規(guī)則如下(1)、自旋鎖在使用前必須進行初始化;(2)、自旋鎖不能在未被加鎖之前解鎖。S2.分析所述使用規(guī)則與內(nèi)核擴展模塊之間的依賴關(guān)系并根據(jù)所述依賴關(guān)系建立狀態(tài)轉(zhuǎn)移圖;狀態(tài)轉(zhuǎn)移圖中的頂點表示狀態(tài),邊表示狀態(tài)的轉(zhuǎn)移,對于每個頂點,記錄其允許訪問的變量地址、內(nèi)存區(qū)域以及內(nèi)核函數(shù);需要說明的是該狀態(tài)轉(zhuǎn)移圖只是為了描述內(nèi)核擴展模塊內(nèi)部的狀態(tài)變化,是實際使用的一種原理圖,并非必須繪制出狀態(tài)轉(zhuǎn)移圖,對應該狀態(tài)轉(zhuǎn)移圖的計算機程序為有限狀態(tài)自動機。本實施例以elOOO網(wǎng)卡驅(qū)動中的el000_read_eeprom函數(shù)使用el000_eeprom_lock自旋鎖為例對狀態(tài)轉(zhuǎn)移圖進行說明;以下為el000_read_eeprom函數(shù)的源代碼Istartic DEFINE_SPINLOCK(el000_eeprom_lock);2 s32 el000_read_eeprom(structel000_hw*hw, ul6offset,ul6words, ul6*data)3 {4 s32 ret ;5 spin_lock(&el000_eeprom_lock);6: ret = el000_do_read_eeprom(hw, offset, words, data);7 spin_unlock(&el000_eeprom_lock);8 return ret ;9 }以上代碼中使用了 el000_eeprom_lock自旋鎖,在調(diào)用函數(shù)el000_do_read_eeprom之前調(diào)用spin_lock加鎖函數(shù)進行加鎖,在el000_do_read_eeprom函數(shù)執(zhí)行完畢之后調(diào)用spin_unlock解鎖函數(shù)進行解鎖;其中,在第5行代碼已經(jīng)執(zhí)行完畢時處于加鎖狀態(tài),此時自旋鎖內(nèi)核函數(shù)使用情況如圖1中所示圖中標出了在狀態(tài)2 (加鎖)和狀態(tài)3 (解鎖)時能夠訪問的與自旋鎖相關(guān)的內(nèi)核函數(shù)以及對于el000_eeprom_lock自旋鎖的狀態(tài)記錄;從圖中可以看出,el000_eeprom_lock自旋鎖在狀態(tài)2的可寫對象表中,表明el000_eeprom_lock自旋鎖當前處于狀態(tài)2 ;從圖中也可以看出,在狀態(tài)3時不能訪問spin_unlock解鎖函數(shù),即自旋鎖不能在未被加鎖之前解鎖。S3.根據(jù)所述狀態(tài)轉(zhuǎn)移圖中的轉(zhuǎn)移條件,在所述內(nèi)核擴展模塊中添加插裝標記;該步驟主要包括根據(jù)所述轉(zhuǎn)移條件,查找所述內(nèi)核擴展模塊與所述使用規(guī)則相關(guān)的所有必要接口 ;在所有必要接口處添加插裝標記;所述插裝標記包括注冊和初始化標記以及觸發(fā)檢測的標記;注冊和初始化標記是指在待檢測內(nèi)核擴展模塊定義時,添加的向動態(tài)檢測器注冊和初始化該待檢測變量的標記,其需要將待檢測內(nèi)核擴展模塊的地址以及待檢測內(nèi)核擴展模塊所要遵守的內(nèi)核函數(shù)使用規(guī)則作為參數(shù)傳遞給動態(tài)檢測器;觸發(fā)檢測的標記是指在內(nèi)核擴展模塊調(diào)用內(nèi)核函數(shù)前,添加的觸發(fā)動態(tài)檢測器進行檢測的標記,其需要將待檢測內(nèi)核擴展模塊的地址、待調(diào)用函數(shù)以及所要遵守的內(nèi)核函數(shù)使用規(guī)則作為參數(shù)傳遞給動態(tài)檢測器。仍然以elOOO 網(wǎng)卡驅(qū)動中的 el000_read_eeprom 函數(shù)使用的 el000_eeprom_lock自旋鎖為例對該步驟進行說明;從上述步驟S2中el000_read_eeprom函數(shù)源代碼中可以看到自旋鎖el000_eepix)m_lOCk作為全局變量被定義和初始化;向動態(tài)檢測器注冊和初始化待檢測變量el000_eeprom_lock的標記被添加到網(wǎng)卡驅(qū)動的初始化函數(shù)el000_probe中,自旋鎖el000_eeprom_lock的地址、自旋鎖應當遵守的內(nèi)核函數(shù)使用規(guī)則等信息作為函數(shù)參數(shù)傳遞至動態(tài)檢測器;在el000_read_eeprom函數(shù)調(diào)用spin_lock加鎖函數(shù)之前插入觸發(fā)檢測的標記,將自旋鎖的地址、函數(shù)spin_loCk的地址以及自旋鎖應當遵守的內(nèi)核函數(shù)使用規(guī)則作為函數(shù)參數(shù)傳遞至動態(tài)檢測器;同樣也在調(diào)用spin_unloCk函數(shù)之前插入了觸發(fā)檢測的標記。
S4.所述內(nèi)核擴展模塊運行至插裝標記位置時觸發(fā)根據(jù)所述使用規(guī)則執(zhí)行的檢測;該步驟主要包括對添加了插裝標記的內(nèi)核擴展模塊進行重新編譯、運行,可以通過動態(tài)檢測器動態(tài)檢測是否存在違規(guī)操作;動態(tài)檢測器一直運行在內(nèi)核中,一旦運行到插裝標記位置,則會執(zhí)行根據(jù)使用規(guī)則對內(nèi)核擴展模塊進行檢查;其中,注冊和初始化標記觸發(fā)動態(tài)檢測器完成對設(shè)定的需要被檢測的變量進行注冊和初始化,動態(tài)檢測器記錄被檢測變量在內(nèi)核函數(shù)使用規(guī)則的狀態(tài)轉(zhuǎn)移圖中所處的狀態(tài);例如,在對待檢測的自旋鎖進行注冊和初始化后,該自旋鎖處于內(nèi)核函數(shù)使用規(guī)則狀態(tài)轉(zhuǎn)移圖表示的狀態(tài)I ;觸發(fā)檢測的標記觸發(fā)動態(tài)檢測器根據(jù)內(nèi)核函數(shù)使用規(guī)則對當前函數(shù)調(diào)用是否正確進行檢測,同時完成狀態(tài)轉(zhuǎn)移圖的狀態(tài)轉(zhuǎn)移;例如,在調(diào)用加鎖函數(shù)spin_lock后,自旋鎖處于內(nèi)核函數(shù)使用規(guī)則狀態(tài)轉(zhuǎn)移圖的狀態(tài)2,在調(diào)用解鎖函數(shù)spin_unlock后,自旋鎖處于內(nèi)核函數(shù)使用規(guī)則狀態(tài)轉(zhuǎn)移圖的狀態(tài)3 ;如果在某狀態(tài)調(diào)用了不允許其調(diào)用的函數(shù)或訪問了不允許其訪問的內(nèi)存時,動態(tài)檢測器會向操作系統(tǒng)內(nèi)核報警;例如,如果自旋鎖在狀態(tài)3時調(diào)用spin_unlock函數(shù),動態(tài)檢測器在允許調(diào)用函數(shù)的散列表中找不到spin_unloCk,則通知操作系統(tǒng)內(nèi)核有錯誤發(fā)生。進一步的,所述步驟S4之后還包括步驟若所述步驟S4中檢測到所述內(nèi)核擴展模塊轉(zhuǎn)移到不安全狀態(tài),則對其執(zhí)行審計或者刪除操作,其中,不安全狀態(tài)包括所述內(nèi)核擴展模塊調(diào)用其無權(quán)調(diào)用的函數(shù)、所述內(nèi)核擴展模塊訪問其無權(quán)訪問的內(nèi)存以及所述內(nèi)核擴展模塊隱含潛在的危害等。實施例二本發(fā)明還提供了一種根據(jù)實施例一中所述基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法的裝置,如圖2中所示包括分別與待檢測內(nèi)核擴展模塊連接的使用規(guī)則庫、標記插裝單元以及動態(tài)檢測器;使用規(guī)則庫中包含與內(nèi)核擴展模塊相關(guān)的內(nèi)核函數(shù)使用規(guī)則,標記插裝單元在根據(jù)所述使用規(guī)則庫中的使用規(guī)則查找到的必要接口處添加插裝標記,所述動態(tài)檢測器根據(jù)所述插裝標記實時監(jiān)控內(nèi)核擴展模塊的運行狀態(tài),在所述內(nèi)核擴展模塊轉(zhuǎn)移至不安全狀態(tài)時向操作系統(tǒng)內(nèi)核報警。以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的保護范疇。
權(quán)利要求
1.一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法,其特征在于,包括步驟51.為內(nèi)核擴展模塊設(shè)定內(nèi)核函數(shù)使用規(guī)則;52.分析所述使用規(guī)則與內(nèi)核擴展模塊之間的依賴關(guān)系并根據(jù)所述依賴關(guān)系建立狀態(tài)轉(zhuǎn)移圖;53.根據(jù)所述狀態(tài)轉(zhuǎn)移圖中的轉(zhuǎn)移條件,在所述內(nèi)核擴展模塊中添加插裝標記;54.所述內(nèi)核擴展模塊運行至插裝標記位置時觸發(fā)根據(jù)所述使用規(guī)則執(zhí)行的檢測。
2.根據(jù)權(quán)利要求1所述的錯誤檢測方法,其特征在于,所述步驟S3包括根據(jù)所述轉(zhuǎn)移條件,查找所述內(nèi)核擴展模塊與所述使用規(guī)則相關(guān)的所有必要接口 ;在所有必要接口處添加插裝標記。
3.根據(jù)權(quán)利要求1所述的錯誤檢測方法,其特征在于,所述插裝標記包括注冊和初始化標記以及觸發(fā)檢測的標記。
4.根據(jù)權(quán)利要求1-3任意一項所述的錯誤檢測方法,其特征在于,所述步驟S4之后還包括步驟若所述步驟S4中檢測到所述內(nèi)核擴展模塊轉(zhuǎn)移到不安全狀態(tài),則對其執(zhí)行審計或者刪除操作。
5.根據(jù)權(quán)利要求4所述的錯誤檢測方法,其特征在于,所述不安全狀態(tài)包括所述內(nèi)核擴展模塊調(diào)用其無權(quán)調(diào)用的函數(shù)、所述內(nèi)核擴展模塊訪問其無權(quán)訪問的內(nèi)存以及所述內(nèi)核擴展模塊隱含潛在的危害。
6.一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測裝置,其特征在于,包括分別與待檢測內(nèi)核擴展模塊連接的使用規(guī)則庫、標記插裝單元以及動態(tài)檢測器;所述標記插裝單元在根據(jù)所述使用規(guī)則庫中的使用規(guī)則查找到的必要接口處添加插裝標記,所述動態(tài)檢測器根據(jù)所述插裝標記實時監(jiān)控內(nèi)核擴展模塊的運行狀態(tài)并在所述內(nèi)核擴展模塊轉(zhuǎn)移至不安全狀態(tài)時向操作系統(tǒng)內(nèi)核報警。
全文摘要
本發(fā)明涉及計算機安全防范技術(shù)領(lǐng)域,具體涉及一種基于訪問規(guī)則控制的內(nèi)核擴展模塊錯誤檢測方法及裝置;該錯誤檢測方法包括步驟S1.為內(nèi)核擴展模塊設(shè)定內(nèi)核函數(shù)使用規(guī)則;S2.分析所述使用規(guī)則與內(nèi)核擴展模塊之間的依賴關(guān)系并根據(jù)所述依賴關(guān)系建立狀態(tài)轉(zhuǎn)移圖;S3.根據(jù)所述狀態(tài)轉(zhuǎn)移圖中的轉(zhuǎn)移條件,在所述內(nèi)核擴展模塊中添加插裝標記;S4.所述內(nèi)核擴展模塊運行至插裝標記位置時觸發(fā)根據(jù)所述使用規(guī)則執(zhí)行的檢測。本發(fā)明能夠?qū)崟r準確的檢測出內(nèi)核擴展模塊運行過程是否存在不安全因素,進而提升操作系統(tǒng)內(nèi)核的安全性,減少不必要的損失,同時降低程序員的工作量。
文檔編號G06F11/36GK103049381SQ201210564708
公開日2013年4月17日 申請日期2012年12月21日 優(yōu)先權(quán)日2012年12月21日
發(fā)明者胡事民, 劉虎球, 馬超 申請人:清華大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宣城市| 通化市| 常熟市| 天水市| 遂宁市| 霍邱县| 安溪县| 勃利县| 教育| 商丘市| 伊金霍洛旗| 湖南省| 隆德县| 周宁县| 启东市| 佳木斯市| 青州市| 桂林市| 宽甸| 都昌县| 广德县| 大丰市| 平南县| 娄烦县| 哈巴河县| 香港 | 利辛县| 惠安县| 凤山市| 绥宁县| 濮阳市| 宣汉县| 垦利县| 营山县| 扶风县| 长武县| 巴马| 古交市| 镇安县| 黔东| 静宁县|