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

基于缺陷模式匹配的靜態源碼分析技術研究

2016-12-15 02:47:22吳偉明谷勇浩
軟件 2016年11期
關鍵詞:分析

孔 軍,吳偉明,谷勇浩

(北京郵電大學 計算機學院,北京 100876)

基于缺陷模式匹配的靜態源碼分析技術研究

孔 軍,吳偉明,谷勇浩

(北京郵電大學 計算機學院,北京 100876)

隨著信息技術的飛速發展,應用軟件的規模不斷擴大,越來越多的軟件安全問題頻頻出現,因此如何保證和提高軟件質量日益成為一個備受關注的問題。研究表明,在測試階段修正錯誤所付出的成本比代碼編寫階段多出10倍,因此以靜態分析的方式來檢測軟件質量能大大降低投入成本。基于缺陷模式的軟件測試是近些年發展起來的一種程序源代碼靜態分析技術,主要用于自動或者半自動的軟件缺陷檢測及預防,此類缺陷檢測工具由于效率高和使用簡單等特點在高可信軟件測試中得到了廣泛應用。所謂的缺陷模式,是指程序中經常發生的錯誤或缺陷所呈現出的特定規律。缺陷模式通常由具有領域程序設計經驗的人或者測試人員總結出來。本文通過利用開源軟件為實驗工具,運用靜態分析的相關理論,自定義檢測器對軟件項目做測試得出了一些存在的問題。

軟件測試;靜態代碼;缺陷模式;檢測器

本文著錄格式:孔軍,吳偉明,谷勇浩. 基于缺陷模式匹配的靜態源碼分析技術研究[J]. 軟件,2016,37(11):146-149

0 引言

隨著信息技術的發展,軟件的規模不斷擴大,越來越多的軟件安全問題頻頻出現,因此如何保證和提高軟件質量在互聯網中成為一個備受關注的問題。根據Boehm的統計,在軟件開發總成本中,用在測試上的開銷要占30%到50%,對于某些關系人類生命安全的關鍵軟件[1],其測試費用甚至高達所有其他軟件工程階段費用總和的三到五倍。因此,提高軟件測試的有效性和測試效率,降低軟件開發成本已成為迫切需要解決的任務。

檢測軟件安全質量,通常從兩個方面進行:動態分析與靜態分析。在動態分析中,需要根據實際狀況,設計多組極限測試數據,并實際的執行被測

程序;靜態分析則是掃描源程序,從中找出可能導致錯誤的結構異常,控制流異常及數據流異常。靜態分析較動態而言,成本低,容易實現,能覆蓋所有路徑且不依賴于特定的運行環境。根據McConnell所著《Code Complete》中提供的數據,在測試階段修正錯誤所付出的成本比代碼編寫階段多出10倍。因此采用靜態分析的方式來檢測軟件質量能大大降低成本。

如何保證軟件產品的可靠性,一直都是任何軟件項目致力解決的問題。影響軟件可靠性的因素很多,而軟件缺陷是度量軟件可靠性的一個重要的指標,減少軟件缺陷才能保證軟件可靠性。

隨著計算機處理速度的飛速提高,以及內存和外存容量的快速增加,軟件在整個系統中的重要性變得越來越高,軟件的規模和復雜性急劇增加,軟件的可靠性面臨著危機。軟件測試在這一階段承受了挑戰,許多測試理論和測試方法相繼誕生,逐漸形成了一套體系,本文的研究便是基于這些理論和方法。

1 常見軟件安全質量問題舉例

1.1 代碼安全問題

1.1.1 SQL注入

SQL注入是一種常見的針對web應用程序的攻擊,這是通過構建特殊的輸入作為參數傳入Web應用程序,而這些輸入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數據,致使非法數據侵入系統。

1.1.2 XSS攻擊

XSS (Cross Site Script) 即為跨站腳本攻擊[2]。它指的是惡意攻擊者往Web頁面里插入惡意腳本代碼,而程序對于用戶輸入內容未過濾,當用戶瀏覽該頁之時,嵌入其中Web里面的腳本代碼會被執行,從而達到惡意攻擊用戶的特殊目的。

1.2 代碼質量問題

1.1.1 空指針引用

空指針(Null Pointer)引用,是程序設計語言中一類常見的動態內存錯誤。指針變量可以指向堆地址、靜態變量和空地址單元,當引用指向空地址單元的指針變量時,就會產生空指針引用故障,有可能產生不可預見的錯誤,導致軟件系統崩。

1.1.2 系統資源未釋放

軟件開發過程中有很多調用系統或處理器資源的情況,比如文件流和字符流、數據庫連接等等,如果開發者在開發軟件時疏忽沒有意識到這個問題,或者是由于代碼問題沒有釋放資源,就有可能導致系統負載越來越重,嚴重的會引起系統崩潰,應當重視資源的回收問題。

2 靜態分析相關理論

2.1 靜態分析技術

代碼靜態分析是指在不運行代碼的方式下,通過詞法分析、語法分析、控制流、數據流分析等技術對程序代碼進行掃描[3],驗證代碼是否滿足規范性、安全性、可靠性、可維護性等指標的一種代碼分析技術。目前靜態分析技術向模擬執行的技術發展以能夠發現更多傳統意義上動態測試才能發現的缺陷,例如符號執行、抽象解釋、值依賴分析等等并采用數學約束求解工具進行路徑約減或者可達性分析以減少誤報增加效率。以下為后續實驗所需要的具體分析理論。

2.1.1 詞法分析生成token流

詞法分析階段是編譯過程的第一個階段,是編譯的基礎。這個階段的任務是從左到右一個字符一個字符地讀入源程序,即對構成源程序的字符流進行掃描然后根據構詞規則識別單詞(也稱單詞符號或符號)。詞法分析程序可以使用Lex等工具自動生成。

詞法分析是編譯程序的第一個階段且是必要階段;詞法分析的核心任務是掃描、識別單詞且對識別出的單詞給出定性、定長的處理;實現詞法分析程序的常用途徑:自動生成,手工生成。

2.1.2 語法分析生成抽象語法樹

語法分析是編譯過程的一個邏輯階段。語法分析的任務是在詞法分析的基礎上將單詞序列組合成各類語法短語,如“程序”,“語句”,“表達式”等等。語法分析程序判斷源程序在結構上是否正確,源程序的結構由上下文無關文法描述。

2.1.3 語義分析

語義分析也是編譯過程的一個邏輯階段,語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查,進行類型審查。語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。比如語義分析的一個工作是進行類型審查,審查每個算符是否具有語言規范允許的運算對象,當不符合語言規范時,編譯程序應報告錯誤[4]。如有的編譯程序要對實數用作數組下標的情況報告錯誤。又

比如某些某些程序規定運算對象可被強制,那么當二目運算施于一整型和一實型對象時,編譯程序應將整型轉換為實型而不能認為是源程序的錯誤。

2.2 缺陷模式

軟件缺陷是存在于軟件中的、不期望的或不可接受的偏差,其結果是當軟件運行于某一特定條件時將出現軟件故障,軟件缺陷以一種靜態的形式存在于軟件的內部,是軟件開發過程中人為錯誤的結果。軟件缺陷的例子有:數組下標不對、循環變量初值設置有誤、異常處理方法有誤等。

所謂的缺陷模式,是指程序中經常發生的錯誤或缺陷所呈現出的特定規律。缺陷模式通常由具有領域程序設計經驗的人或者測試人員總結出來。

下面給出一個缺陷模式分析的例子:缺陷行為:代碼中低效的判斷字符串為空的方法缺陷描述:判斷字符串為空時,不要用equals()方法,而是1ength方法或屬性,判斷長

度是否為0。代碼圖例:

圖1 缺陷代碼實例

原因分析:相對于equals(“”)方法,判斷字符串對象長度是否為零的方法速度更快。

解決辦法:應該使用str.1ength() ==0來判斷字符串是否為空。

簡言之,缺陷模式匹配的靜態分析方法就是針對不同的代碼缺陷,總結并抽象出特定的缺陷模式,具體分析時再將之具體實現。

3 實驗方案

本文采用Findbugs開源軟件來作為實驗工具,FindBugs 是一個靜態分析工具,它檢查類或者JAR文件,將字節碼與一組缺陷模式進行對比以發現可能的問題。有了靜態分析工具,就可以在不實際運行程序的情況對軟件進行分析。不是通過分析類文件的形式或結構來確定程序的意圖,而是通常使用Visitor模式[5]。下面分為三個步驟來做實驗:

1)最重要的一個環節,根據常見的軟件缺陷抽象出相應模式,來實現對應的檢測器,這里實現是基于Findbugs源碼,在此基礎上實現自己用到的檢測器。

2)將實現的多個檢測器打包,生成Findbugs插件集成在eclipse中。

3)用生成的插件對待測試的一村一品項目源碼進行檢測。

整體的實驗流程圖如下所示:

圖2 實驗流程圖

4 實驗結果

根據以上實驗步驟,得出實驗結果,結果中顯示有23個軟件問題[6],圖中的Scary、Troubling、Of Concern代表的是問題的嚴重等級,而檢測結果也有可信度的問題,High confidence即為高可信度,Normal confidence即為一般可信度。下面為實驗的結果圖:

圖3 實驗結果圖

然后根據每個問題的可信度和嚴重等級進行了分類統計,下面的表格就是統計的結果:

表1 測試結果分類表

由上面的表格,可以看出,一寸一品項目中存在的代碼缺陷問題,SQL注入[7]和資源未釋放都是比較嚴重的問題,當然其中也有字符串判斷相等時

用了=字符這種可能會引起邏輯錯誤的問題。可信度在測試的過程中也是比較重要的一個指標,經過人工檢查,高可信的問題中幾乎不存在誤報,而一般可信的問題中有一部分是誤報,因此怎樣降低誤報率也是以后需要完善的。

5 結論

本文給出了一種基于缺陷模式匹配的靜態源碼分析研究方法,并做實驗驗證了這種方法的可行性與正確性,實驗中通過發現軟件缺陷本身及其產生遵循一定的規律,抽象出存在的一些缺陷模式,并借助開源軟件實現了檢測器[8],利用開源軟件集成實現的檢測器來對項目進行了檢測,檢測出了一些軟件常見的質量問題,但同時也發現了一些不足之處,比如發現的問題中有一些是誤報的,解決誤報問題將會是以后的重點。

[1] 中央網絡安全和信息化領導小組成立: 中國從網絡大國加速邁向網絡強國[J]. 信息安全與通信保密, 2014, 03: 12-13.

[2] 楊洪路, 宮云戰, 高文齡, 白哥樂. 軟件安全靜態檢測技術與工具[J]. 信息化縱橫, 2009, 09: 70-72.

[3] 牛婷芝. 一種Java源代碼安全分析系統的設計與實現[D].北京郵電大學, 2009.

[4] 霍志鵬. 基于靜態分析的PHP代碼缺陷檢測[D]. 北京郵電大學 2015.

[5] 張林, 曾慶凱. 軟件安全漏洞的靜態檢測技術[J]. 計算機工程. 2008(34): 157-159.

[6] 古樂, 史九林. 軟件測試技術概述[M]. 北京: 清華大學出版社, 2004.

[7] 趙瑞蓮. 軟件測試方法研究: [博士學位論文]. 北京: 中國科學院計算技術研究所, 2001.

[8] 萬成鋮. 一種基于符號執行的Java缺陷檢測工具的設計與實現[D]. 北京大學, 2012.

Research on Static Source Analysis Technology Based on Defect Pattern Matching

KONG Jun, WU Wei-ming, GU Yong-hao
(School of Computer Science, Beijing University of Posts and Telecommunications, Beijing 100876, China)

With the rapid development of information technology, the application software continues to expand the scale of software security issues more and more frequent, so how to guarantee and improve the quality of software has become a problem of concern. Research shows that the cost of correcting errors in the testing phase is 10 times more than that of the code, so the quality of the software can be greatly reduced by static analysis. Software testing based on defect pattern is a technique developed in recent years, the source code static analysis, mainly for software defect detection and prevention automatically or semi automatically, this kind of defect detection tool due to the characteristics of high efficiency and simple to use, has been widely used in software testing. The so-called defect mode, is refers to the procedure often occurs the mistake or the flaw place presents the specific rule. Defect modes are often summed up by people or testers who are experienced in the field of program design. In this paper, the use of open source software as an experimental tool, the use of static analysis of the relevant theory, the definition of the software test software project to do some of the existing problems.

Software testing; Static code; Defect pattern; Detector

TP314

A

10.3969/j.issn.1003-6970.2016.11.032

孔軍(1991-),男,研究生,主要研究方向:現代網絡管理、網絡安全;吳偉明,女,教授,主要研究方向:現代網絡管理、網絡安全;谷勇浩,男,講師,主要研究方向:網絡安全、移動互聯網技術

吳偉明,教授,主要研究方向:現代網絡管理、網絡安全。

猜你喜歡
分析
禽大腸桿菌病的分析、診斷和防治
隱蔽失效適航要求符合性驗證分析
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
經濟危機下的均衡與非均衡分析
對計劃生育必要性以及其貫徹實施的分析
現代農業(2016年5期)2016-02-28 18:42:46
GB/T 7714-2015 與GB/T 7714-2005對比分析
出版與印刷(2016年3期)2016-02-02 01:20:11
中西醫結合治療抑郁癥100例分析
偽造有價證券罪立法比較分析
在線教育與MOOC的比較分析
主站蜘蛛池模板: 国产1区2区在线观看| 多人乱p欧美在线观看| 亚洲精品国产乱码不卡| 亚洲成年人片| 色哟哟色院91精品网站| 亚洲精品天堂在线观看| 久久久久久久久亚洲精品| 国产一级无码不卡视频| 亚洲精品综合一二三区在线| 久久精品一卡日本电影 | 亚洲 欧美 日韩综合一区| 亚洲免费人成影院| 最新精品久久精品| 国产情精品嫩草影院88av| 国产日本欧美亚洲精品视| 国产日韩欧美成人| 欧美另类一区| a级毛片毛片免费观看久潮| 亚洲香蕉在线| 国产免费好大好硬视频| 亚洲综合极品香蕉久久网| 亚洲天堂网在线观看视频| 国产毛片不卡| 欧美日韩中文国产| 中文字幕丝袜一区二区| 亚洲无码高清视频在线观看| 91丝袜美腿高跟国产极品老师| 国产97视频在线观看| 欧美高清视频一区二区三区| 一区二区理伦视频| 在线国产欧美| 九九九九热精品视频| 国产成人精品免费视频大全五级 | 亚洲国产理论片在线播放| 久久激情影院| 美女被躁出白浆视频播放| 日韩欧美一区在线观看| 日韩欧美中文| 小说区 亚洲 自拍 另类| 日韩一区二区三免费高清| 亚洲免费播放| 99国产在线视频| 在线中文字幕网| 国产精品刺激对白在线 | 久久女人网| 日本在线欧美在线| 久久天天躁夜夜躁狠狠| 亚洲日韩精品无码专区97| 欧美成a人片在线观看| 亚洲天堂.com| 综合成人国产| 97国产成人无码精品久久久| 色噜噜狠狠色综合网图区| 久久综合AV免费观看| 亚洲欧美日韩成人在线| 国产18在线| 亚洲高清国产拍精品26u| 国产精品太粉嫩高中在线观看| 日本午夜精品一本在线观看| 久久综合丝袜长腿丝袜| 亚洲一区二区三区香蕉| 天天综合网色中文字幕| 亚洲色图欧美视频| 天天干天天色综合网| 久久网欧美| 国产凹凸视频在线观看| 色综合激情网| 夜夜爽免费视频| 欧美日韩va| 2021国产精品自产拍在线观看| 亚洲欧美人成人让影院| 91蜜芽尤物福利在线观看| 中文纯内无码H| 亚洲成人网在线观看| 精品视频福利| 国产91无码福利在线| 免费一极毛片| 无码国产伊人| 国产精品污视频| 51国产偷自视频区视频手机观看 | 波多野结衣中文字幕一区| 免费播放毛片|