亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C/C++源代碼安全檢測系統(tǒng)的設(shè)計與實(shí)現(xiàn)

        2016-07-09 08:38:19龍剛何建安高嵩曾奕張生林
        關(guān)鍵詞:源代碼

        龍剛 何建安 高嵩曾奕 張生林

        摘要:通過比較國內(nèi)外C/C++源代碼安全檢測技術(shù)的發(fā)展?fàn)顩r,闡述了研制C/C++源代碼安全檢測系統(tǒng)的必要性。討論了C/C++源代碼安全檢測領(lǐng)域的關(guān)鍵技術(shù),描述了C/C++源代碼安全檢測系統(tǒng)的主要功能、系統(tǒng)架構(gòu)和實(shí)現(xiàn)途徑,并指出了C/C++源代碼安全檢測系統(tǒng)下一步的改進(jìn)方向。

        關(guān)鍵詞:源代碼 軟件安全性 靜態(tài)分析

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)06-0150-02

        Abstract:Through the development status of domestic and foreign C/C++ source code security detection technology, this paper expounds the necessity of the development of C/C++ source code security detection system. Discuss the key technology in the field of C/C++ source code security detection, describes the C/C++ source code security detection system, the main function, system architecture and realization method, and points out that the C/C++ source code security detection system further improvement direction.

        Key Words:source code; software security; static analysis

        隨著軟件技術(shù)和網(wǎng)絡(luò)技術(shù)在各個行業(yè)的廣泛應(yīng)用,以及以Linux操作系統(tǒng)為標(biāo)志的自由軟件的大量存在和應(yīng)用,人們面臨的軟件安全問題也日漸增多。研究表明,相當(dāng)數(shù)量的安全問題都是由于軟件自身存著的安全漏洞引起的,惡意的攻擊者利用這些安全漏洞提升權(quán)限,訪問未授權(quán)資源,甚至破壞敏感數(shù)據(jù),從而造成重大損失,近期發(fā)生的Struts2安全事件和OpenSSL出現(xiàn)“Heartbleed”安全漏洞均造成了很大影響。存在于計算機(jī)系統(tǒng)中的軟件安全漏洞已經(jīng)成為信息安全的一個核心問題。

        1 國內(nèi)外研究現(xiàn)狀

        目前,對于軟件的安全性分析挖掘,以美國為代表的信息化發(fā)達(dá)國家已經(jīng)全面起步:美國國土安全部作為美國風(fēng)險評估的領(lǐng)路者,擁有龐大的研究力量,幾乎影響著全世界在風(fēng)險評估領(lǐng)域的概念、觀念和理念。上個世紀(jì)90年代末,美國開始把風(fēng)險評估的范疇延伸到軟件源代碼上,在政府、學(xué)術(shù)界和產(chǎn)業(yè)界開展源碼安全分析與同源性測試。2004年由國土安全部主持了兩個大型安全項(xiàng)目DETER和EMIST,用以建設(shè)軟件安全測試床,開發(fā)科學(xué)、嚴(yán)格的攻擊和預(yù)防機(jī)制,研究軟件安全測試評估框架和方法,實(shí)施軟件漏洞分析與風(fēng)險評估工作。2005年,美國總統(tǒng)信息技術(shù)咨詢委員會關(guān)于信息安全的年度報告中指出,美國政府部門和軍方等敏感部門使用的軟件產(chǎn)品,必須加強(qiáng)漏洞分析和風(fēng)險評估,尤其提到這些軟件產(chǎn)品應(yīng)進(jìn)行源碼安全分析測評。在美國國土安全部的資助下,NIST設(shè)立了軟件保證度量和工具測量項(xiàng)目(Software Assurance Metrics And Tool Evaluation,SAMATE),其核心就是對軟件安全性進(jìn)行分析研究。為了減少開源軟件的源碼缺陷,2006年初美國國土安全部設(shè)立了一個長期的開源軟件源代碼安全測試計劃,對包含Linux等在內(nèi)的1750多萬行開源軟件的源代碼進(jìn)行缺陷測試,以有力地保障這些軟件的安全性。在企業(yè)界,包括微軟、AT&T、Dell、Oracle、蘋果等世界知名軟件公司都已經(jīng)或正在部署軟件源代碼安全性檢測系統(tǒng)。此外,微軟公司還提出了安全開發(fā)生命周期(SDL)的概念,將安全開發(fā)貫穿軟件生命周期的整個過程。它的基本原則是:安全的設(shè)計、安全的開發(fā)、安全的部署,通過SDL可以在很大程度上降低軟件安全風(fēng)險[1-3]。

        而國內(nèi)對軟件的安全性檢查和驗(yàn)證研究,還比較少,關(guān)于源代碼的靜態(tài)分析工具的研制應(yīng)用主要是致力于某類缺陷的檢測,沒有集成的環(huán)境進(jìn)行支撐。因此,開展C/C++源代碼的檢測技術(shù)的集成研究和工具化勢在必行[4-5]。

        2 關(guān)鍵技術(shù)

        C/C++源代碼靜態(tài)分析中主要涉及的關(guān)鍵技術(shù)包括:C++源代碼解析、路徑敏感的過程間遍歷算法的設(shè)計以及狀態(tài)緩存機(jī)制等。

        (1)使用GCC作為源代碼解析的工具,由GCC負(fù)責(zé)進(jìn)行源代碼的詞法語法分析與CFG生成。

        (2)使用基于變量安全狀態(tài)跟蹤的模型進(jìn)行C/C++的漏洞的檢測。一般而言,是指:使用基于有限狀態(tài)機(jī)的漏洞狀態(tài)機(jī)描述程序變量安全狀態(tài)的轉(zhuǎn)換規(guī)則;檢測工具對程序各可能執(zhí)行路徑進(jìn)行路徑敏感的過程間的靜態(tài)遍歷并識別當(dāng)前操作;對當(dāng)前操作所涉及的程序變量根據(jù)狀態(tài)機(jī)賦予其對應(yīng)的安全狀態(tài)。在檢查點(diǎn)處,檢測工具檢測相關(guān)操作數(shù)據(jù)是否具有期望的安全狀態(tài),若出現(xiàn)與期望安全狀態(tài)不符的情況,則表示發(fā)現(xiàn)了一個可能的安全漏洞。

        (3)路徑敏感的過程間遍歷算法的設(shè)計。路徑敏感的遍歷是指根據(jù)代碼實(shí)際的可能執(zhí)行路徑的遍歷,而不是直接按照源代碼自上而下的遍歷。過程間的遍歷是指當(dāng)遍歷遇到一個用戶定義的函數(shù)時,能夠進(jìn)入該函數(shù),處理完該函數(shù)之后返回到調(diào)用點(diǎn)繼續(xù)遍歷。路徑敏感和過程間的遍歷是提高靜態(tài)分析精確度、減少漏報和誤報的有效手段。

        (4)狀態(tài)緩存機(jī)制,基本塊層面的基于歷史狀態(tài)檢測的方法在過程內(nèi)檢測中能夠很好的處理不同路徑上狀態(tài)一致以及循環(huán)停止的問題,但是在過程間檢測中就可能出現(xiàn)問題。應(yīng)該以歷史狀態(tài)為基礎(chǔ),針對過程間分析進(jìn)一步完善緩存機(jī)制。

        (5)采用一種基于內(nèi)存模擬的方法實(shí)現(xiàn)別名分析。具體的說,就是為每個對象(指針變量)分配一個內(nèi)存區(qū)域,該區(qū)域中保存該對象的狀態(tài)、字段等信息;如果兩個對象互為別名,就讓這兩個對象指向同一個內(nèi)存區(qū)域。

        3 系統(tǒng)概述

        C/C++源代碼安全檢測系統(tǒng)適用于任何行業(yè)軟件C/C++源代碼的檢測工作,它為用戶的主機(jī)應(yīng)用系統(tǒng)和基于WEB網(wǎng)站的業(yè)務(wù)系統(tǒng)提供全方位的基于源代碼的安全審計。在裝備類軟件、金融、政府等大型復(fù)雜應(yīng)用系統(tǒng)的軟件開發(fā)、測試等階段,均可使用該系統(tǒng)進(jìn)行源代碼審計工作,包括如下的內(nèi)容:源代碼的缺陷和錯誤檢查;分析并找到缺陷、錯誤引發(fā)的安全漏洞,提供代碼修訂措施和建議,幫助用戶節(jié)約開發(fā)成本,最大程度地保證了系統(tǒng)的健壯性,輔助軟件企業(yè)提升生產(chǎn)效率。

        C/C++源代碼安全檢測系統(tǒng)的分析過程采用C/S架構(gòu),分析結(jié)果的展示以B/S架構(gòu)來實(shí)現(xiàn)。能夠與各類開發(fā)環(huán)境相集成。源代碼解析為基礎(chǔ),缺陷分析為核心,結(jié)果構(gòu)建為手段,人機(jī)界面、項(xiàng)目管理、擴(kuò)展接口為支撐和輔助,系統(tǒng)架構(gòu)如圖1所示。

        4 功能設(shè)計與實(shí)現(xiàn)

        整個C/C++源代碼缺陷分析系統(tǒng)要實(shí)現(xiàn)如下子模塊。(如表1)

        4.1 源代碼解析模塊的實(shí)現(xiàn)

        基于源代碼的靜態(tài)代碼分析技術(shù)對于編譯技術(shù)的借鑒主要集中在編譯前端部分,即在詞法分析和語法分析環(huán)節(jié)??紤]到本模塊要處理的C/C++涵蓋Visual C++和GNU C++兩個平臺,因此設(shè)計實(shí)現(xiàn)一個常規(guī)的能同時覆蓋兩個平臺的C++編譯前端。

        源代碼預(yù)處理的流程如圖2所示。

        經(jīng)過源代碼預(yù)處理之后,不管是VC++項(xiàng)目源文件還是GCC/G++項(xiàng)目源文件,都通過GCC前端進(jìn)行解析,生成CFG以及中間表示形式等數(shù)據(jù)結(jié)構(gòu)。圖3展示了一個由gcc生成的CFG的示例:

        4.2 缺陷分析模塊的實(shí)現(xiàn)

        C/C++源代碼靜態(tài)分析系統(tǒng)的缺陷分析由兩部分組成:基于語義的缺陷分析和基于控制流的缺陷分析。其中基于語義的缺陷分析對變量未使用、函數(shù)未使用、變量未初始、類型轉(zhuǎn)換化以及C/C++特性相關(guān)的三種缺陷(關(guān)鍵性變量被聲明為公共的、關(guān)鍵性公共域缺乏適當(dāng)?shù)奈鰳?gòu)處理、異常處理中缺乏一般化例外的捕獲)進(jìn)行檢測;基于控制流的缺陷分析對內(nèi)存泄露、兩次釋放、釋放后再使用、返回空值、空指針引用、資源未釋放、競爭條件、拒絕服務(wù)、格式化字符串、整數(shù)溢出、死代碼、以及堆棧溢出、數(shù)組訪問越界等缺陷的檢測。

        類型轉(zhuǎn)換雖然也屬于基于語義的缺陷分析,卻是在構(gòu)造CFG完成的基礎(chǔ)上,遍歷CFG中的語句,根據(jù)一定的配置規(guī)則進(jìn)行檢測的;其余的基于語義的缺陷分析均是利用解析前端實(shí)現(xiàn)的。

        在基于控制流的缺陷分析中,我們進(jìn)一步將缺陷細(xì)分為基于控制流的安全狀態(tài)跟蹤(包括內(nèi)存泄露、競爭條件等7種缺陷)、基于數(shù)據(jù)流的污點(diǎn)傳播跟蹤檢測(拒絕服務(wù)、格式化字符串、整數(shù)溢出)、死代碼、基于數(shù)據(jù)流的安全狀態(tài)跟蹤(堆棧溢出、數(shù)組越界訪問)。

        基于數(shù)據(jù)流的污點(diǎn)傳播跟蹤檢測是首先確定污點(diǎn)數(shù)據(jù)源,如從網(wǎng)絡(luò)、文件、用戶輸入等讀取數(shù)據(jù)的方法,將接受所獲取的臟數(shù)據(jù)的變量標(biāo)記為Signed,然后根據(jù)控制流進(jìn)行污點(diǎn)傳播,在檢查點(diǎn)處判斷相關(guān)變量是否保持Signed狀態(tài),如果是,這報告一個相應(yīng)的缺陷。數(shù)據(jù)源函數(shù)、傳播函數(shù)、檢查點(diǎn)函數(shù)等從檢測規(guī)則集中獲取。具體的檢測流程如圖4所示。

        死代碼的檢測是利用約束求解技術(shù),判斷對于每條路徑都不可行的代碼塊,這些代碼塊即被認(rèn)定為死代碼。

        基于數(shù)據(jù)流的安全狀態(tài)跟蹤(堆棧溢出、數(shù)組越界訪問)檢測技術(shù)與死代碼的檢測具有相關(guān)性,都是使用約束求解技術(shù)。所不同的是,死代碼是根據(jù)已有的路徑條件判斷新遇到的路徑條件是否可行,而堆棧溢出和數(shù)組越界訪問則是利用路徑條件判斷檢查點(diǎn)處的各相關(guān)變量之間的關(guān)系是否滿足所定義的規(guī)則,然后根據(jù)規(guī)則確定是否存在缺陷。在遍歷方式,死代碼使用了非路徑敏感的流敏感遍歷方式,而堆棧溢出的檢測是路徑敏感的遍歷方式;同時,死代碼無需外部規(guī)則,堆棧溢出需要規(guī)則定義數(shù)據(jù)流向、緩沖區(qū)的改變以及檢查點(diǎn)的設(shè)置等。

        4.3 結(jié)果輸出模塊實(shí)現(xiàn)

        結(jié)果輸出模塊與缺陷分析模塊進(jìn)行交互,當(dāng)缺陷分析模塊發(fā)現(xiàn)源代碼中的缺陷時會調(diào)用本模塊保存分析結(jié)果。保存結(jié)果應(yīng)包含缺陷涉及的變量、缺陷的完整觸發(fā)路徑、數(shù)據(jù)傳播途徑、缺陷位置、缺陷類型(以上均可以從變量信息中獲得)、缺陷描述、可能的修補(bǔ)手段及危險級別等信息(后面這三項(xiàng)內(nèi)容從XML規(guī)則文檔中提?。?/p>

        4.4 項(xiàng)目管理模塊實(shí)現(xiàn)

        對被測源碼按照項(xiàng)目進(jìn)行管理,提供項(xiàng)目配置功能,包括源碼分析范圍,分析級別、分析缺陷類型定制等。提供項(xiàng)目結(jié)果輸出配置,包括輸出缺陷類型、級別、輸出形式等。

        4.5 人機(jī)界面模塊實(shí)現(xiàn)

        提供可視化界面,便于用戶進(jìn)行操作。

        4.6 擴(kuò)展接口模塊實(shí)現(xiàn)

        支持與主流開發(fā)環(huán)境的集成,如windows平臺上的VS系列、中標(biāo)麒麟平臺上的Eclipse和QT等。

        5 結(jié)語

        C/C++源代碼安全檢測系統(tǒng)現(xiàn)在已經(jīng)可以在傳統(tǒng)的X86平臺下運(yùn)行使用,目前正在向國產(chǎn)化軟件平臺進(jìn)行移植。后期還需要開展的工作包括:與中標(biāo)麒麟操作系統(tǒng)進(jìn)行適配、與國產(chǎn)硬件平臺進(jìn)行適配優(yōu)化和對核心源碼分析模塊進(jìn)行重構(gòu)等。

        參考文獻(xiàn)

        [1]EVANS D,LAROCHELLE D.Improving security using extensible light-weight static analysis[J].IEEE Software, 2002,19(1):42-51.

        [2]BRIAN C. Static analysis for security[J].IEEE Security & Privacy,2004,7(4):32-36.

        [3]Institute ANS. ISO programming language C++[S].2003.

        [4]李曉南,范明鈺,王光衛(wèi).基于靜態(tài)檢測工具的源代碼安全缺陷檢測技術(shù)[J].計算機(jī)應(yīng)用研究,2011,28 (8):2997-2998.

        [5]林銳,韓永泉.高質(zhì)量程序設(shè)計指南—C/C++語言[M].北京電子工業(yè)出版社,2008:240-247.

        猜你喜歡
        源代碼
        人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
        基于TXL的源代碼插樁技術(shù)研究
        國際經(jīng)貿(mào)協(xié)定中的源代碼規(guī)則新發(fā)展及中國立場
        軟件源代碼非公知性司法鑒定方法探析
        基于語法和語義結(jié)合的源代碼精確搜索方法
        源代碼安全漏洞檢測方法探討
        解讀當(dāng)代寫意油畫的源代碼
        保護(hù)好自己的“源代碼”
        揭秘龍湖產(chǎn)品“源代碼”
        做一個中國特色的.Net源代碼社區(qū)
        亚洲第一女人的天堂av| 国产午夜亚洲精品不卡福利| 国产中文久久精品| 久久中文字幕av一区二区不卡| 亚洲综合综合在线| 日本淫片一区二区三区| 4hu四虎永久免费地址ww416| 亚洲人成色777777老人头| 国产资源在线视频| 国产女主播大秀在线观看| 日韩乱码人妻无码系列中文字幕 | 97se亚洲精品一区| 亚洲成a人片在线播放观看国产 | 美女脱了内裤洗澡视频 | 亚洲国产美女精品久久久 | 国产精品亚洲专区无码不卡| 久久久亚洲免费视频网| 欧美xxxx做受欧美| 日韩精品大片在线观看| 成人特黄特色毛片免费看| 91九色中文视频在线观看| √新版天堂资源在线资源| 欧美色综合高清视频在线| 日韩精品夜色二区91久久久| 久久久亚洲熟妇熟女av| 一性一交一口添一摸视频| 国产在线视频国产永久视频| 亚洲乱码中文字幕第一页| 国产精品久久久久一区二区三区| 久久国产精久久精产国| 国产精品国产午夜免费看福利| 男女射精视频在线观看网站| 亚洲人成网站色www| 亚洲天堂中文| 美利坚亚洲天堂日韩精品| 国产精品 无码专区| 欧美黑人乱大交| 最大色网男人的av天堂| 精品国产一区二区三区三级| 久久精品女人天堂av| 尤物yw午夜国产精品视频|