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

正文內容

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

2025-08-26 04:34 本頁面
 

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