漏洞檢測(cè)方法及裝置制造方法
【專利摘要】本發(fā)明公開一種漏洞檢測(cè)方法及裝置,該方法包括:接收需進(jìn)行漏洞檢測(cè)的源代碼;對(duì)接收的源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的變量,得到該變量的初始值;分析獲取的變量的初始值為外部可控輸入時(shí),檢測(cè)出源代碼存在漏洞;相較于現(xiàn)有技術(shù)中,過(guò)于依賴測(cè)試用例的動(dòng)態(tài)黑盒測(cè)試,以及通過(guò)審計(jì)工具進(jìn)行掃描檢測(cè)的靜態(tài)白盒測(cè)試,本發(fā)明實(shí)施例具體提高漏洞檢測(cè)準(zhǔn)確率的有益效果,降低了對(duì)源代碼進(jìn)行檢測(cè)時(shí)的漏洞誤報(bào)率。
【專利說(shuō)明】漏洞檢測(cè)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,還涉及信息安全技術(shù),尤其涉及一種漏洞檢測(cè)方法及裝置。
【背景技術(shù)】
[0002]隨著Web應(yīng)用如社交網(wǎng)站、電子商城、門戶網(wǎng)站、論壇的普及和迅速發(fā)展,Web應(yīng)用的安全問(wèn)題也備受關(guān)注。由于承載web應(yīng)用的硬件設(shè)備、軟件系統(tǒng)、通信協(xié)議等的具體實(shí)現(xiàn)或系統(tǒng)安全策略上存在缺陷,web應(yīng)用在開發(fā)過(guò)程中也會(huì)不可避免地存在漏洞。
[0003]目前常見的檢測(cè)Web漏洞的方法主要是動(dòng)態(tài)黑盒測(cè)試和靜態(tài)白盒掃描;動(dòng)態(tài)黑盒測(cè)試是通過(guò)構(gòu)造大量畸形的測(cè)試用例,訪問(wèn)Web頁(yè)面,然后判斷返回Web頁(yè)面的內(nèi)容;根據(jù)返回的Web頁(yè)面中存在的數(shù)據(jù),檢測(cè)該Web頁(yè)面是否存在漏洞。靜態(tài)白盒掃描是通過(guò)深入程序內(nèi)部代碼結(jié)構(gòu),利用PHP (Profess1nal Hypertext Preprocessor,服務(wù)器端編程語(yǔ)言)代碼審計(jì)工具并結(jié)合設(shè)定的檢測(cè)規(guī)則進(jìn)行檢查。動(dòng)態(tài)黑盒測(cè)試過(guò)于依賴測(cè)試用例,因此很容易造成漏報(bào);而現(xiàn)有的靜態(tài)白盒通過(guò)審計(jì)工具進(jìn)行掃描來(lái)檢測(cè)漏洞的方式,對(duì)漏洞的誤報(bào)率也很高。
【發(fā)明內(nèi)容】
[0004]鑒于此,有必要提供一種漏洞檢測(cè)方法及裝置,以降低對(duì)源代碼進(jìn)行漏洞檢測(cè)的誤報(bào)率。
[0005]本發(fā)明實(shí)施例公開了一種漏洞檢測(cè)方法,包括以下步驟:
[0006]接收需進(jìn)行漏洞檢測(cè)的源代碼;
[0007]對(duì)接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;
[0008]解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值;
[0009]分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞。
[0010]本發(fā)明實(shí)施例還公開一種漏洞檢測(cè)裝置,包括:
[0011]代碼接收模塊,用于接收需進(jìn)行漏洞檢測(cè)的源代碼;
[0012]漏洞檢測(cè)模塊,用于:
[0013]接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值;分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞。
[0014]本發(fā)明實(shí)施例接收需進(jìn)行漏洞檢測(cè)的源代碼;對(duì)接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值;分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞;相較于現(xiàn)有技術(shù)中,過(guò)于依賴測(cè)試用例的動(dòng)態(tài)黑盒測(cè)試,以及通過(guò)審計(jì)工具進(jìn)行掃描檢測(cè)的靜態(tài)白盒測(cè)試,本發(fā)明實(shí)施例具體提高漏洞檢測(cè)準(zhǔn)確率的有益效果,降低了對(duì)源代碼進(jìn)行檢測(cè)時(shí)的漏洞誤報(bào)率。
【專利附圖】
【附圖說(shuō)明】
[0015]圖1是本發(fā)明漏洞檢測(cè)方法第一實(shí)施例流程示意圖;
[0016]圖2是本發(fā)明漏洞檢測(cè)方法第二實(shí)施例流程示意圖;
[0017]圖3是本發(fā)明漏洞檢測(cè)裝置第一實(shí)施例功能模塊示意圖;
[0018]圖4是本發(fā)明漏洞檢測(cè)裝置第二實(shí)施例功能模塊示意圖。
[0019]本發(fā)明實(shí)施例目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
【具體實(shí)施方式】
[0020]以下結(jié)合說(shuō)明書附圖及具體實(shí)施例進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0021]圖1是本發(fā)明漏洞檢測(cè)方法第一實(shí)施例流程示意圖;如圖1所示,本發(fā)明漏洞檢測(cè)方法包括以下步驟:
[0022]步驟S01、接收需進(jìn)行漏洞檢測(cè)的源代碼;
[0023]漏洞檢測(cè)程序接收需進(jìn)行漏洞檢測(cè)的源代碼;本實(shí)施例中,漏洞檢測(cè)程序接收需進(jìn)行漏洞檢測(cè)的源代碼的方式包括但不限于:《eb頁(yè)面提交的源代碼,腳本批量提交的源代碼以及由SVN (subvers1n,版本管理)工具定期提交的源代碼。在實(shí)際的應(yīng)用場(chǎng)景中,web頁(yè)面提交的源代碼通常是由PHP (Profess1nal Hypertext Preprocessor,超級(jí)文本預(yù)處理語(yǔ)言)語(yǔ)言開發(fā)的源代碼。腳本批量提交的源代碼,支持腳本使用CURL的方式提交;其中,QJRL是利用URL (Uniform Resource Locator,統(tǒng)一資源定位符)語(yǔ)法在命令行方式下工作的文件傳輸工具。SVN定期提交是在將SVN項(xiàng)目名稱和路徑存儲(chǔ)在數(shù)據(jù)庫(kù)中,每次定期掃描數(shù)據(jù)進(jìn)行漏洞檢測(cè)時(shí),漏洞檢測(cè)程序從數(shù)據(jù)庫(kù)里取SVN項(xiàng)目路徑,進(jìn)行掃描,從而檢測(cè)是否存在漏洞。
[0024]步驟S02、對(duì)接收的源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;
[0025]漏洞檢測(cè)程序通過(guò)編譯原理的詞法和語(yǔ)法分析過(guò)程,將需檢測(cè)的源代碼轉(zhuǎn)成AST(Abstract Syntax Tree,抽象語(yǔ)法樹);在轉(zhuǎn)換的過(guò)程中,每個(gè)源文件對(duì)應(yīng)一個(gè)AST文件,該AST文件可以為XML (XExrensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)格式的文件;而每個(gè)源文件中的源碼語(yǔ)句將對(duì)應(yīng)轉(zhuǎn)換為AST的一個(gè)節(jié)點(diǎn)。比如,漏洞檢測(cè)程序會(huì)將if O {}這一源碼語(yǔ)句轉(zhuǎn)成一個(gè)ifStmt的節(jié)點(diǎn);if里面的子語(yǔ)句則對(duì)應(yīng)轉(zhuǎn)換到ifStmt下對(duì)應(yīng)的子節(jié)點(diǎn);其中,AST中的每個(gè)節(jié)點(diǎn)中保存了對(duì)應(yīng)的源碼信息,比如行信息等。在詞法和語(yǔ)法的分析過(guò)程中,漏洞檢測(cè)程序設(shè)置該源代碼的觸發(fā)點(diǎn),即檢測(cè)點(diǎn)。
[0026]本實(shí)施例中,對(duì)源代碼進(jìn)行詞法、語(yǔ)法分析可以理解為:詞法分析階段是編譯過(guò)程的第一個(gè)階段,是編譯的基礎(chǔ)。這個(gè)階段的任務(wù)是從左到右一個(gè)字符一個(gè)字符地讀入源程序,即對(duì)構(gòu)成源程序的字符流進(jìn)行掃描然后根據(jù)構(gòu)詞規(guī)則識(shí)別單詞(也稱單詞符號(hào)或符號(hào))。詞法分析程序可以使用Lex等工具自動(dòng)生成。語(yǔ)法分析則是編譯過(guò)程的一個(gè)邏輯階段;語(yǔ)法分析的任務(wù)是在詞法分析的基礎(chǔ)上將單詞序列組合成各類語(yǔ)法短語(yǔ),如“程序”、“語(yǔ)句”、“表達(dá)式”等等。語(yǔ)法分析程序判斷源程序在結(jié)構(gòu)上是否正確,源程序的結(jié)構(gòu)由上下文無(wú)關(guān)文法描述,語(yǔ)法分析程序可以用YACC (Yet Another Compiler,編譯器編譯器)等工具自動(dòng)生成。
[0027]步驟S03、解析語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的變量得到該變量的初始值;
[0028]步驟S04、分析獲取的變量的初始值為外部可控輸入時(shí),檢測(cè)出源代碼存在漏洞。
[0029]漏洞檢測(cè)程序讀取AST信息,解析語(yǔ)法數(shù)信息中配置的各檢測(cè)點(diǎn);比如,獲取各檢測(cè)點(diǎn)與哪些變量相關(guān),即哪些變量能夠控制該檢測(cè)點(diǎn)的行為,然后開始回溯這些變量從哪里來(lái)、被其他什么變量所影響等;漏洞檢測(cè)程序按照上述規(guī)則一直回溯到該變量的最原始的起頭,即獲取到該變量的初始值。如果發(fā)現(xiàn)變量的初始值為外部可控輸入,即該變量的初始值能夠被使用者控制輸入時(shí),則認(rèn)為存在漏洞。漏洞檢測(cè)程序分析獲取的該變量的初始值為外部可控輸入,可以理解為:分析得出該變量的初始值能夠被除了該源代碼合法更改者之外的其他使用控制輸入。比如,在web頁(yè)面上輸入用戶名這一操作,設(shè)置的規(guī)則為輸入的用戶名只能為阿拉伯?dāng)?shù)字和英文字母;若能夠被輸入除阿拉伯?dāng)?shù)字和英文字母之外的其他字符作為用戶名,則識(shí)別該web頁(yè)面存在漏洞。
[0030]本實(shí)施例中,漏洞檢測(cè)程序接收需進(jìn)行漏洞檢測(cè)的源代碼包括:
[0031]漏洞檢測(cè)程序接收到需進(jìn)行漏洞檢測(cè)的源代碼后,將接收到的所有源代碼按照預(yù)設(shè)過(guò)濾規(guī)則進(jìn)行過(guò)濾;該預(yù)設(shè)過(guò)濾規(guī)則可以根據(jù)具體檢測(cè)的源代碼的類型進(jìn)行設(shè)定,也可以由后臺(tái)維護(hù)人員或者檢測(cè)人員根據(jù)具體的代碼檢測(cè)需求進(jìn)行設(shè)置;比如,設(shè)置該預(yù)設(shè)過(guò)濾規(guī)則為,將僅在企業(yè)內(nèi)部使用而不外發(fā)的代碼進(jìn)行過(guò)濾;或者,設(shè)置某一類型的代碼不進(jìn)行過(guò)濾等;本實(shí)施例對(duì)預(yù)設(shè)過(guò)濾規(guī)則的具體內(nèi)容不做限定。在具體的應(yīng)用場(chǎng)景中,比如在某企業(yè)內(nèi)部,對(duì)于確認(rèn)的內(nèi)部項(xiàng)目,將不進(jìn)行后續(xù)的掃描,直接將內(nèi)部項(xiàng)目所涉及的所有代碼進(jìn)行過(guò)濾,提升了代碼的檢測(cè)效率,節(jié)省了代碼開發(fā)的處理時(shí)間。
[0032]本發(fā)明實(shí)施例接收需進(jìn)行漏洞檢測(cè)的源代碼;對(duì)接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值;分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞;相較于現(xiàn)有技術(shù)中,過(guò)于依賴測(cè)試用例的動(dòng)態(tài)黑盒測(cè)試,以及通過(guò)審計(jì)工具進(jìn)行掃描檢測(cè)的靜態(tài)白盒測(cè)試,本發(fā)明實(shí)施例具體提高漏洞檢測(cè)準(zhǔn)確率的有益效果,降低了對(duì)源代碼進(jìn)行檢測(cè)時(shí)的漏洞誤報(bào)率。
[0033]請(qǐng)繼續(xù)參照?qǐng)D1,如圖1所示,步驟S03中,漏洞檢測(cè)程序解析語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量及變量的初始值的過(guò)程中,當(dāng)漏洞檢測(cè)程序獲取到與某一檢測(cè)點(diǎn)相關(guān)聯(lián)的變量后,在回溯該檢測(cè)點(diǎn)相關(guān)聯(lián)的變量的初始值的過(guò)程中,若存在與預(yù)設(shè)安全規(guī)則匹配的操作,則識(shí)別該變量對(duì)應(yīng)的檢測(cè)點(diǎn)不存在漏洞,并停止回溯即停止繼續(xù)獲取所述變量的初始值的操作。比如,漏洞檢測(cè)程序在回溯該檢測(cè)點(diǎn)相關(guān)聯(lián)變量的初始值的過(guò)程的同時(shí),參考安全API (Applicat1n Programming Interface,應(yīng)用程序接口)過(guò)濾規(guī)則,如果回溯過(guò)程中檢測(cè)到某一中間環(huán)節(jié)有經(jīng)過(guò)安全API過(guò)濾,則停止回溯,識(shí)別該變量對(duì)應(yīng)的檢測(cè)點(diǎn)不存在漏洞。
[0034]由于本實(shí)施例漏洞檢測(cè)程序在回溯檢測(cè)點(diǎn)變量的初始值的過(guò)程中,識(shí)別到存在與預(yù)設(shè)安全規(guī)則匹配的操作,并立刻停止繼續(xù)獲取該變量初始值的操作,因此在提高漏洞檢測(cè)準(zhǔn)確率的同時(shí),進(jìn)一步提高了漏洞檢測(cè)的效率。
[0035]圖2是本發(fā)明漏洞檢測(cè)方法第二實(shí)施例流程示意圖;本實(shí)施例與圖1所述實(shí)施例的區(qū)別是,在步驟S04之后,增加了步驟S05 ;本實(shí)施例僅對(duì)步驟S05進(jìn)行具體描述,有關(guān)本發(fā)明漏洞檢測(cè)方法所涉及的其他步驟請(qǐng)參照相關(guān)實(shí)施例的具體描述,在此不再贅述。
[0036]基于圖1所述實(shí)施例的具體描述,如圖2所示,本發(fā)明漏洞檢測(cè)方法在步驟S04、分析獲取的變量的初始值為外部可控輸入時(shí),檢測(cè)出源代碼存在漏洞,之后還包括:
[0037]步驟S05、識(shí)別檢測(cè)出的存在漏洞的源代碼為誤報(bào)時(shí),將誤報(bào)為存在漏洞的源代碼進(jìn)行標(biāo)記,得到被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)。
[0038]漏洞檢測(cè)程序分析獲取的變量的初始值為外部可控輸入,并檢測(cè)出源代碼存在漏洞后,將得到的漏洞數(shù)據(jù)進(jìn)行上報(bào)。當(dāng)檢測(cè)人員得到上報(bào)的漏洞數(shù)據(jù)后,對(duì)所有漏洞數(shù)據(jù)進(jìn)行核查,當(dāng)識(shí)別檢測(cè)出的存在漏洞的源代碼為誤報(bào)時(shí),對(duì)誤報(bào)的漏洞數(shù)據(jù)做出標(biāo)識(shí)。漏洞檢測(cè)程序響應(yīng)檢測(cè)人員的操作,識(shí)別檢測(cè)人員檢測(cè)出的誤報(bào)漏洞數(shù)據(jù),并將誤報(bào)為存在漏洞的源代碼進(jìn)行標(biāo)記,得到被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)。當(dāng)該漏洞檢測(cè)程序接收到需進(jìn)行漏洞檢測(cè)的源代碼時(shí),識(shí)別該源代碼中是否存在有與預(yù)設(shè)過(guò)濾規(guī)則匹配的代碼的同時(shí),識(shí)別接收的源代碼中是否存在被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù),并將識(shí)別出的被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)剔除后,再對(duì)剩余的源代碼進(jìn)行漏洞檢測(cè)。
[0039]進(jìn)一步地,本實(shí)施例漏洞檢測(cè)裝置可以將進(jìn)行漏洞檢測(cè)后存在漏洞的源代碼存儲(chǔ)在數(shù)據(jù)庫(kù)中,并自行對(duì)存在漏洞的源代碼進(jìn)行修復(fù);在修后可對(duì)已修復(fù)漏洞后的源代碼再次進(jìn)行漏洞檢測(cè),如此循環(huán),直至該源代碼中不存在漏洞。
[0040]本實(shí)施例中漏洞檢測(cè)程序識(shí)別需進(jìn)行漏洞檢測(cè)的源代碼中是否存在被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù),并將識(shí)別出的被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)進(jìn)行剔除,同樣達(dá)到了降低漏洞誤報(bào)率的有益效果;同時(shí),提高了漏洞檢測(cè)的效率。
[0041]基于上述實(shí)施例的具體描述,在具體的應(yīng)用場(chǎng)景中,比如,用戶A在開發(fā)完項(xiàng)目代碼后,想驗(yàn)證項(xiàng)目代碼是否存在安全漏洞,則將代碼提交至漏洞檢測(cè)程序,漏洞檢測(cè)程序的檢測(cè)結(jié)果為發(fā)現(xiàn)有幾個(gè)漏洞;則漏洞檢測(cè)程序根據(jù)提交代碼測(cè)試時(shí)登記的負(fù)責(zé)人的信息,將檢測(cè)出的漏洞結(jié)果發(fā)給該用戶A。用戶A仔細(xì)對(duì)每個(gè)漏洞結(jié)果進(jìn)行確認(rèn),對(duì)于確定是系統(tǒng)誤報(bào)的漏洞結(jié)果,進(jìn)行誤報(bào)標(biāo)記,對(duì)于確定是漏洞的結(jié)果,可以根據(jù)提供的漏洞修復(fù)方案,對(duì)漏洞結(jié)果進(jìn)行修復(fù),修復(fù)完成后,再次將新的代碼提交到至漏洞檢測(cè)程序中,則此時(shí)漏洞檢測(cè)程序檢測(cè)出該項(xiàng)目代碼的漏洞結(jié)果變成0,排除了代碼安全隱患。
[0042]又比如,用戶B是負(fù)責(zé)某個(gè)部門的項(xiàng)目代碼的質(zhì)檢人員,想了解目前該部門所有項(xiàng)目的項(xiàng)目代碼安全性,則可以根據(jù)該漏洞檢測(cè)程序?qū)?yīng)提交方式比如腳本提交方式,根據(jù)提供的腳步模板,編寫簡(jiǎn)單的腳本,則漏洞檢測(cè)程序便會(huì)定期對(duì)該部門所有項(xiàng)目的項(xiàng)目代碼進(jìn)行批量提交檢測(cè),對(duì)檢測(cè)出有漏洞結(jié)果的項(xiàng)目,將結(jié)果推送給相關(guān)開發(fā)負(fù)責(zé)人,開發(fā)負(fù)責(zé)人對(duì)漏洞結(jié)果進(jìn)行確認(rèn)和標(biāo)記,并完成修復(fù),下一次定期掃描時(shí),修復(fù)過(guò)和標(biāo)記誤報(bào)的結(jié)果將不再報(bào)出,系統(tǒng)誤報(bào)率降低。
[0043]圖3是本發(fā)明漏洞檢測(cè)裝置第一實(shí)施例功能模塊示意圖;如圖3所示,本發(fā)明漏洞檢測(cè)裝置包括:代碼接收模塊01和漏洞檢測(cè)模塊02。
[0044]代碼接收模塊01,用于接收需進(jìn)行漏洞檢測(cè)的源代碼;
[0045]代碼接收模塊01接收需進(jìn)行漏洞檢測(cè)的源代碼;本實(shí)施例中,代碼接收模塊01接收需進(jìn)行漏洞檢測(cè)的源代碼的方式包括但不限于:《eb頁(yè)面提交的源代碼,腳本批量提交的源代碼以及由SVN工具定期提交的源代碼。在實(shí)際的應(yīng)用場(chǎng)景中,web頁(yè)面提交的源代碼通常是由PHP語(yǔ)言開發(fā)的源代碼。腳本批量提交的源代碼,支持腳本使用CURL的方式提交;其中,CURL是利用URL語(yǔ)法在命令行方式下工作的文件傳輸工具。SVN定期提交是在將SVN項(xiàng)目名稱和路徑存儲(chǔ)在數(shù)據(jù)庫(kù)中,每次定期掃描數(shù)據(jù)進(jìn)行漏洞檢測(cè)時(shí),漏洞檢測(cè)程序從數(shù)據(jù)庫(kù)里取SVN項(xiàng)目路徑,進(jìn)行掃描,從而檢測(cè)是否存在漏洞。
[0046]漏洞檢測(cè)模塊02,用于:接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量及所述變量的初始值;分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞。
[0047]漏洞檢測(cè)模塊02通過(guò)編譯原理的詞法和語(yǔ)法分析過(guò)程,將需檢測(cè)的源代碼轉(zhuǎn)成AST ;在轉(zhuǎn)換的過(guò)程中,每個(gè)源文件對(duì)應(yīng)一個(gè)AST文件,該AST文件可以為XML格式的文件;而每個(gè)源文件中的源碼語(yǔ)句將對(duì)應(yīng)轉(zhuǎn)換為AST的一個(gè)節(jié)點(diǎn)。比如,漏洞檢測(cè)模塊02會(huì)將if O {}這一源碼語(yǔ)句轉(zhuǎn)成一個(gè)ifStmt的節(jié)點(diǎn);if里面的子語(yǔ)句則對(duì)應(yīng)轉(zhuǎn)換到if Stmt下對(duì)應(yīng)的子節(jié)點(diǎn);其中,AST中的每個(gè)節(jié)點(diǎn)中保存了對(duì)應(yīng)的源碼信息,比如行信息等。在詞法和語(yǔ)法的分析過(guò)程中,漏洞檢測(cè)模塊02設(shè)置該源代碼的觸發(fā)點(diǎn),即檢測(cè)點(diǎn)。
[0048]本實(shí)施例中,漏洞檢測(cè)模塊02對(duì)源代碼進(jìn)行詞法、語(yǔ)法分析可以理解為:詞法分析階段是編譯過(guò)程的第一個(gè)階段,是編譯的基礎(chǔ)。這個(gè)階段的任務(wù)是從左到右一個(gè)字符一個(gè)字符地讀入源程序,即對(duì)構(gòu)成源程序的字符流進(jìn)行掃描然后根據(jù)構(gòu)詞規(guī)則識(shí)別單詞(也稱單詞符號(hào)或符號(hào))。詞法分析程序可以使用Lex等工具自動(dòng)生成。語(yǔ)法分析則是編譯過(guò)程的一個(gè)邏輯階段;語(yǔ)法分析的任務(wù)是在詞法分析的基礎(chǔ)上將單詞序列組合成各類語(yǔ)法短語(yǔ),如“程序”、“語(yǔ)句”、“表達(dá)式”等等。語(yǔ)法分析程序判斷源程序在結(jié)構(gòu)上是否正確,源程序的結(jié)構(gòu)由上下文無(wú)關(guān)文法描述,語(yǔ)法分析程序可以用YACCXYet Another Compiler,編譯器編譯器)等工具自動(dòng)生成。
[0049]漏洞檢測(cè)模塊02讀取AST信息,解析語(yǔ)法數(shù)信息中配置的各檢測(cè)點(diǎn);比如,漏洞檢測(cè)模塊02獲取各檢測(cè)點(diǎn)與哪些變量相關(guān),即哪些變量能夠控制該檢測(cè)點(diǎn)的行為,然后開始回溯這些變量從哪里來(lái)、被其他什么變量所影響等;漏洞檢測(cè)模塊02按照上述規(guī)則一直回溯到該變量的最原始的起頭,即獲取到該變量的初始值。如果發(fā)現(xiàn)變量的初始值為外部可控輸入,即該變量的初始值能夠被使用者控制輸入時(shí),漏洞檢測(cè)模塊02則認(rèn)為存在漏洞。漏洞檢測(cè)模塊02分析獲取的該變量的初始值為外部可控輸入,可以理解為:分析得出該變量的初始值能夠被除了該源代碼合法更改者之外的其他使用控制輸入。比如,在web頁(yè)面上輸入用戶名這一操作,設(shè)置的規(guī)則為輸入的用戶名只能為阿拉伯?dāng)?shù)字和英文字母;若能夠被輸入除阿拉伯?dāng)?shù)字和英文字母之外的其他字符作為用戶名,漏洞檢測(cè)模塊02則識(shí)別該web頁(yè)面存在漏洞。
[0050]本實(shí)施例中,代碼接收模塊01接收需進(jìn)行漏洞檢測(cè)的源代碼包括:
[0051]代碼接收模塊01接收到需進(jìn)行漏洞檢測(cè)的源代碼后,將接收到的所有源代碼按照預(yù)設(shè)過(guò)濾規(guī)則進(jìn)行過(guò)濾;該預(yù)設(shè)過(guò)濾規(guī)則可以根據(jù)具體檢測(cè)的源代碼的類型進(jìn)行設(shè)定,也可以由后臺(tái)維護(hù)人員或者檢測(cè)人員根據(jù)具體的代碼檢測(cè)需求進(jìn)行設(shè)置;比如,代碼接收模塊01設(shè)置該預(yù)設(shè)過(guò)濾規(guī)則為,將僅在企業(yè)內(nèi)部使用而不外發(fā)的代碼進(jìn)行過(guò)濾;或者,代碼接收模塊01設(shè)置某一類型的代碼不進(jìn)行過(guò)濾等;本實(shí)施例對(duì)預(yù)設(shè)過(guò)濾規(guī)則的具體內(nèi)容不做限定。在具體的應(yīng)用場(chǎng)景中,比如在某企業(yè)內(nèi)部,對(duì)于確認(rèn)的內(nèi)部項(xiàng)目,將不進(jìn)行后續(xù)的掃描,代碼接收模塊01直接將內(nèi)部項(xiàng)目所涉及的所有代碼進(jìn)行過(guò)濾,提升了代碼的檢測(cè)效率,節(jié)省了代碼開發(fā)的處理時(shí)間。
[0052]本發(fā)明實(shí)施例接收需進(jìn)行漏洞檢測(cè)的源代碼;對(duì)接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量及所述變量的初始值;分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞;相較于現(xiàn)有技術(shù)中,過(guò)于依賴測(cè)試用例的動(dòng)態(tài)黑盒測(cè)試,以及通過(guò)審計(jì)工具進(jìn)行掃描檢測(cè)的靜態(tài)白盒測(cè)試,本發(fā)明實(shí)施例具體提高漏洞檢測(cè)準(zhǔn)確率的有益效果,降低了對(duì)源代碼進(jìn)行檢測(cè)時(shí)的漏洞誤報(bào)率。
[0053]請(qǐng)繼續(xù)參照?qǐng)D3,如圖3所示,漏洞檢測(cè)模塊02解析語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量及變量的初始值的過(guò)程中,當(dāng)漏洞檢測(cè)模塊02獲取到與某一檢測(cè)點(diǎn)相關(guān)聯(lián)的變量后,在回溯該檢測(cè)點(diǎn)相關(guān)聯(lián)的變量的初始值的過(guò)程中,若存在與預(yù)設(shè)安全規(guī)則匹配的操作,則識(shí)別該變量對(duì)應(yīng)的檢測(cè)點(diǎn)不存在漏洞,并停止回溯即停止繼續(xù)獲取所述變量的初始值的操作。比如,漏洞檢測(cè)模塊02在回溯該檢測(cè)點(diǎn)相關(guān)聯(lián)變量的初始值的過(guò)程的同時(shí),參考安全API過(guò)濾規(guī)則,如果回溯過(guò)程中檢測(cè)到某一中間環(huán)節(jié)有經(jīng)過(guò)安全API過(guò)濾,漏洞檢測(cè)模塊02則停止回溯,識(shí)別該變量對(duì)應(yīng)的檢測(cè)點(diǎn)不存在漏洞。
[0054]由于本實(shí)施例漏洞檢測(cè)程序在回溯檢測(cè)點(diǎn)變量的初始值的過(guò)程中,識(shí)別到存在與預(yù)設(shè)安全規(guī)則匹配的操作,并立刻停止繼續(xù)獲取該變量初始值的操作,因此在提高漏洞檢測(cè)準(zhǔn)確率的同時(shí),進(jìn)一步提高了漏洞檢測(cè)的效率。
[0055]圖4是本發(fā)明漏洞檢測(cè)裝置第二實(shí)施例功能模塊示意圖;本實(shí)施例與圖3所述實(shí)施例的區(qū)別是,增加了誤報(bào)標(biāo)記模塊03。本實(shí)施例僅對(duì)誤報(bào)標(biāo)記模塊03進(jìn)行具體描述,有關(guān)本發(fā)明漏洞檢測(cè)裝置所涉及的其他模塊請(qǐng)參照相關(guān)實(shí)施例的具體描述,在此不再贅述。
[0056]基于圖3所述實(shí)施例的具體描述,如圖4所示,本發(fā)明漏洞檢測(cè)裝置還包括誤報(bào)標(biāo)記模塊03 ;
[0057]誤報(bào)標(biāo)記模塊03用于:識(shí)別檢測(cè)出的存在漏洞的源代碼為誤報(bào)時(shí),將誤報(bào)為存在漏洞的所述源代碼進(jìn)行標(biāo)記,得到被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)。
[0058]漏洞檢測(cè)模塊02分析獲取的變量的初始值為外部可控輸入,并檢測(cè)出源代碼存在漏洞后,將得到的漏洞數(shù)據(jù)進(jìn)行上報(bào)。當(dāng)檢測(cè)人員得到上報(bào)的漏洞數(shù)據(jù)后,對(duì)所有漏洞數(shù)據(jù)進(jìn)行核查,當(dāng)識(shí)別檢測(cè)出的存在漏洞的源代碼為誤報(bào)時(shí),對(duì)誤報(bào)的漏洞數(shù)據(jù)做出標(biāo)識(shí)。誤報(bào)標(biāo)記模塊03響應(yīng)檢測(cè)人員的操作,識(shí)別檢測(cè)人員檢測(cè)出的誤報(bào)漏洞數(shù)據(jù),并將誤報(bào)為存在漏洞的源代碼進(jìn)行標(biāo)記,得到被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)。當(dāng)代碼接收模塊01接收到需進(jìn)行漏洞檢測(cè)的源代碼時(shí),代碼接收模塊01識(shí)別該源代碼中是否存在有與預(yù)設(shè)過(guò)濾規(guī)則匹配的源代碼的同時(shí),識(shí)別接收的源代碼中是否存在被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù),并將識(shí)別出的被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)剔除后,再對(duì)剩余的源代碼進(jìn)行漏洞檢測(cè)。
[0059]進(jìn)一步地,本實(shí)施例漏洞檢測(cè)裝置可以將進(jìn)行漏洞檢測(cè)后存在漏洞的源代碼存儲(chǔ)在數(shù)據(jù)庫(kù)中,并自行對(duì)存在漏洞的源代碼進(jìn)行修復(fù);在修后可對(duì)已修復(fù)漏洞后的源代碼再次進(jìn)行漏洞檢測(cè),如此循環(huán),直至該源代碼中不存在漏洞。
[0060]本實(shí)施例中漏洞檢測(cè)程序識(shí)別需進(jìn)行漏洞檢測(cè)的源代碼中是否存在被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù),并將識(shí)別出的被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)進(jìn)行剔除,同樣達(dá)到了降低漏洞誤報(bào)率的有益效果;同時(shí),提高了漏洞檢測(cè)的效率。
[0061]基于上述實(shí)施例的具體描述,在具體的應(yīng)用場(chǎng)景中,比如,用戶A在開發(fā)完項(xiàng)目代碼后,想驗(yàn)證項(xiàng)目代碼是否存在安全漏洞,則將代碼提交至本發(fā)明實(shí)施例所述的漏洞檢測(cè)裝置,漏洞檢測(cè)裝置的檢測(cè)結(jié)果為發(fā)現(xiàn)有幾個(gè)漏洞;則漏洞檢測(cè)裝置根據(jù)提交代碼測(cè)試時(shí)登記的負(fù)責(zé)人的信息,將檢測(cè)出的漏洞結(jié)果發(fā)給該用戶A。用戶A仔細(xì)對(duì)每個(gè)漏洞結(jié)果進(jìn)行確認(rèn),對(duì)于確定是系統(tǒng)誤報(bào)的漏洞結(jié)果,進(jìn)行誤報(bào)標(biāo)記,對(duì)于確定是漏洞的結(jié)果,可以根據(jù)提供的漏洞修復(fù)方案,對(duì)漏洞結(jié)果進(jìn)行修復(fù),修復(fù)完成后,再次將新的代碼提交到至漏洞檢測(cè)裝置中,則此時(shí)漏洞檢測(cè)裝置檢測(cè)出該項(xiàng)目代碼的漏洞結(jié)果變成0,排除了代碼安全隱串
■/Q1、O
[0062]又比如,用戶B是負(fù)責(zé)某個(gè)部門的項(xiàng)目代碼的質(zhì)檢人員,想了解目前該部門所有項(xiàng)目的項(xiàng)目代碼安全性,則可以根據(jù)該漏洞檢測(cè)裝置對(duì)應(yīng)提交方式比如腳本提交方式,根據(jù)提供的腳步模板,編寫簡(jiǎn)單的腳本,則漏洞檢測(cè)裝置便會(huì)定期對(duì)該部門所有項(xiàng)目的項(xiàng)目代碼進(jìn)行批量提交檢測(cè),對(duì)檢測(cè)出有漏洞結(jié)果的項(xiàng)目,將結(jié)果推送給相關(guān)開發(fā)負(fù)責(zé)人,開發(fā)負(fù)責(zé)人對(duì)漏洞結(jié)果進(jìn)行確認(rèn)和標(biāo)記,并完成修復(fù),下一次定期掃描時(shí),修復(fù)過(guò)和標(biāo)記誤報(bào)的結(jié)果將不再報(bào)出,系統(tǒng)誤報(bào)率降低。
[0063]需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
[0064]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0065]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在圖3或圖4所述漏洞檢測(cè)裝置的一個(gè)存儲(chǔ)介質(zhì)(如R0M/RAM、磁碟、光盤)中,圖3或圖4所述漏洞檢測(cè)裝置包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0066]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制其專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,直接或間接運(yùn)用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種漏洞檢測(cè)方法,其特征在于,包括以下步驟: 接收需進(jìn)行漏洞檢測(cè)的源代碼; 對(duì)接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息; 解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值; 分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞。
2.如權(quán)利要求1所述的方法,其特征在于,所述分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞,包括: 分析獲取的所述變量的初始值能夠被使用者控制輸入時(shí),檢測(cè)出所述變量對(duì)應(yīng)的檢測(cè)點(diǎn)存在漏洞。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值,包括: 獲取與某一檢測(cè)點(diǎn)相關(guān)聯(lián)的變量后,在獲取所述變量的初始值的過(guò)程中,若存在與預(yù)設(shè)安全規(guī)則匹配的操作,則識(shí)別所述變量對(duì)應(yīng)的檢測(cè)點(diǎn)不存在漏洞,停止繼續(xù)獲取所述變量的初始值。
4.如權(quán)利要求1或2所述的方法,其特征在于,所述分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞,之后還包括: 識(shí)別檢測(cè)出的存在漏洞的源代碼為誤報(bào)時(shí),將誤報(bào)為存在漏洞的所述源代碼進(jìn)行標(biāo)記,得到被標(biāo)記的誤報(bào)漏洞數(shù)據(jù)。
5.如權(quán)利要求4所述所述的方法,其特征在于,所述接收需進(jìn)行漏洞檢測(cè)的源代碼,包括: 接收已剔除被標(biāo)記的誤報(bào)漏洞數(shù)據(jù)后的需進(jìn)行漏洞檢測(cè)的源代碼。
6.如權(quán)利要求1或2所述的方法,其特征在于,所述接收需進(jìn)行漏洞檢測(cè)的源代碼包括: 接收根據(jù)預(yù)設(shè)過(guò)濾規(guī)則過(guò)濾后的需進(jìn)行漏洞檢測(cè)的源代碼。
7.如權(quán)利要求6所述的方法,其特征在于,所述接收根據(jù)預(yù)設(shè)過(guò)濾規(guī)則過(guò)濾后的需進(jìn)行漏洞檢測(cè)的源代碼,包括: 接收到需進(jìn)行漏洞檢測(cè)的源代碼后,按照預(yù)設(shè)過(guò)濾規(guī)則對(duì)接收到的源代碼進(jìn)行過(guò)濾,將符合所述預(yù)設(shè)過(guò)濾規(guī)則的源代碼去除,僅保留不符合所述預(yù)設(shè)過(guò)濾規(guī)則的源代碼,以對(duì)保留的源代碼進(jìn)行后續(xù)的漏洞檢測(cè)。
8.如權(quán)利要求1或2所述的方法,其特征在于,所述接收需進(jìn)行漏洞檢測(cè)的源代碼包括: 接收web頁(yè)面和/或腳本和/或版本管理程序提交的需進(jìn)行漏洞檢測(cè)的源代碼。
9.一種漏洞檢測(cè)裝置,其特征在于,包括: 代碼接收模塊,用于接收需進(jìn)行漏洞檢測(cè)的源代碼; 漏洞檢測(cè)模塊,用于: 接收的所述源代碼進(jìn)行詞法語(yǔ)法分析并配置漏洞檢測(cè)的檢測(cè)點(diǎn),得到對(duì)應(yīng)的語(yǔ)法樹信息;解析所述語(yǔ)法樹信息中配置的各檢測(cè)點(diǎn),獲取與各檢測(cè)點(diǎn)相關(guān)聯(lián)的變量,并通過(guò)解析獲取的所述變量得到所述變量的初始值;分析獲取的所述變量的初始值為外部可控輸入時(shí),檢測(cè)出所述源代碼存在漏洞。
10.如權(quán)利要求9所述的裝置,其特征在于,所述漏洞檢測(cè)模塊用于: 分析獲取的所述變量的初始值能夠被使用者控制輸入時(shí),檢測(cè)出所述變量對(duì)應(yīng)的檢測(cè)點(diǎn)存在漏洞。
11.如權(quán)利要求9或10所述的裝置,其特征在于,所述漏洞檢測(cè)模塊還用于: 獲取與某一檢測(cè)點(diǎn)相關(guān)聯(lián)的變量后,在獲取所述變量的初始值的過(guò)程中,若存在與預(yù)設(shè)安全規(guī)則匹配的操作,則識(shí)別所述變量對(duì)應(yīng)的檢測(cè)點(diǎn)不存在漏洞,停止繼續(xù)獲取所述變量的初始值。
12.如權(quán)利要求9或10所述的裝置,其特征在于,還包括誤報(bào)標(biāo)記模塊; 所述誤報(bào)標(biāo)記模塊用于:識(shí)別檢測(cè)出的存在漏洞的源代碼為誤報(bào)時(shí),將誤報(bào)為存在漏洞的所述源代碼進(jìn)行標(biāo)記,得到被標(biāo)記為誤報(bào)的漏洞數(shù)據(jù)。
13.如權(quán)利要求12所述的裝置,其特征在于,所述代碼接收模塊還用于: 接收已剔除被標(biāo)記的誤報(bào)漏洞數(shù)據(jù)后的需進(jìn)行漏洞檢測(cè)的源代碼。
14.如權(quán)利要求9或10所述的裝置,其特征在于,所述代碼接收模塊還用于: 接收根據(jù)預(yù)設(shè)過(guò)濾規(guī)則過(guò)濾后的需進(jìn)行漏洞檢測(cè)的源代碼。
15.如權(quán)利要求14所述的裝置,其特征在于,所述代碼接收模塊還用于: 接收到需進(jìn)行漏洞檢測(cè)的源代碼后,按照預(yù)設(shè)過(guò)濾規(guī)則對(duì)接收到的源代碼進(jìn)行過(guò)濾,將符合所述預(yù)設(shè)過(guò)濾規(guī)則的源代碼去除,僅保留不符合所述預(yù)設(shè)過(guò)濾規(guī)則的源代碼,以對(duì)保留的源代碼進(jìn)行后續(xù)的漏洞檢測(cè)。
16.如權(quán)利要求9或10所述的裝置,其特征在于,所述代碼接收模塊還用于: 接收web頁(yè)面和/或腳本和/或版本管理程序提交的需進(jìn)行漏洞檢測(cè)的源代碼。
【文檔編號(hào)】G06F21/57GK104462981SQ201310416757
【公開日】2015年3月25日 申請(qǐng)日期:2013年9月12日 優(yōu)先權(quán)日:2013年9月12日
【發(fā)明者】王培偉, 王金錠, 譚曉光, 陳薇婷, 王岳 申請(qǐng)人:深圳市騰訊計(jì)算機(jī)系統(tǒng)有限公司