一種檢測終端源代碼安全的方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種檢測終端源代碼安全的方法、裝置及系統(tǒng),其中,方法包括:獲取待檢測源代碼,對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼轉化為控制流程圖;根據(jù)預設的缺陷規(guī)則集,從所述控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖;遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷所述程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。本發(fā)明實現(xiàn)了對待檢測源代碼的自動分析,發(fā)現(xiàn)了應用系統(tǒng)現(xiàn)有和潛在的安全問題,在有效的降低缺陷分析誤報率和漏報率的同時,提高了檢測效率。
【專利說明】
一種檢測終端源代碼安全的方法、裝置及系統(tǒng)
技術領域
[0001] 本發(fā)明涉及互聯(lián)網安全領域,尤其是涉及一種檢測終端源代碼安全的方法、裝置及系統(tǒng)。【背景技術】
[0002] 在應用系統(tǒng)軟件中很多地方都有可能存在安全缺陷(漏洞),代碼審核是對應用系統(tǒng)的源代碼進行全方位的檢查,從而實現(xiàn)對應用系統(tǒng)安全性的檢測?,F(xiàn)有的解決方案主要是通過源碼服務,使用Fortify和Coverity進行源碼缺陷分析,確保每次上線代碼的合法合規(guī)。但是Fortify和Coverity兩種工具誤報漏報率高,檢測效率低,經常出現(xiàn)掃描過程中崩潰的現(xiàn)象。
【發(fā)明內容】
[0003] 為了能夠實現(xiàn)對待檢測源代碼的自動分析,發(fā)現(xiàn)應用系統(tǒng)現(xiàn)有和潛在的安全問題,在有效的降低缺陷分析誤報率和漏報率的同時,提高檢測效率,本發(fā)明提供了一種檢測終端源代碼安全的方法、裝置及系統(tǒng)。
[0004] 為了實現(xiàn)上述目的,本發(fā)明提供了一種檢測終端源代碼安全的方法,其中,所述方法包括:
[0005] 獲取待檢測源代碼,對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼轉化為控制流程圖;
[0006] 根據(jù)預設的缺陷規(guī)則集,從所述控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖;
[0007] 遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷所述程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。
[0008] 可選的,所述獲取待檢測源代碼的具體步驟為:接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。
[0009] 可選的,所述對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼轉化為控制流程圖的具體步驟為:對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼生成抽象語法樹,然后進一步將所述抽象語法樹生成控制流程圖。
[0010] 可選的,所述進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點之后,所述方法還包括:將所述潛在缺陷點形成缺陷報告,得到分析結果。
[0011] 可選的,所述將所述潛在缺陷點形成缺陷報告,得到分析結果之后,所述方法還包括:將所述分析結果上傳至文件服務器,由所述文件服務器將所述分析結果回傳至所述集中調度平臺,由所述集中調度平臺將所述分析結果進行分類,存入至數(shù)據(jù)庫。
[0012] 依據(jù)本發(fā)明的另一個方面,還提供了一種用于檢測終端源代碼安全的裝置,所述裝置包括:解析模塊,用于獲取待檢測源代碼,對所述待檢測源代碼進行詞法和語法解析, 將所述待檢測源代碼轉化為控制流程圖;第一處理模塊,用于根據(jù)預設的缺陷規(guī)則集,從所述控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖;第二處理模塊,用于遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷所述程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。
[0013]可選的,所述裝置還包括接收模塊,用于接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。
[0014]可選的,所述解析模塊進一步用于,對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼生成抽象語法樹,然后進一步將所述抽象語法樹生成控制流程圖。
[0015]可選的,所述裝置還包括輸出模塊,用于將所述潛在缺陷點形成缺陷報告,得到分析結果。
[0016]可選的,所述裝置還包括上傳模塊,用于將所述分析結果上傳至文件服務器,由所述文件服務器將所述分析結果回傳至所述集中調度平臺,由所述集中調度平臺將所述分析結果進行分類,存入至數(shù)據(jù)庫。
[0017]依據(jù)本發(fā)明的另一個方面,還提供了一種用于檢測終端源代碼安全的系統(tǒng),所述系統(tǒng)包括一個或多個用于檢測終端源代碼安全的裝置,每一所述裝置的所述第一處理模塊中所提取的所述預定缺陷的缺陷點集合,形成為預設的缺陷規(guī)則集的擴展缺陷規(guī)則集。
[0018]可選的,所述系統(tǒng)還包括:包含有待檢測源代碼的終端;集中調度平臺,用于接收所述終端上傳的待檢測源代碼,并分析所述待檢測源代碼的缺陷類型,根據(jù)所述待檢測源代碼的缺陷類型將所述待檢測源代碼下發(fā)至一個或多個所述裝置;文件服務器,用于接收一個或多個的所述裝置上傳的分析結果,并將所述分析結果回傳至所述集中調度平臺;數(shù)據(jù)庫,用于接收并存儲所述集中調度平臺進行分類后的分析結果。
[0019]本發(fā)明的有益效果是:
[0020]本發(fā)明通過預設的缺陷規(guī)則集,從待檢測源代碼的控制流程圖中提取預定缺陷的缺陷點集合,并通過遍歷每個預定缺陷的缺陷點的程序依賴圖,找到程序依賴圖中的未經過凈化的數(shù)據(jù)污染點,最后將該數(shù)據(jù)污染點作為潛在缺陷點輸出。本發(fā)明通過預設的缺陷規(guī)則集,能夠實現(xiàn)對待檢測源代碼的自動分析,發(fā)現(xiàn)待檢測源代碼中的潛在缺陷點即發(fā)現(xiàn)應用系統(tǒng)中潛在的安全問題。另外,通過遍歷預定缺陷的缺陷點的程序依賴圖,可以有效降低缺陷分析的誤報率和漏報率,提高待檢測源代碼的檢測效率。
【附圖說明】
[0021]圖1表示本發(fā)明的實施例中檢測終端源代碼安全的方法的主要步驟流程圖;
[0022]圖2表示本發(fā)明的實施例中檢測終端源代碼安全的方法的詳細步驟流程圖;
[0023]圖3表示本發(fā)明的實施例中用于檢測終端源代碼安全的裝置的結構框圖;以及
[0024]圖4表示本發(fā)明的實施例中用于檢測終端源代碼安全的系統(tǒng)的結構框圖。
【具體實施方式】
[0025]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0026]如圖1所示,為本發(fā)明的實施例中檢測終端源代碼安全的方法的主要步驟流程圖,該方法主要包括如下步驟:
[0027]步驟S101,獲取待檢測源代碼,對待檢測源代碼進行詞法和語法解析,將待檢測源代碼轉化為控制流程圖。
[0028]在本步驟中,對終端源代碼進行安全檢測的首要任務是對待檢測源代碼進行詞法和語法解析,將待檢測源代碼轉化為控制流程圖。具體的,在對待檢測源代碼進行詞法和語法解析時,可以先將待檢測源代碼轉化為抽象語法樹,然后進一步將抽象語法樹生成控制流程圖,其中,控制流程圖描述了程序的潛在可執(zhí)行路徑,且控制流程圖更易于進行靜態(tài)分析;此外,還可以在控制流程圖上進行數(shù)據(jù)流和控制流分析,其中,基于語義的缺陷分析能夠發(fā)現(xiàn)變量未初始化、變量未使用、函數(shù)未使用以及死代碼等代碼質量問題,而基于數(shù)據(jù)流和控制流分析結果的污染傳播分析能夠發(fā)現(xiàn)SQL注入、XSS、命令注入和DOS等常見的安全缺陷。在此需要說明的是,待檢測源代碼可以是C、C++、Java、PHP、Python、Perl、JavaScript、JSP等多種語言的待檢測源代碼。
[0029]具體的,在對終端源代碼進行安全檢測之前,首先需要獲取待檢測源代碼。可選的,在獲取待檢測源代碼的過程中,終端將待檢測源代碼上傳至集中調度平臺,由集中調度平臺根據(jù)待檢測源代碼的缺陷類型進行分類;最后接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。
[0030]步驟S102,根據(jù)預設的缺陷規(guī)則集,從控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖。
[0031]在本步驟中,首先需要獲取預設的缺陷規(guī)則集,具體的,可以根據(jù)不同的檢測需求提供不同的預設的缺陷規(guī)則集,例如可以提供結構化查詢語言SQL、跨站腳本攻擊XSS、命令注入和DOS等常見的安全缺陷的缺陷規(guī)則集。在此需要說明的是,由于缺陷規(guī)則集為一些預先收集并配置的編程規(guī)范,因此,缺陷規(guī)則集是可以進行擴展的。
[0032]在獲取預設的缺陷規(guī)則集之后,就可以根據(jù)預設的缺陷規(guī)則集從待檢測源代碼的控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷的缺陷點集合中的每個缺陷點構建程序依賴圖,該程序依賴圖記錄了可能影響缺陷點執(zhí)行的語句集合,并且描述了這些語句之間的控制依賴關系和數(shù)據(jù)依賴關系;并且該程序依賴圖是在待檢測源代碼的控制流程圖的基礎上生成的,待檢測源代碼的安全檢測就是在每個缺陷點的程序依賴圖上進行的。其中,具體的,預定缺陷指的是不同缺陷類型的程序缺陷,例如變量未初始化、變量未使用、函數(shù)未使用及時死代碼等代碼質量問題的程序缺陷,再例如,SQL注入、XSS、命令注入和DOS等常見的安全缺陷。另外,預定缺陷的缺陷點集合中的缺陷點表示可能會存在安全隱患的函數(shù)調用或其他操作,例如,函數(shù)StrcpyO如果使用不當可能會造成緩沖區(qū)溢出漏洞,因此調用StrcpyO的語句會被認為是缺陷點;而對數(shù)組的引用,如果下標的數(shù)值大于數(shù)組本身的大小,可能會造成數(shù)組越界,因此數(shù)組引用語句也會被認為是缺陷點。
[0033]步驟S103,遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。
[0034]在本步驟中,遍歷每個預定缺陷的缺陷點集合中每個缺陷點的程序依賴圖,判斷程序依賴圖中是否存在未經過凈化的數(shù)據(jù)污染點,若判斷程序依賴圖中存在未經過凈化的程序污染點,則將未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。具體的,數(shù)據(jù)污染點指的是那些可以被惡意用戶控制的數(shù)據(jù),如用戶輸入、網絡數(shù)據(jù)包、用戶控制的文件等,而未經過凈化的數(shù)據(jù)污染點指的是那些未經過過濾操作的數(shù)據(jù)污染點,過濾操作用于消除數(shù)據(jù)污染點中的不可信部分,使得經過過濾操作后的數(shù)據(jù)污染點在傳遞給缺陷點時,不會引發(fā)錯誤。
[0035] 具體的,將未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點之后,可以將潛在缺陷點形成缺陷報告,得到分析結果。其中,可以將潛在缺陷點結合完整的缺陷規(guī)則集生成待檢測源代碼的缺陷報告,然后將缺陷報告的詳細信息展示給用戶,在缺陷報告中,可以詳細列出缺陷類型、缺陷的危害程度、缺陷所違反的規(guī)則、缺陷傳播路徑、缺陷的觸發(fā)途徑,缺陷點、數(shù)據(jù)污染點在待檢測源代碼中的位置、數(shù)據(jù)從數(shù)據(jù)污染點傳遞到缺陷點的路徑信息和可行的解決方案等。此外,在得到分析結果之后,可以將分析結果上傳至文件服務器,由文件服務器將分析結果回傳至集中調度平臺,由集中調度平臺將分析結果進行分類,并存入至數(shù)據(jù)庫。
[0036]在對待檢測源代碼進行安全檢測的過程中,通過預設的缺陷規(guī)則集,實現(xiàn)了待檢測源代碼的自動分析,發(fā)現(xiàn)了待檢測源代碼中的潛在缺陷點。另外,通過遍歷預定缺陷的缺陷點的程序依賴圖,有效降低了程序缺陷分析的誤報率和漏報率,提高了待檢測源代碼的檢測效率。
[0037]下面,更加系統(tǒng)的介紹檢測終端源代碼安全的方法。
[0038] 如圖2所示,為本發(fā)明的實施例中檢測終端源代碼安全的方法的詳細步驟流程圖。
[0039] 步驟S201,解析待檢測源代碼。
[0040]在本步驟中,對終端源代碼進行安全檢測的首要任務是對待檢測源代碼進行詞法和語法解析,生成中間表達形式,以方便后續(xù)的待檢測源代碼分析。其中,中間表達形式有抽象語法樹、控制流程圖和程序依賴圖,抽象語法樹是待檢測源代碼的樹狀表示,控制流程圖描述了程序的潛在可執(zhí)行路徑,程序依賴圖則描述了程序語句之間的控制依賴和數(shù)據(jù)依賴關系。具體的,在對待檢測源代碼進行詞法和語法解析時,可以先將待檢測源代碼轉化為抽象語法樹,然后進一步將抽象語法樹生成控制流程圖,其中,控制流程圖描述了程序的潛在可執(zhí)行路徑,且控制流程圖更易于進行靜態(tài)分析;此外,還可以在控制流程圖上進行數(shù)據(jù)流和控制流分析,其中,基于語義的缺陷分析能夠發(fā)現(xiàn)變量未初始化、變量未使用、函數(shù)未使用以及死代碼等代碼質量問題,而基于數(shù)據(jù)流和控制流分析結果的污染傳播分析能夠發(fā)現(xiàn)SQL注入、XSS、命令注入和DOS等常見的安全缺陷。在此需要說明的是,待檢測源代碼可以是C、C++、Java、PHP、Python、Perl、JavaScript、JSP等多種語言的待檢測源代碼。
[0041] 具體的,在對終端源代碼進行安全檢測之前,首先需要獲取待檢測源代碼??蛇x的,在獲取待檢測源代碼的過程中,終端將待檢測源代碼上傳至集中調度平臺,由集中調度平臺根據(jù)待檢測源代碼的缺陷類型進行分類;最后接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。
[0042] 步驟S202,根據(jù)預設的缺陷規(guī)則集,提取預定缺陷的缺陷點集合。
[0043]在本步驟中,首先需要獲取預設的缺陷規(guī)則集,具體的,可以根據(jù)不同的檢測需求提供不同的預設的缺陷規(guī)則集,例如可以提供結構化查詢語言SQL、跨站腳本攻擊XSS、命令注入和DOS等常見的安全缺陷的缺陷規(guī)則集。在此需要說明的是,由于缺陷規(guī)則集為一些預先收集并配置的編程規(guī)范,因此,缺陷規(guī)則集是可以進行擴展的。
[0044]在獲取預設的缺陷規(guī)則集之后,就可以根據(jù)預設的缺陷規(guī)則集從待檢測源代碼的控制流程圖中提取預定缺陷的缺陷點集合。具體的,預定缺陷指的是不同缺陷類型的程序缺陷,例如變量未初始化、變量未使用、函數(shù)未使用及時死代碼等代碼質量問題的程序缺陷,再例如,SQL注入、XSS、命令注入和DOS等常見的安全缺陷。另外,預定缺陷的缺陷點集合中的缺陷點表示可能會存在安全隱患的函數(shù)調用或其他操作,例如,函數(shù)StrcpyO如果使用不當可能會造成緩沖區(qū)溢出漏洞,因此調用StrcpyO的語句會被認為是缺陷點;而對數(shù)組的引用,如果下標的數(shù)值大于數(shù)組本身的大小,可能會造成數(shù)組越界,因此數(shù)組引用語句也會被認為是缺陷點。
[0045]步驟S203,為每個預定缺陷的缺陷點構建程序依賴圖,并遍歷程序依賴圖。
[0046]在本步驟中,若缺陷點集合內沒有缺陷點,即缺陷點集合為空,則檢測終端源代碼安全的過程結束;若缺陷點集合內具有缺陷點,即缺陷點集合不為空,則為每個預定缺陷的缺陷點集合中的缺陷點構建程序依賴圖,并遍歷程序依賴圖。具體的,程序依賴圖記錄了可能影響缺陷點執(zhí)行的語句集合,并且描述了這些語句之間的控制依賴關系和數(shù)據(jù)依賴關系;并且該程序依賴圖是在待檢測源代碼的控制流程圖的基礎上生成的,待檢測源代碼的安全檢測就是在每個缺陷點的程序依賴圖上進行的。
[0047]步驟S204,將未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。
[0048]判斷程序依賴圖中是否存在未經過凈化的數(shù)據(jù)污染點,如果不存在,則進入判斷缺陷點集合是否為空的過程;如果存在,則將未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。具體的,數(shù)據(jù)污染點指的是那些可以被惡意用戶控制的數(shù)據(jù),如用戶輸入、網絡數(shù)據(jù)包、用戶控制的文件等,而未經過凈化的數(shù)據(jù)污染點指的是那些未經過過濾操作的數(shù)據(jù)污染點,過濾操作用于消除數(shù)據(jù)污染點中的不可信部分,使得經過過濾操作后的數(shù)據(jù)污染點在傳遞給缺陷點時,不會引發(fā)錯誤。
[0049]步驟S205,將潛在缺陷點形成缺陷報告。
[0050]在本步驟中,可以將潛在缺陷點形成缺陷報告,得到分析結果。其中,可以將潛在缺陷點結合完整的缺陷規(guī)則集生成待檢測源代碼的缺陷報告,然后將缺陷報告的詳細信息展示給用戶,在缺陷報告中,可以詳細列出缺陷類型、缺陷的危害程度、缺陷所違反的規(guī)則、缺陷傳播路徑、缺陷的觸發(fā)途徑,缺陷點、數(shù)據(jù)污染點在待檢測源代碼中的位置、數(shù)據(jù)從數(shù)據(jù)污染點傳遞到缺陷點的路徑信息和可行的解決方案等。此外,在得到分析結果之后,可以將分析結果上傳至文件服務器,由文件服務器將分析結果回傳至集中調度平臺,由集中調度平臺將分析結果進行分類,并存入至數(shù)據(jù)庫。
[0051]在對待檢測源代碼進行安全檢測的過程中,通過預設的缺陷規(guī)則集,實現(xiàn)了待檢測源代碼的自動分析,發(fā)現(xiàn)了待檢測源代碼中的潛在缺陷點。另外,通過遍歷預定缺陷的缺陷點的程序依賴圖,有效降低了程序缺陷分析的誤報率和漏報率,提高了待檢測源代碼的檢測效率。
[0052]如圖3所示,為本發(fā)明的實施例中用于檢測終端源代碼安全的裝置300的結構框圖,該裝置300包括:
[0053]解析模塊301,用于獲取待檢測源代碼,對待檢測源代碼進行詞法和語法解析,將待檢測源代碼轉化為控制流程圖;第一處理模塊302,用于根據(jù)預設的缺陷規(guī)則集,從控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖;第二處理模塊303,用于遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。
[0054]可選的,裝置還包括接收模塊,用于接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。
[0055]可選的,解析模塊301進一步用于,對待檢測源代碼進行詞法和語法解析,將待檢測源代碼生成抽象語法樹,然后進一步將抽象語法樹生成控制流程圖。
[0056]可選的,裝置還包括輸出模塊,用于將潛在缺陷點形成缺陷報告,得到分析結果。
[0057]可選的,裝置還包括上傳模塊,用于將分析結果上傳至文件服務器,由文件服務器將分析結果回傳至集中調度平臺,由集中調度平臺將分析結果進行分類,存入至數(shù)據(jù)庫。
[0058]如圖4所示,為本發(fā)明的實施例中用于檢測終端源代碼安全的系統(tǒng)400的結構框圖,系統(tǒng)400包括:
[0059]—個或多個用于檢測終端源代碼安全的裝置300,每一裝置的第一處理模塊301 中所提取的預定缺陷的缺陷點集合,形成為預設的缺陷規(guī)則集的擴展缺陷規(guī)則集。
[0060]可選的,系統(tǒng)400還包括:包含有待檢測源代碼的終端401 ;集中調度平臺402,用于接收終端401上傳的待檢測源代碼,并分析待檢測源代碼的缺陷類型,根據(jù)待檢測源代碼的缺陷類型將待檢測源代碼下發(fā)至一個或多個裝置;文件服務器403,用于接收一個或多個的裝置上傳的分析結果,并將分析結果回傳至集中調度平臺402 ;數(shù)據(jù)庫404,用于接收并存儲集中調度平臺402進行分類后的分析結果。
[0061]在本系統(tǒng)中,終端401將待檢測源代碼上傳至集中調度平臺402,以供集中調度平臺402對待檢測源代碼進行進一步處理。集中調度平臺402接收終端401上傳的待檢測源代碼,分析待檢測源代碼的缺陷類型,并根據(jù)待檢測源代碼的缺陷類型將待檢測源代碼下發(fā)至一個或多個用于檢測終端源代碼安全的裝置300,具體的,每個用于檢測終端源代碼安全的裝置300依據(jù)裝置的多少可以檢測一種或多種預定缺陷,當用于檢測終端源代碼安全的裝置300的數(shù)量足夠時,每個裝置可以檢測一種預定缺陷;而當用于檢測終端源代碼安全的裝置300的數(shù)據(jù)不足時,每個裝置可以檢測多種類型的預定缺陷。當每個用于檢測終端源代碼安全的裝置300完成集中調度平臺402下發(fā)的任務后,將得到的分析結果上傳至文件服務器403,文件服務器403用于存儲分析結果,并將分析結果回傳至集中調度平臺 402,在不影響待檢測源代碼安全檢測工作的情況下,文件服務器403和用于檢測終端源代碼安全的裝置300可以部署在同一臺服務器上。集中調度平臺402接收分析結果,并執(zhí)行去重操作,即將重復的分析結果刪除,最后,集中調度平臺402將收集到的程序缺陷根據(jù)類型進行分類,并將分類后的程序缺陷存儲至數(shù)據(jù)庫404中??蛇x的,由于文件服務器403和數(shù)據(jù)庫404均為存儲設備,因此,文件服務器403和數(shù)據(jù)庫404也可以設置在同一個存儲設備上??蛇x的,集中調度平臺402可以將程序缺陷返回至終端401,由終端401進行程序缺陷的展示,終端401可以展示待檢測源代碼的檢測結果,其中,展示的內容可以包括:程序缺陷類型、缺陷的危害程度、缺陷所違反的規(guī)則、缺陷傳播路徑、可執(zhí)行的解決方案等。
[0062]用于檢測終端源代碼安全的系統(tǒng)支持了集群的方式部署了檢測終端源代碼安全的裝置,使得檢測終端源代碼安全的裝置由集中調度平臺統(tǒng)一管理,實現(xiàn)了管理的統(tǒng)一化; 另外,集中調度平臺接收并分發(fā)檢測任務,充分利用了現(xiàn)有資源,實現(xiàn)了高度并行化,提高了檢測效率;此外,該系統(tǒng)中的檢測終端源代碼安全的裝置具有程序缺陷檢測的功能、集中調度平臺具有缺陷審計的功能,便于各檢測任務的檢測和管理;此外,該系統(tǒng)能夠支持C、C++、Java、PHP、Python、Perl、JavaScript、JSP 等多種語言的程序缺陷檢測。
[0063]以上所述的是本發(fā)明的優(yōu)選實施方式,應當指出對于本技術領域的普通人員來說,在不脫離本發(fā)明所述的原理前提下還可以作出若干改進和潤飾,這些改進和潤飾也在本發(fā)明的保護范圍內。
【主權項】
1.一種檢測終端源代碼安全的方法,其特征在于,所述方法包括: 獲取待檢測源代碼,對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼轉化為控制流程圖; 根據(jù)預設的缺陷規(guī)則集,從所述控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖; 遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷所述程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。2.根據(jù)權利要求1所述的方法,其特征在于,所述獲取待檢測源代碼的具體步驟為: 接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。3.根據(jù)權利要求1所述的方法,其特征在于,所述對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼轉化為控制流程圖的具體步驟為: 對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼生成抽象語法樹,然后進一步將所述抽象語法樹生成控制流程圖。4.根據(jù)權利要求2所述的方法,其特征在于,所述進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點之后,所述方法還包括: 將所述潛在缺陷點形成缺陷報告,得到分析結果。5.根據(jù)權利要求4所述的方法,其特征在于,所述將所述潛在缺陷點形成缺陷報告,得到分析結果之后,所述方法還包括: 將所述分析結果上傳至文件服務器,由所述文件服務器將所述分析結果回傳至所述集中調度平臺,由所述集中調度平臺將所述分析結果進行分類,存入至數(shù)據(jù)庫。6.一種用于檢測終端源代碼安全的裝置,其特征在于,所述裝置包括: 解析模塊,用于獲取待檢測源代碼,對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼轉化為控制流程圖; 第一處理模塊,用于根據(jù)預設的缺陷規(guī)則集,從所述控制流程圖中提取預定缺陷的缺陷點集合,并為每個預定缺陷構建缺陷點的程序依賴圖; 第二處理模塊,用于遍歷每個預定缺陷的缺陷點的程序依賴圖,判斷所述程序依賴圖中存在未經過凈化的數(shù)據(jù)污染點時,進一步將所述未經過凈化的數(shù)據(jù)污染點作為潛在缺陷點。7.根據(jù)權利要求6所述的裝置,其特征在于,所述裝置還包括接收模塊,用于接收集中調度平臺根據(jù)待檢測源代碼的缺陷類型下發(fā)的待檢測源代碼。8.根據(jù)權利要求6所述的裝置,其特征在于,所述解析模塊進一步用于,對所述待檢測源代碼進行詞法和語法解析,將所述待檢測源代碼生成抽象語法樹,然后進一步將所述抽象語法樹生成控制流程圖。9.根據(jù)權利要求7所述的裝置,其特征在于,所述裝置還包括輸出模塊,用于將所述潛在缺陷點形成缺陷報告,得到分析結果。10.根據(jù)權利要求9所述的裝置,其特征在于,所述裝置還包括上傳模塊,用于將所述分析結果上傳至文件服務器,由所述文件服務器將所述分析結果回傳至所述集中調度平臺,由所述集中調度平臺將所述分析結果進行分類,存入至數(shù)據(jù)庫。11.一種用于檢測終端源代碼安全的系統(tǒng),其特征在于,所述系統(tǒng)包括一個或多個如權利要求6所述的用于檢測終端源代碼安全的裝置,每一所述裝置的所述第一處理模塊中所 提取的所述預定缺陷的缺陷點集合,形成為預設的缺陷規(guī)則集的擴展缺陷規(guī)則集。12.如權利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括:包含有待檢測源代碼的終端;集中調度平臺,用于接收所述終端上傳的待檢測源代碼,并分析所述待檢測源代碼的 缺陷類型,根據(jù)所述待檢測源代碼的缺陷類型將所述待檢測源代碼下發(fā)至一個或多個所述 裝置;文件服務器,用于接收一個或多個的所述裝置上傳的分析結果,并將所述分析結果回 傳至所述集中調度平臺;數(shù)據(jù)庫,用于接收并存儲所述集中調度平臺進行分類后的分析結果。
【文檔編號】G06F21/57GK106033516SQ201510119196
【公開日】2016年10月19日
【申請日】2015年3月18日
【發(fā)明人】蘇郁, 成方軍
【申請人】中國移動通信集團陜西有限公司