【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)涉及計(jì)算機(jī)軟件安全領(lǐng)域,尤其涉及一種符號執(zhí)行方法、裝置及系統(tǒng)。
技術(shù)介紹
符號執(zhí)行是通過使用符號變量取代輸入中的具體值來模擬程序執(zhí)行的程序分析方法(即用靜態(tài)分析的形式完成動(dòng)態(tài)分析的工作)。該方法既具有動(dòng)態(tài)分析方法的可靠性(路徑敏感,無誤報(bào)),又具有靜態(tài)分析方法的完備性(可保證覆蓋率,理論上有可能做到無漏報(bào)),在軟件漏洞檢測中正得到越來越多的關(guān)注。符號執(zhí)行也是一種形式化和自動(dòng)化的軟件分析技術(shù),其核心思想是用符號表示程序的輸入數(shù)據(jù),并將程序的運(yùn)算過程逐指令或逐語句地轉(zhuǎn)換為數(shù)學(xué)表達(dá)式,再在程序控制流圖的基礎(chǔ)上生成符號執(zhí)行樹,并為每一條路徑建立一系列的以輸入數(shù)據(jù)為變量的表達(dá)式。通常,可以使用一個(gè)三元組〈指令指針,路徑函數(shù),路徑條件〉來表示符號執(zhí)行過程。其中,指令指針用于標(biāo)識當(dāng)前被分析的指令,路徑函數(shù)表示程序路徑中不同點(diǎn)處變量的值是變量初始值的函數(shù),路徑條件是程序路徑在各分支點(diǎn)滿足的分支條件的合取。路徑條件是約束在符號執(zhí)行中的一種具體表現(xiàn)形式。約束通常是一組等式或不等式的合取,而約束求解的目的是得到等式或不等式組的可滿足解。根據(jù)獲取約束(路徑條件和分支條件)的不同方法,可將當(dāng)前的符號執(zhí)行方法劃分為基于變異和基于生成兩類。其中,基于生成的符號執(zhí)行依次解釋程序中的每一條指令。具體地說,對于非分支指令,其通常需要更新路徑函數(shù)(通過函數(shù)的復(fù)合實(shí)現(xiàn));而對于分支指令,其可能需要?jiǎng)?chuàng)建新的符號進(jìn)程(執(zhí)行一條新的路徑)以探測每個(gè)分支目標(biāo),并將原路徑條件與每個(gè)分支目標(biāo)滿足的分支條件取合取作為每個(gè)新路徑的路徑條件。當(dāng)有多個(gè)符號進(jìn)程時(shí),按照一定的路徑選擇策略(例如先創(chuàng)建的符號 ...
【技術(shù)保護(hù)點(diǎn)】
一種符號執(zhí)行方法,其特征在于,應(yīng)用于包含負(fù)載均衡器和至少兩個(gè)控制器的系統(tǒng)中,所述方法包括:負(fù)載均衡器向選擇的一控制器發(fā)送第一指示指令;接收到第一指示指令的控制器,按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑的過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子;將生成的路徑種子發(fā)送至負(fù)載均衡器,并收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向;負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同;收到第二指示指令的控制器,確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,將生成的路徑種子發(fā)送至負(fù)載均衡器,收集該第N條路徑上的路徑條件,獲 ...
【技術(shù)特征摘要】
1.一種符號執(zhí)行方法,其特征在于,應(yīng)用于包含負(fù)載均衡器和至少兩個(gè)控制器的系統(tǒng)中,所述方法包括 負(fù)載均衡器向選擇的一控制器發(fā)送第一指示指令; 接收到第一指示指令的控制器,按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑的過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子;將生成的路徑種子發(fā)送至負(fù)載均衡器,并收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向; 負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同; 收到第二指示指令的控制器,確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,將生成的路徑種子發(fā)送至負(fù)載均衡器,收集該第N條路徑上的路徑條件,獲得滿足所述第N條路徑上的路徑條件的測試用例,向負(fù)載均衡器發(fā)送進(jìn)入空閑狀態(tài)的通知,所述N為大于I的正整數(shù)。2.如權(quán)利要求1所述的方法,其特征在于,在待測試程序中存在多路分支指令時(shí),在所述按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑之前,所述方法還包括 將多路分支指令轉(zhuǎn)換為多條二路分支指令。3.如權(quán)利要求2所述的方法,其特征在于,所述在確定第一條路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子具體包括 確定該第一條路徑中起始分支指令到該第一條路徑中的每一條最終引起路徑分叉的分支指令前的路徑對應(yīng)的路徑種子; 在確定的該路徑種子后添加一個(gè)表示與第一條路徑在該最終引起路徑分叉的分支指令的取向相反的元素,得到一個(gè)新的路徑種子,將該新的路徑種子作為生成的路徑種子; 所述在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,具體包括 確定所述第N條路徑中起始分支指令到該第二段路徑中的每一條最終引起路徑分叉的分支指令前的路徑對應(yīng)的路徑種子; 在確定的該路徑種子后添加一個(gè)表示與第N條路徑在該最終引起路徑分叉的分支指令的取向相反的元素,得到一個(gè)新的路徑種子,將該新的路徑種子作為生成的路徑種子。4.如權(quán)利要求1所述的方法,其特征在于,所述負(fù)載均衡器包括一個(gè)主線程、一個(gè)消費(fèi)者線程、一個(gè)生產(chǎn)者線程和一個(gè)任務(wù)列表,所述主線程作為消費(fèi)者線程和生產(chǎn)者線程的守護(hù)線程,對消費(fèi)者線程和生產(chǎn)者線程進(jìn)行管理; 所述將生成的路徑種子發(fā)送至負(fù)載均衡器具體為 將生成的路徑種子發(fā)送至生產(chǎn)者線程,該路徑種子被生產(chǎn)者線程存放至任務(wù)列表; 所述負(fù)載均衡器接收路徑種子后,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令具體為消費(fèi)者線程從任務(wù)列表中取出路徑種子,并向至少一個(gè)空閑的控制器分別發(fā)送含有該路徑種子的第二指示指令。5.如權(quán)利要求1所述的方法,其特征在于,所述負(fù)載均衡器和至少兩個(gè)控制器運(yùn)行在不同的主機(jī)內(nèi)。6.—種符號執(zhí)行系統(tǒng),其特征在于,所述符號執(zhí)行系統(tǒng)包括負(fù)載均衡器和至少兩個(gè)控制器; 所述負(fù)載均衡器,用于向選擇的一控制器發(fā)送第一指示指令,接收來自控制器的路徑種子和進(jìn)入空閑狀態(tài)通知,向至少一個(gè)空閑的控制器分別發(fā)送含有路徑種子的第二指示指令,且每個(gè)空閑的控制器對應(yīng)的第二指示指令中的路徑種子不同; 所述控制器,用于在接收到第一指示指令時(shí),按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑,且在確定第一條路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,收集該第一條路徑上的路徑條件,獲得滿足所述第一條路徑上的路徑條件的測試用例,其中,所述路徑種子是由設(shè)定個(gè)數(shù)的元素組成的順序字節(jié)流,所述元素是表示程序路徑中依次遇到的每個(gè)分支指令的取向;在接收到第二指示指令時(shí),確定所述第二指示指令中的路徑種子所表示的第一段路徑,在該第一段路徑的基礎(chǔ)上按照設(shè)定的執(zhí)行策略確定能與第一段路徑結(jié)合構(gòu)成第N條路徑的第二段路徑,并在確定第二段路徑過程中在每一條最終引起路徑分叉的分支指令處生成相應(yīng)的路徑種子,收集該第N條路徑上的路徑條件,獲得滿足所述第N條路徑上的路徑條件的測試用例,所述N為大于I的正整數(shù)。7.如權(quán)利要求6所述的符號執(zhí)行系統(tǒng),其特征在于, 所述控制器,具體用于在待測試程序中存在多路分支指令時(shí),在所述按照設(shè)定的執(zhí)行策略確定待測試程序中的第一條路徑之前,將多路分支指令轉(zhuǎn)換為多條二路分支指令。8.如權(quán)利要求7所述的符號執(zhí)行系統(tǒng),其特征在于, 所述控制器,具體用于在接收到第一指示指令時(shí)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:忽朝儉,曲富平,左磊,趙糧,薛一波,
申請(專利權(quán))人:北京神州綠盟信息安全科技股份有限公司,北京神州綠盟科技有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會(huì)獲得科技券。