999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于權(quán)限驗證圖的Web應(yīng)用訪問控制漏洞檢測

2018-06-26 10:19:34夏志堅彭國軍胡鴻富
計算機工程與應(yīng)用 2018年12期
關(guān)鍵詞:頁面資源檢測

夏志堅,彭國軍,胡鴻富

武漢大學(xué) 計算機學(xué)院,武漢 430072

1 引言

近年來,互聯(lián)網(wǎng)飛速發(fā)展,社交、購物、金融等不同行業(yè)都開始互聯(lián)網(wǎng)化。Web應(yīng)用不斷出現(xiàn),而這些應(yīng)用存儲了大量的用戶隱私數(shù)據(jù),為了保障隱私數(shù)據(jù)的安全性,必須采用嚴格的權(quán)限控制[1]。相比于傳統(tǒng)應(yīng)用的權(quán)限控制,由于http協(xié)議的無狀態(tài)特性,每次請求隱私數(shù)據(jù)都必須進行權(quán)限驗證,因此用戶的每次請求都需要驗證權(quán)限,因而需要更加完善的權(quán)限驗證機制[2]。受限于開發(fā)者的水平和程序邏輯的復(fù)雜性,權(quán)限驗證遺漏或不完全仍然普遍存在于Web應(yīng)用中,導(dǎo)致權(quán)限控制漏洞影響范圍十分廣泛。根據(jù)OWASP(Open Web Application Security)組織公布的數(shù)據(jù),權(quán)限控制漏洞已經(jīng)成為前10大Web應(yīng)用安全漏洞之一[3],權(quán)限控制漏洞已然成為Web應(yīng)用所面臨的主要安全威脅之一。權(quán)限控制漏洞依賴于應(yīng)用本身,不同的應(yīng)用的權(quán)限控制往往在邏輯上有很大不同,而權(quán)限控制漏洞主要分為以下3種情況:

(1)強制訪問:應(yīng)用中訪問某頁面前包含權(quán)限驗證,但未授權(quán)用戶可以通過直接訪問頁面URL繞過權(quán)限驗證。

(2)權(quán)限驗證不當(dāng)或缺失:頁面中包含具有特定權(quán)限的用戶才能訪問的資源,在資源訪問路徑上權(quán)限控制不當(dāng)或缺少權(quán)限控制。

(3)權(quán)限驗證處理邏輯不當(dāng):權(quán)限驗證失敗后,未正確終止當(dāng)前訪問,未授權(quán)用戶仍能訪問敏感資源。

學(xué)術(shù)界針對權(quán)限控制漏洞的檢測做了很多研究,目前主要的檢測方法包括靜態(tài)檢測、動態(tài)檢測以及動靜結(jié)合檢測[4-9],然而目前在效率和準確性上還并不能令人滿意。美國加利福尼亞大學(xué)的孫芳琪等人采用自動推斷隱式權(quán)限控制假設(shè)的技術(shù),構(gòu)建基于角色的站點圖,提取權(quán)限頁面,推測權(quán)限頁面是否能被強制訪問,能夠準確檢測權(quán)限控制漏洞[10],但只能檢測強制訪問類權(quán)限控制漏洞,檢測范圍較窄。在此基礎(chǔ)上,文獻[11]設(shè)計了一種基于應(yīng)用保護狀態(tài)的漏洞模型檢測機,通過識別權(quán)限頁面保護狀態(tài),快速地檢測權(quán)限控制漏洞,能夠檢測強制訪問和部分權(quán)限驗證不當(dāng)或缺失多種權(quán)限控制漏洞,而對權(quán)限驗證后處理邏輯不當(dāng)漏洞則無法檢測。文獻[12]靜態(tài)分析獲取權(quán)限驗證的關(guān)鍵邏輯,在權(quán)限驗證未通過的代碼中插入監(jiān)視代碼,然后在動態(tài)運行時檢測是否有權(quán)限控制漏洞攻擊行為發(fā)生,可以檢測多種類型權(quán)限控制漏洞,但檢測方法依賴于測試集,并且需要較高的系統(tǒng)開銷。

程序可以通過控制流圖抽象表示,選取控制流圖中的權(quán)限驗證節(jié)點和資源節(jié)點可以組成權(quán)限驗證圖,權(quán)限驗證圖中,每個資源對應(yīng)多條權(quán)限驗證路徑,比較每條權(quán)限驗證路徑的驗證權(quán)限與資源訪問權(quán)限,從而檢測資源是否具有權(quán)限控制漏洞。上述3種權(quán)限控制漏洞均可等價為“存在一條或多條權(quán)限驗證路徑的驗證權(quán)限低于相應(yīng)資源的訪問權(quán)限”,因此本文的算法可以覆蓋上述3種權(quán)限控制漏洞。本文提出了一種新的權(quán)限控制漏洞檢測算法,實現(xiàn)了檢測工具,并針對7個流行Web系統(tǒng)進行了安全檢測,發(fā)現(xiàn)了8個已知和未知漏洞。

2 權(quán)限驗證圖與權(quán)限控制漏洞

權(quán)限驗證圖是由起始節(jié)點、終止節(jié)點、資源節(jié)點和權(quán)限驗證節(jié)點組成的無環(huán)有向圖,為了抽象定義權(quán)限驗證圖,有如下定義:

定義1(角色)一個角色擁有一種權(quán)限或者多種權(quán)限,R為權(quán)限集。在大多數(shù)系統(tǒng)中,權(quán)限的分配通過賦予某種角色來實現(xiàn),資源具備某種訪問權(quán)限即為資源能被具有某種權(quán)限的角色訪問。

定義2(資源節(jié)點)資源節(jié)點是對資源進行操作的代碼模塊,現(xiàn)代Web應(yīng)用數(shù)據(jù)主要存儲在數(shù)據(jù)庫中[13],因此資源節(jié)點主要為數(shù)據(jù)庫操作,但也能方便地擴展到文件等操作,資源節(jié)點集合為S。資源節(jié)點的權(quán)限通過權(quán)限表與角色相關(guān)聯(lián),例如從數(shù)據(jù)庫中刪除用戶user1,對應(yīng)的角色為“admin”。

定義3(起始節(jié)點和終止節(jié)點)起始節(jié)點為頁面起始節(jié)點,終止節(jié)點為頁面跳轉(zhuǎn)或終止執(zhí)行函數(shù),起始節(jié)點集合為ST,終止節(jié)點集合為TE。起始節(jié)點和終止節(jié)點驗證權(quán)限為NULL。

定義4(權(quán)限驗證節(jié)點)權(quán)限驗證節(jié)點是驗證訪問用戶是否具有某種權(quán)限或擁有某個角色的代碼模塊,權(quán)限驗證節(jié)點集合為A。權(quán)限驗證節(jié)點的權(quán)限與它所驗證的角色相關(guān),例如if($_COOKIE[“user”]==“admin”)的權(quán)限即為它檢查的角色“admin”的權(quán)限。

權(quán)限驗證圖表示為G=(V,E),其中V為節(jié)點集,V={v|v∈(ST?A?S?TE)}。假設(shè)節(jié)點a,b∈V,a權(quán)限驗證通過后可達b,則稱a有一條T邊到b,記作a→T=b,若a權(quán)限驗證未通過仍然可達b,則稱a有一條F邊到b,記作a→F=b,若a直接到b,則a→T=a→F=b。E={|v1,v2∈V,v1→T=v2?v1→F=v2}。權(quán)限驗證路徑為起始節(jié)點經(jīng)過若干非終止節(jié)點到達資源節(jié)點的一條路徑,權(quán)限驗證路徑為節(jié)點有序序列,資源節(jié)點s的權(quán)限驗證路徑集為:

任意資源節(jié)點存在一條或者多條權(quán)限驗證路徑,權(quán)限驗證路徑上的T邊的源節(jié)點稱為有效權(quán)限驗證節(jié)點,而所有有效權(quán)限驗證節(jié)點的權(quán)限并集則為權(quán)限驗證路徑的驗證權(quán)限。如果用U表示權(quán)限集,資源節(jié)點s∈S的權(quán)限驗證路徑r∈routes的驗證權(quán)限可表示為:

定義5(權(quán)限控制漏洞)如果資源節(jié)點s∈S存在一條驗證權(quán)限為ur?U的權(quán)限驗證路徑r且s對應(yīng)的訪問權(quán)限為us?U ,若us?ur,則資源s的訪問權(quán)限高于驗證權(quán)限,此時擁有權(quán)限低于資源訪問權(quán)限的角色可以通過路徑r訪問資源節(jié)點s,則此時存在針對資源節(jié)點s的權(quán)限控制漏洞。

3 基于權(quán)限驗證圖的權(quán)限控制漏洞檢測算法

控制流圖(CFG)為有向圖G=(N,E,entry,exit),N為節(jié)點集,每個節(jié)點代表一個基本塊。邊集E={|n1,n2∈N 且n1語法可達n2},entry和exit為程序入口和出口節(jié)點。CFG有唯一的入口點和出口點,通過CFG清晰地表示了程序的控制邏輯[14-15]。

通過節(jié)點識別從CFG中分離出定義2~4中的節(jié)點,這些節(jié)點與程序的權(quán)限驗證邏輯相關(guān),依據(jù)節(jié)點間的驗證邏輯關(guān)系,生成通過T邊和F邊連接的權(quán)限驗證圖。因此,權(quán)限驗證圖可以表示頁面的權(quán)限驗證邏輯。由定義4、5可知,權(quán)限驗證圖中每個資源節(jié)點對應(yīng)至少一條權(quán)限路徑,比較資源節(jié)點對應(yīng)的權(quán)限路徑驗證權(quán)限與資源節(jié)點訪問權(quán)限,即可檢測權(quán)限控制漏洞。因此本文算法分為以下兩步:

表1 簡單權(quán)限控制實例

(1)解析php源碼,生成CFG,遞歸遍歷CFG,識別節(jié)點,并生成權(quán)限驗證圖。

(2)深度優(yōu)先搜索權(quán)限驗證圖,獲取每個資源節(jié)點對應(yīng)的所有權(quán)限路徑,計算權(quán)限路徑驗證權(quán)限,并與資源節(jié)點訪問權(quán)限比較,判定是否存在權(quán)限控制漏洞。

3.1 節(jié)點識別

權(quán)限驗證節(jié)點分為頁面內(nèi)權(quán)限驗證節(jié)點和頁面間權(quán)限驗證節(jié)點,頁面內(nèi)權(quán)限驗證節(jié)點由分支語句(if-then-else或者switch)和包含權(quán)限變量的條件表達式組成,權(quán)限變量預(yù)先配置;頁面間權(quán)限驗證節(jié)點包括封裝權(quán)限驗證節(jié)點的函數(shù)和頁面。表1中“delete.php”包含3個權(quán)限驗證節(jié)點,行4的“else if(!checkAdmin($_COOKIE[‘username’])))”和行3的“if(!$logined)”為頁面權(quán)限驗證節(jié)點,行1的“include(‘a(chǎn)ccess.php’)”為頁面間權(quán)限驗證節(jié)點,在“access.php”中包含了頁面內(nèi)權(quán)限驗證模塊。

頁面間權(quán)限驗證節(jié)點均可等價為if(cond),其中cond=expr1 op1 expr2 op2 expr3…,而expri為不包含邏輯運算符&&和||的簡單條件表達式,權(quán)限變量格式為{變量名,參數(shù),驗證通過取值,權(quán)限}(變量不為函數(shù)時,參數(shù)取值為NULL),例如列表1中“{$_COOKIE[‘isLogined’],NULL,1,‘isLogined’}”,表示 cookie 中變量isLogined值為1時,權(quán)限高于“user的角色可通過驗證。頁面內(nèi)權(quán)限驗證節(jié)點算法:

算法1頁面內(nèi)權(quán)限驗證節(jié)點識別算法

輸入:條件表達式cond,權(quán)限變量集合authVar。

輸出:節(jié)點驗證權(quán)限w,條件表達式值val。

1.DisAuthNode(cond,authVar)

2. w=NULL,op=&&,val=True,op=&&,val=True

3. while cond

4.expr=GetFirstExpr(cond)//取第一個簡單表達式

5. for var in expr

6. if var in authVar or DataFlaw(var) in authVar

7.tmp=GetVar(authVar,var)

8. replace(expr,var,tmp)//用 tmp 值替換expr中的var

9. if expr

10. op=||,w=tmp&&w

11. val=val op expr,delete expr from cond

12. if cond==NULL

13. break

14. op=op1,delete op1 from cond

15.return[w,var]

算法1中,第3~14行遍歷條件表達式cond中的所有簡單條件表達式。首先取第一個簡單條件表達式expr,然后針對expr中的所有變量進行后向數(shù)據(jù)流分析,判斷變量是否為權(quán)限變量。如果是,則用權(quán)限變量值替換expr中變量,計算expr值。將expr值與條件表達式值val進行運算,然后刪除當(dāng)前expr,接著替換運算符op,并刪除op,重復(fù)直到cond為NULL。最終返回節(jié)點驗證權(quán)限和條件表達式值。

頁面間權(quán)限驗證節(jié)點是函數(shù)或頁面封裝了頁面間權(quán)限驗證節(jié)點,因此只需要對函數(shù)調(diào)用或include等包含的頁面,重復(fù)上述步驟即可。頁面間權(quán)限驗證節(jié)點驗證權(quán)限為其包含的頁面內(nèi)權(quán)限節(jié)點權(quán)限。

本文中的資源節(jié)點主要為數(shù)據(jù)庫操作,包括刪除、更新、插入、查詢某一張表,針對不同表的不同操作對應(yīng)的角色也不同,因此可以用三元組(操作,表,角色)表示一個資源節(jié)點。預(yù)先配置時,可以根據(jù)系統(tǒng)的權(quán)限表生成資源權(quán)限表,每一項包含一個三元組。識別資源節(jié)點時,首先識別數(shù)據(jù)庫操作函數(shù),然后從函數(shù)參數(shù)中匹配操作和表,如果匹配到,則將這個代碼模塊視為資源節(jié)點。

每個頁面均有唯一的起始節(jié)點,而終止節(jié)點則包括頁面結(jié)束,return語句,exit和die等終止執(zhí)行函數(shù),以及頁面跳轉(zhuǎn)語句。頁面跳轉(zhuǎn)語句包含多種形式,表2給出了頁面跳轉(zhuǎn)實例。文獻[10]提出了一個鏈接提取的綜合性方法,本文只需要識別跳轉(zhuǎn)語句,因此首先匹配API函數(shù),例如“Header、echo、print”,然后在函數(shù)參數(shù)中匹配是否包含本地或遠程地址。當(dāng)匹配到Header函數(shù)時,下一個節(jié)點必須為終止執(zhí)行函數(shù),否則不識別為終止節(jié)點。

表2 PHP頁面跳轉(zhuǎn)方法實例

3.2 生成權(quán)限驗證圖

生成權(quán)限驗證圖只需要遍歷CFG圖,識別節(jié)點類型,將節(jié)點加入權(quán)限驗證圖,然后遞歸得到節(jié)點的T邊和F邊指向的權(quán)限驗證節(jié)點,其中資源節(jié)點的T邊和F邊指向同一節(jié)點,終止節(jié)點的T邊和F邊指向NULL。算法如下:

算法2權(quán)限驗證圖生成算法

輸入:CFG,權(quán)限變量checkNodes,資源集s。

輸出:權(quán)限驗證圖Graph。

1.GraphBuilder(CFG,checkNodes,s)

2. node=curr=CFG->start

3. if curr==exit||!curr||curr為終止節(jié)點

4. node->T=node->F=NULL

5. else if curr是權(quán)限驗證節(jié)點

6. node->T=GraphBuilder(curr->True,checkNodes,s)

7.node->F=GraphBuilder(curr->False,checkNodes,s)

8. else if curr是資源節(jié)點

9. node->T=node->F=GraphBuilder(curr->child,checkNodes,s)

10. else

11. node=GraphBuilder(curr->child,checkNodes,s)

12.return(Graph=node)

算法2為遞歸算法,取CFG中首節(jié)點,判斷節(jié)點類型,如果節(jié)點為終止節(jié)點、exit或者NULL,則將節(jié)點node的T邊和F邊均指向NULL。curr→True、curr→False表示當(dāng)前節(jié)點跳轉(zhuǎn)條件為真或假的子節(jié)點,curr→child表示當(dāng)前節(jié)點的子節(jié)點(無跳轉(zhuǎn))。節(jié)點為權(quán)限驗證節(jié)點、資源節(jié)點時,分別將node的T邊和F邊指向不同的節(jié)點。節(jié)點如果為其他類型節(jié)點,則忽略當(dāng)前節(jié)點,直接遞歸當(dāng)前節(jié)點子節(jié)點。圖1是通過上述算法生成的一個權(quán)限驗證圖,從圖中可以清晰地獲取從起始節(jié)點到資源節(jié)點的所有路徑。

圖1 權(quán)限驗證圖

3.3 漏洞檢測

根據(jù)定義5,通過深度優(yōu)先遍歷權(quán)限驗證圖,獲取起始節(jié)點到目標資源節(jié)點的所有權(quán)限驗證路徑的權(quán)值,每獲取一條權(quán)限驗證路徑的權(quán)值后,比較權(quán)值與資源訪問節(jié)點權(quán)值,從而判斷漏洞是否存在,具體算法如下:

算法3漏洞檢測算法

輸入:權(quán)限驗證圖G,目標資源節(jié)點s。

輸出:漏洞vul。

1.DetectVul(G,s)

2. stack.push(G->start) //入棧

3. G->start->visited=1

4. do

5. node=GetChild(stack.top) //獲取節(jié)點的非空未被訪問子節(jié)點

6. if node==s

7. var=stack.traverse()//k為棧底節(jié)點,k+1為下一個節(jié)點,如果k->F!=k+1,tmp=tmp||k,重復(fù)直到k為NULL,返回tmp

8. if var

9. report vul,return

10. else if node!=NULL

11. stack.push(node)

12. node->visited=1

13. continue

14. stack.pop()//棧頂節(jié)點被訪問,出棧

15.while!stack.isEmpty()

在算法3中,建立了一個節(jié)點棧stack,首先將權(quán)限驗證圖G的首節(jié)點入棧,并設(shè)置為已訪問,然后第4~15行為對G的深度優(yōu)先搜索。當(dāng)搜索到目標資源節(jié)點s時,此時棧中所有節(jié)點即為s的一條權(quán)限路徑,從棧底遍歷整個棧,根據(jù)定義4,計算權(quán)限路徑驗證權(quán)限var,比較var與資源節(jié)點s.var,如果有漏洞則報告漏洞。如果節(jié)點不為s且不為NULL,則將節(jié)點入棧,然后直接跳轉(zhuǎn)到循環(huán)開始,否則當(dāng)前節(jié)點出棧,棧為NULL時,循環(huán)遍歷結(jié)束。通過該算法,圖1中start到s的權(quán)限驗證路徑總共有兩條,即{start,1,2,3,s}和{start,1,2,4,s}。因為3→T=3→F=s,所以計算權(quán)值時,節(jié)點3不是有效權(quán)限節(jié)點,因此,它們的有效權(quán)限驗證節(jié)點集合為{1,2}、{1,4},假設(shè)權(quán)限驗證節(jié)點1和4的權(quán)限均小于資源節(jié)點s的權(quán)限,則存在一條權(quán)限驗證路徑{start,1,2,4,s}的權(quán)值小于資源節(jié)點s的權(quán)限,因此資源節(jié)點s存在權(quán)限控制漏洞,報告漏洞信息。遍歷所有的資源節(jié)點后,就可以完成對頁面的漏洞檢測。通過構(gòu)建權(quán)限驗證圖的方法,可以簡化程序邏輯,將無規(guī)則的權(quán)限驗證邏輯轉(zhuǎn)換為清晰的權(quán)限驗證路徑,從而較大地提高權(quán)限控制漏洞分析效率和準確度。

4 實驗與結(jié)果分析

4.1 漏洞檢測工具

為了驗證算法有效性,本文實現(xiàn)了權(quán)限控制漏洞檢測工具:AccVulHunter。PHP-Parser是由PHP編寫的一個語法分析器,直接生成抽象語法樹(AST),功能簡單,易于擴展,因此,將PHP-Parser作為語法分析器。整個工具包括全局信息收集、CFG生成部分、權(quán)限驗證圖構(gòu)建、權(quán)限控制漏洞檢測和漏洞報告等5個部分。整個工具的系統(tǒng)結(jié)構(gòu)如圖2。

AccVulHunter針對權(quán)限控制漏洞的檢測主要步驟為:

步驟1將頁面分為功能頁面和定義頁面,初始化程序主要參數(shù)。

步驟2對功能頁面進行分析,生成AST抽象語法樹,然后遍歷AST,收集全局信息,并構(gòu)建CFG控制流圖。

步驟3遍歷CFG圖,識別權(quán)限驗證節(jié)點和資源訪問節(jié)點,根據(jù)權(quán)限驗證圖構(gòu)建算法構(gòu)建頁面權(quán)限驗證圖。

步驟4判斷頁面所有資源訪問是否存在權(quán)限控制漏洞,如果存在通過xml報告漏洞位置信息和對應(yīng)資源信息。

圖2 AccVulHunter工具系統(tǒng)結(jié)構(gòu)圖

4.2 實驗與結(jié)果分析

為了測試漏洞檢測算法的有效性,本文選取了4個Web開源應(yīng)用mantisbt-master、SlimCMS、redaxscript和DDCMS以及在文獻[6-7]中測試的3個Web應(yīng)用SCARF、PHP Calendars、PHPOLL。

實驗的結(jié)果如表3所示,總共報告漏洞12個,經(jīng)過人工確認漏洞數(shù)為8個,確認漏洞中未知漏洞2個,已知漏洞6個。AccVulHunter在SCARF、PHPCalendars中各檢測到了1個已知權(quán)限控制漏洞,分別為CVE-2006-5909和CVE-2010-0380。SCARF的“generaloptions.php”中缺少權(quán)限驗證節(jié)點“require_admin()”,導(dǎo)致任意角色可以編輯應(yīng)用配置,而PHPCalendars的instll.php中可以編輯系統(tǒng)配置,然而并未驗證用戶權(quán)限,因此存在權(quán)限控制漏洞。文獻[10]中的工具在PHPPOLL中檢測到了3個新的漏洞,在“modifica_configurazione.php”、“modifica_votanti.php”、“modifica_band.php”中檢測到了權(quán)限控制漏洞,而本文工具檢測出了“modifica_votanti.php”中缺乏權(quán)限驗證,導(dǎo)致用戶可以修改其他用戶信息,另外兩個漏洞由于版本更新已修補。這3個漏洞屬于均為強制訪問權(quán)限控制漏洞。

SlimCMS中的“redirect.php”中包含插入新管理員的資源節(jié)點,但在頁面中被未發(fā)現(xiàn)權(quán)限驗證節(jié)點,因此檢測出了一個權(quán)限驗證缺失的漏洞(CVE-2008-5708)。Redaxscript中檢測到了1個權(quán)限控制漏洞,在“admin_center.php”中,不同權(quán)限用戶屬于不同組,在生成新用戶中,雖然驗證了用戶是否有權(quán)注冊為“admin”,但是沒有驗證用戶注冊的組,因此可以通過將用戶組改為管理組,使得普通用戶具有管理員權(quán)限,這個漏洞屬于權(quán)限驗證不當(dāng)?shù)穆┒础?/p>

AccVulHunter還在DDCMS和SlimCMS中檢測到了兩個未知漏洞,在DDCMS中,通過權(quán)限變量“$admin”驗證管理員,在頁面“wap_admin_cg.php”中,雖然通過權(quán)限節(jié)點“if($admin!=1)”進行了權(quán)限驗證,但是當(dāng)權(quán)限驗證失敗時,調(diào)用header函數(shù)跳轉(zhuǎn),AccVulHunter在header函數(shù)后未匹配到exit或die函數(shù),因此并未視為終止節(jié)點,因此仍能訪問到后續(xù)節(jié)點,因此存在一個權(quán)限驗證處理邏輯不當(dāng)?shù)穆┒础T赟limCMS中,系統(tǒng)通過查詢管理員用戶名和用戶提交用戶名是否一致,判斷用戶權(quán)限,而在“install.php”中可以重新設(shè)置管理員用戶名和密碼,但是在文件中并未對創(chuàng)建者身份進行驗證(數(shù)據(jù)庫用戶名密碼直接調(diào)用配置文件,未進行驗證)。如果攻擊者重新訪問該頁面,則可以創(chuàng)建新的管理員用戶名和密碼,從而提升權(quán)限,因此存在一個強制訪問權(quán)限控制漏洞。

本文工具采用了基于權(quán)限驗證圖的檢測算法。該算法定義了將權(quán)限控制漏洞的檢測轉(zhuǎn)為資源節(jié)點對應(yīng)的權(quán)限路徑驗證權(quán)限與資源節(jié)點訪問權(quán)限的比較的檢測模型,而前述4種權(quán)限控制漏洞中均存在一條權(quán)限低于資源節(jié)點權(quán)限的權(quán)限路徑,因此本文的檢測模型可以覆蓋這四種權(quán)限控制漏洞。文獻[10]中算法只判斷頁面是否包含防護,并使用強制訪問進行確認,因此只能覆蓋強制訪問權(quán)限控制漏洞。而文獻[11]中,忽略了權(quán)限驗證失敗后的處理邏輯檢查,導(dǎo)致無法檢測權(quán)限驗證處理邏輯不當(dāng)?shù)臋?quán)限控制漏洞。表4是本文工具與文獻[10-11]中工具的漏洞發(fā)現(xiàn)類型比較,從表中可以看出文獻[10]中工具只能檢測強制訪問權(quán)限控制漏洞,文獻[11]的ACMA可以檢測除權(quán)限驗證處理邏輯不當(dāng)以外的權(quán)限控制漏洞,而AccVulHunter可以檢測全部4種權(quán)限控制漏洞。因此通過實驗對比,可以證明本文算法具有更好的漏洞檢測廣度。

表3 AccVulHunter掃描結(jié)果

表4 漏洞發(fā)現(xiàn)類型比較

AccVulHunter掃描Web系統(tǒng)的時間與系統(tǒng)的文件數(shù)和資源節(jié)點數(shù)以及權(quán)限節(jié)點數(shù)正相關(guān),由于權(quán)限驗證節(jié)點識別涉及到更多的數(shù)據(jù)流分析和過程間分析,相對于另外兩者,掃描時間相對較長,未來通過優(yōu)化節(jié)點識別,仍然可以提高算法分析速度。

綜合實驗結(jié)果看,本文的權(quán)限控制漏洞檢測算法可以快速、有效地發(fā)現(xiàn)權(quán)限控制漏洞,相對于已有方法,能夠檢測更多的權(quán)限控制漏洞,具有更高的實用性。另外由于相對更大的代碼分析量,AccVulHunter在時間消耗上較大,但相對于人工審查,仍然能較大提高分析速率。

5 結(jié)束語

本文提出了一種基于權(quán)限驗證圖的訪問控制漏洞檢測算法,通過靜態(tài)識別權(quán)限驗證節(jié)點,建立權(quán)限驗證圖,生成權(quán)限驗證路徑,快速有效地檢測權(quán)限控制漏洞,相對于已有方法,擴大了權(quán)限控制漏洞檢測范圍并提升了檢測準確性。設(shè)計了漏洞檢測工具AccVulhunter,針對7個Web內(nèi)容管理系統(tǒng)進行了漏洞檢測實驗,證明了漏洞檢測算法的有效性,下一步將優(yōu)化數(shù)據(jù)流分析和節(jié)點識別算法,進一步加快工具掃描速度。

[1]劉金曉,馬素霞,齊林海.Web應(yīng)用系統(tǒng)中權(quán)限控制的研究與實現(xiàn)[J].計算機工程與設(shè)計,2008,29(10):2550-2553.

[2]Kolovski V,Hendler J,Parsia B.Analyzing web access control policies[C]//International Conference on World Wide Web(WWW 2007),Banff,Alberta,Canada,May 2007:677-686.

[3]OWASP.Owasp top 10-2013 the ten most critical Web application security risks.[EB/OL].[2013-06-12].https://www.owasp.org/index.php/Top10#OWASP_Top_10_for_2013.

[4]Jovanovic N,Kruegel C,Kirda E.Precise alias analysis for static detection of web application vulnerabilities[C]//The Workshop on Programming Languages&Analysis for Security,2006:27-36.

[5]Su Z,Wassermann G.The essence of command injection attacksin web applications[J].ACM Sigplan Notices,2006,41(1):372-382.

[6]Dalton M,Kozyrakis C,Zeldovich N.Nemesis:Preventing authentication & accesscontrolvulnerabilitiesin Web applications[C]//Proceedings Usenix Security Symposium,Montreal,Canada,2009:267-282.

[7]Stergiopoulos G,Katsaros P,Gritzalis D.Automated detection of logical errors in programs[C]//International Conference on Risks and Security of Internet and Systems,2014:35-51.

[8]Gauthier F,Letarte D,Lavoie T,et al.Extraction and comprehension of moodle’s access control model:A case study[C]//Conference on Privacy,Security and Trust(PST 2011),Montreal,Québec,Canada,2011:44-51.

[9]Letarte D,Merlo E.Extraction of inter-procedural simple role privilege models from PHP code[C]//Working Conference on Reverse Engineering,2009(Wcre’09),2009:187-191.

[10]Sun F,Xu L,Su Z.Static detection of access control vulnerabilities in Web applications[J].Shanxi Architecture,2011,2:6392-6396.

[11]Gauthier F,Merlo E.Fast detection of access control vulnerabilities in PHP Applications[J].Reverse Engineering,2012:247-256.

[12]Zhu J,Chu B,Lipford H.Detecting privilege escalation attacks through instrumenting Web application source code[C]//Proceedings of the 21st ACM on Symposium on Access Control Models and Technologies,2016:73-80.

[13]Liu T,Lin Y,Wen X,et al.BindingDB:A Web-accessible database of experimentally determined protein-ligand binding affinities[J].Nucleic Acids Research,2007,35(S1):198-201.

[14]Hills M.Streamlining control flow graph construction with DCFlow[C]//International Conference on Software Language Engineering.[S.l.]:Springer International Publishing,2014:322-341.

[15]Nandi A,Mandal A,Atreja S,et al.Anomaly detection using program control flow graph mining from execution logs[C]//Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,2016:215-224.

猜你喜歡
頁面資源檢測
大狗熊在睡覺
刷新生活的頁面
基礎(chǔ)教育資源展示
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
一樣的資源,不一樣的收獲
資源回收
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
小波變換在PCB缺陷檢測中的應(yīng)用
主站蜘蛛池模板: 亚洲伦理一区二区| 一级毛片在线播放免费观看| 色综合久久无码网| 欧美日韩亚洲国产| 亚洲日本韩在线观看| 午夜视频免费一区二区在线看| 五月天久久综合| 国产色婷婷视频在线观看| 91精品专区国产盗摄| 久久国产精品77777| 国产精品美人久久久久久AV| 911亚洲精品| 九九热视频精品在线| 久久网综合| 国产毛片久久国产| 亚洲日韩精品综合在线一区二区| 久久中文电影| 国产精品视频久| 大乳丰满人妻中文字幕日本| 国产精品午夜福利麻豆| 日韩精品亚洲精品第一页| 久久久久国产精品嫩草影院| 成人噜噜噜视频在线观看| 激情综合婷婷丁香五月尤物| 成人毛片在线播放| 久久永久免费人妻精品| 四虎影视库国产精品一区| 一本无码在线观看| 亚洲成人一区二区| 国产精品一区在线麻豆| 国产在线精品香蕉麻豆| 国产日韩丝袜一二三区| 亚洲男人天堂网址| 日韩AV无码一区| 国产女人爽到高潮的免费视频 | 欧洲一区二区三区无码| 国产黄网永久免费| 久久综合九九亚洲一区| 亚洲二区视频| 亚洲成人免费看| 色偷偷男人的天堂亚洲av| 日本午夜影院| 99久久国产自偷自偷免费一区| 亚洲欧州色色免费AV| 亚洲AV无码乱码在线观看代蜜桃| 国产在线观看第二页| 特级精品毛片免费观看| 九九久久99精品| 欧美日韩国产系列在线观看| 国产91视频免费| 亚洲日韩Av中文字幕无码| 国产成人亚洲毛片| 亚洲综合色婷婷| 69av在线| 亚洲无码一区在线观看| 国产欧美中文字幕| 无码精品福利一区二区三区| 亚洲一级毛片在线播放| 色AV色 综合网站| 特级欧美视频aaaaaa| 国产主播一区二区三区| 99福利视频导航| 国产三级韩国三级理| 久久免费视频播放| 伊人久久婷婷| 91视频区| 日韩欧美国产三级| 亚洲欧美国产高清va在线播放| 国产偷倩视频| 国产91透明丝袜美腿在线| 国产精品久久久久久久久久98| 国内精品小视频在线| 伊人久久大香线蕉aⅴ色| 亚洲欧美日韩视频一区| 久久永久视频| 国产无人区一区二区三区| av一区二区三区在线观看| 伊人色综合久久天天| 国产一区二区精品高清在线观看| 免费jizz在线播放| 在线观看av永久| 国产内射一区亚洲|