freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

角色沙盒入侵檢測系統(tǒng)中解除競態(tài)條件的設(shè)計與實現(xiàn)(編輯修改稿)

2025-08-26 04:34 本頁面
 

【文章內(nèi)容簡介】 近訪問優(yōu)先原則,將已讀取的客體訪問權(quán)限信息保留在訪問控制信息通用緩存中。這樣下次再訪問到該客體時就可以直接從內(nèi)存中讀取,不用再到安全策略庫中去查找了。這樣做可以幫助我們在很大程度上提高入侵檢測系統(tǒng)的工作效率。因此,系統(tǒng)調(diào)用處理模塊首先向訪問控制信息通用緩存發(fā)出決策請求,如果訪問控制信息通用緩存有相應客體的訪問權(quán)限信息,則直接返回處理結(jié)果;否則,訪問控制信息通用緩存向用戶級的安全策略發(fā)出決策請求,接收處理結(jié)果,更新訪問控制信息通用緩存,并將處理結(jié)果返回系統(tǒng)調(diào)用處理模塊。四 競態(tài)條件競態(tài)條件表現(xiàn)為在多進程或多線程共享數(shù)據(jù)的情況下,由于進程或者線程的執(zhí)行順序程序的不同,而導致程序最終運行結(jié)果的不同 [16]。下面是一個簡單的導致競態(tài)條件的例子:int count = 0。Thread_A(…) Thread_B(…){ {………. ……….count++。 count。………. ……….} }這個例子說明了一般的最明顯的出現(xiàn)競態(tài)條件的情形。但在實際中,我所遇到的很多競態(tài)條件要比這種情況隱蔽和復雜許多。要正確構(gòu)建出一個系統(tǒng),就不得不對其中所有可能出現(xiàn)的競態(tài)條件加以考慮。在構(gòu)建以截獲系統(tǒng)調(diào)用為基礎(chǔ)的角色沙盒入侵檢測系統(tǒng)時,往往會遇到許多競態(tài)條件。這是因為我們所構(gòu)建的系統(tǒng)中權(quán)限檢查和系統(tǒng)訪問授權(quán)都不是原子操作,這就會使檢測系統(tǒng)中進程的運行展現(xiàn)出無法預測的、對事件間相對時間的排列順序的致命相依性 [12]。這些有時也被稱為 timeofcheck/timeofuse 漏洞 [17]。下面是一個產(chǎn)生競態(tài)條件基本的輪廓:1. 根據(jù)當前的系統(tǒng)中各個進程運行的狀態(tài),入侵檢測系統(tǒng)根據(jù)安全策略,授權(quán)允許A 操作執(zhí)行,而入侵檢測系統(tǒng)做出這一決策所根據(jù)的當前系統(tǒng)狀態(tài)是很容易發(fā)生變化的。 2 .在 A 操作獲得授權(quán)而并未執(zhí)行之前,該系統(tǒng)狀態(tài)發(fā)生變化,導致 A 變成非法操作(即 A 的意義在此背景下發(fā)生了變化) 。 3 .A 操作被操作系統(tǒng)執(zhí)行,而在正常的情況下,根據(jù)當前的系統(tǒng)狀態(tài),A 操作是違反安全策略的,因而入侵檢測系統(tǒng)是不允許執(zhí)行該操作的。這樣的競態(tài)條件是角色沙盒入侵檢測系統(tǒng)中的一個重要的問題。會嚴重影響入侵檢測系統(tǒng)的性能,提高漏檢率,并且常常會被黑客利用來欺騙入侵檢測系統(tǒng),以此繞過入侵檢測系統(tǒng)來達到入侵的目的。通常,入侵檢測系統(tǒng)會根據(jù)易變的共享系統(tǒng)狀態(tài)來決定系統(tǒng)調(diào)用操作的執(zhí)行,如果狀態(tài)發(fā)生變化將會從根本上改變對系統(tǒng)調(diào)用的影響。在以下幾節(jié),我們以參數(shù)競爭、符號鏈接競爭和共享存儲空間競爭為例進行說明。 參數(shù)競爭如果一個系統(tǒng)調(diào)用的參數(shù)已經(jīng)通過了系統(tǒng)調(diào)用處理模塊的審核,但在執(zhí)行系統(tǒng)調(diào)用之前,這個參數(shù)被另一個進程所修改,就會發(fā)生參數(shù)競爭。如果將系統(tǒng)調(diào)用參數(shù)存放在內(nèi)存中多個進程都可以訪問到的區(qū)域內(nèi),就可能發(fā)生參數(shù)競爭。如下所示的進程運行狀態(tài),是一個角色沙盒入侵檢測系統(tǒng)中可能發(fā)生參數(shù)競爭的例子。假設(shè)角色沙盒安全策略庫中的安全策略是允許進程 A 以只讀方式訪問/tmp/foo,不允許對其他文件進行訪問。1 .進程 A 調(diào)用 open(path,O_RDONLY),其中 path 是/tmp/foo 。2 .角色沙盒的執(zhí)行模塊截獲進程 A 的系統(tǒng)調(diào)用,并將其傳遞給系統(tǒng)調(diào)用處理模塊,等待系統(tǒng)調(diào)用處理模塊對其進行審核。 3 .系統(tǒng)調(diào)用處理模塊從 A 的存儲區(qū)域讀取路徑,對照安全策略及進程 A 的角色權(quán)限,確定/tmp/foo 可以被打開,于是允許執(zhí)行模塊繼續(xù)執(zhí)行該系統(tǒng)調(diào)用。4 .進程 B 將路徑修改為指向/etc/shadow。 ,執(zhí)行打開文件的系統(tǒng)調(diào)用,打開 /etc/shadow文件。從而違反了系統(tǒng)的安全策略。上述參數(shù)競爭的過程可以用以下程序表示出:define MAX_PATH 20 //宏定義最長路徑名的字符個數(shù)define O_RDONLY 1 //宏定義 O_RDONLY 的值為 1char pname[MAX_PATH]。 //聲明路徑名數(shù)組 pname 為全局變量void process_A(void) //進程 A{pname=/tem/foo。SdBox_exe_open(pname,O_RDONLY)。 //角色沙盒入侵檢測系統(tǒng)截獲 open 系統(tǒng)調(diào)用,通過訪問控制信息通用緩存或全策略庫判斷是否允許以只讀方式打開/tem/foo,如果允許則執(zhí)行,否則不執(zhí)行}void process_B(void) //進程 B{pname=/etc/shadow。 //修改系統(tǒng)調(diào)用參數(shù),即路徑名 pname 的值}int SdBox_exe_open(char *path, int oflag) //角色沙盒入侵檢測系統(tǒng)截獲 open 系統(tǒng)調(diào)用,通過訪問控制信息通用緩存或安全策略庫判斷是否允許執(zhí)行 open 系統(tǒng)調(diào)用,如果允許則執(zhí)行,否則不執(zhí)行。{int i。i=SdBox_check_open(path, oflag)。 //通過訪問控制信息通用緩存或安全策略庫判斷是否允許執(zhí)行 open 系統(tǒng)調(diào)用if(i==1) //如果返回值為 1,則表示允許執(zhí)行該系統(tǒng)調(diào)用 { open(path, oflag)。 printf(File %s is opened,*path)。 exit(1)。 }else //返回值不為 1,則不允許該系統(tǒng)調(diào)用執(zhí)行 { printf(Cannot open file\n)。 exit(0)。 }}int Sdbox_check_open(char *ptr int ofl) //模擬通過訪問控制信息通用緩存或安全策略庫判斷是否允許執(zhí)行 open 系統(tǒng)調(diào)用{sleep(2)。 //進程休眠 2 秒if( strcmp( *ptr,*pname)==0) //比較文件名,由此確定是否執(zhí)行調(diào)用 { exit(1)。 //參數(shù)符合安全策略,返回 1,允許繼續(xù)執(zhí)行} else exit(0)。 //參數(shù)不符合安全策略,返回 0,不允許繼續(xù)執(zhí)行 }include 。 include sys/。 main () //主函數(shù),使 A 進程和 B 進程并發(fā)執(zhí)行{ pid_t pid。 if((pid=fork())0) { process_A(void) 。 exit(0)。 } else if (pid == 0) { process_B(void)。 exit(0)。 } else { printf(fork error\n)。 exit(0)。 }} 在上面的程序中,SdBox_exe_open() 函數(shù)表示角色沙盒入侵檢測系統(tǒng)截獲 open 系統(tǒng)調(diào)用,通過訪問控制信息通用緩存或安全策略庫判斷是否允許執(zhí)行 open 系統(tǒng)調(diào)用。而我們用 Sdbox_check_open( )模擬通過訪問控制信息通用緩存或安全策略庫判斷是否允許執(zhí)行 open 系統(tǒng)調(diào)用,用 sleep(2)替代了讀取安全策略的過程,這是因為本文的研究重點只是角色沙盒入侵檢測系統(tǒng)中的競態(tài)條件,而用這些函數(shù)就足以說明我們所要表示的問題。運行該程序的輸出結(jié)果依賴于進程 A 與進程 B 的運行順序,并不是一成不變的,由此我們可以清晰的觀察到系統(tǒng)中出現(xiàn)的參數(shù)競爭和其所導致的安全問題。一般來說,參數(shù)競爭只會發(fā)生在系統(tǒng)調(diào)用參數(shù)非立即數(shù)的情況下。立即數(shù)系統(tǒng)調(diào)用參數(shù)一旦被送入操作系統(tǒng)的寄存器,立即會被系統(tǒng)調(diào)用截獲程序復制進入內(nèi)核。用戶空間的進程只能通過 ptrace 和其他追蹤接口篡改在內(nèi)核中的立即數(shù)參數(shù)。非立即數(shù)參數(shù),例如路徑名和 Socket 地址等,均不能立即從用戶存儲區(qū)復制到內(nèi)核。這就在一個系統(tǒng)調(diào)用已經(jīng)提出并且其調(diào)用參數(shù)已經(jīng)通過系統(tǒng)調(diào)用處理模塊的審核后,但參數(shù)尚未復制到內(nèi)核前,為黑客實施攻擊造成了一個可乘之機。像這樣的參數(shù)競爭,一般會在共享全局變量的情況下發(fā)生。例如上面程序中的路徑名 pname,實質(zhì)上是進程 A 和 B 所共享的全局變量。例如在 Linux 中支持共享存儲器的機制包括:SYSV 共享存儲設(shè)備 mmap 和通過克隆系統(tǒng)調(diào)用創(chuàng)建多線程之間的共享內(nèi)存 [6]。像 ptrace 這類樣調(diào)試接口,會允許一個進程修改其他進程的內(nèi)存,也必須加以考慮。 符號鏈接競爭符號鏈接競爭 [17]是在 Linux 系統(tǒng)中的一個常見問題。如果某個進程中所用到符號鏈接所指向的文件已經(jīng)通過了角色沙盒入侵檢測系統(tǒng)的檢測授權(quán),而在該進程對此符號鏈接指向的文件訪問發(fā)生之間,如果符號鏈接被修改而指向另一個不同文件,就會發(fā)生符號鏈接競爭。下面給出一個角色沙盒入侵檢測系統(tǒng)中發(fā)生符號鏈接競爭的例子。假設(shè)角色沙盒入侵檢測系統(tǒng)中的安全策略庫中的安全策略是:進程 A 有對/tmp/foo 和 /tmp/dar 進行讀寫操作的權(quán)限,而且有對/tmp/baz 進行讀操作的權(quán)限。假設(shè)最初的/tmp/foo和/tmp/dar 符號鏈接指向同一個文件。下面給出一個會導致競態(tài)條件的進程推進順序:1 .進程 A 調(diào)用 open(/tmp/foo, O_RDWR)。2 .角色沙盒入侵檢測系統(tǒng)中的執(zhí)行模塊截獲系統(tǒng)調(diào)用,并將其傳遞給系統(tǒng)調(diào)用處理模塊。 A 對/tmp/foo 和/tmp/dar 的權(quán)限,發(fā)現(xiàn)這一系統(tǒng)調(diào)用是符合安全策略的,于是通知執(zhí)行模塊執(zhí)行該系統(tǒng)調(diào)用。 B 刪除/tmp/foo,并創(chuàng)建一個新的符號鏈接/tmp/foo,使其指向/tmp/baz(假設(shè)進程 B 擁有此權(quán)限) 。 A 中 open(/tmp/foo,O_RDWR) 操作,從而進程 A 對/tmp/baz 的只讀權(quán)限提升為了讀寫權(quán)限。在上述的例子中,進程 A 明顯違反了沙盒模型策略庫中的安全策略,它現(xiàn)在同時擁有了對/tmp/baz 的讀寫訪問權(quán)限。而角色沙盒入侵檢測系統(tǒng)卻不能檢測出進程 A 的越權(quán)行為。其實在這個例子中,進程 B 不一定必須在系統(tǒng)調(diào)用處理模塊完成對進程 A 的檢查授權(quán)后立即修改/tmp/f
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1