欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于xml中間模型安全檢測規(guī)則庫的建立方法

文檔序號:6429174閱讀:213來源:國知局
專利名稱:基于xml中間模型安全檢測規(guī)則庫的建立方法
技術領域
本發(fā)明屬于軟件測試技術領域,涉及到基于XML中間模型的安全檢測規(guī)則庫的建
立方法。
背景技術
信息系統(tǒng)與網(wǎng)絡的迅速發(fā)展使得軟件的安全性成為一個備受關注的焦點。無論是在商業(yè)軟件中還是開源軟件中,軟件的漏洞隨處可見。軟件的漏洞通常是在軟件開發(fā)的過程中產(chǎn)生的。C++語言是一種功能強大、具有較高執(zhí)行效率的程序語言,但它同時也是一種語言復雜、類型約束和安全控制機制寬松、編程風格自由的程序語言。軟件安全測試是修復安全威脅,保證軟件能夠安全使用的最重要的手段。目前主要安全測試方法有靜態(tài)的代碼安全測試和動態(tài)的滲透測試。靜態(tài)代碼測試適用于早期的代碼開發(fā)階段,本發(fā)明是屬于靜態(tài)代碼測試的范疇。源代碼分析技術由來已久,隨著計算機語言的不斷演進,源代碼分析的技術也在日趨完善,出現(xiàn)了很多源代碼分析工具。評價靜態(tài)分析工具好壞有兩個指標漏報率和誤報率。如何降低靜態(tài)分析工具的漏報率和誤報率成為軟件缺陷分析中的一個熱點問題。健壯的規(guī)則庫的設計是保證靜態(tài)檢測工具高效性和準確性的前提。

發(fā)明內容
本發(fā)明要解決的技術問題是設計一種基于XML中間模型的安全檢測規(guī)則庫。把安全子集中的每一條規(guī)則抽象為缺陷模式,使用XQuery查詢語句將缺陷模式轉換成XQuery 表達式,針對C++語言源代碼存在的安全漏洞,查詢C++源代碼對應的XML中間模型,定位與缺陷模式匹配的XML節(jié)點,通過缺陷重定向機制完成缺陷從XML中間模型到源文件中的精確定位。本發(fā)明的技術方案如下為確定XML中間模型中需要記錄和描述的數(shù)據(jù)信息,按照安全子集MISRA中規(guī)則所涉及的C++語言語法對象及檢查對象的不同,將規(guī)則分為以下幾類變量聲明/定義類對于C++語言中使用的結構體、聯(lián)合體、枚舉類型、類類型和 typedef的使用,MISRAC++均做了使用限制。因此中間模型需記錄所有變量的聲明和定義 信息。程序風格類為了保證程序的可讀性和易維護性,防止因程序員的失誤而引入軟件安全缺陷等制定的一些規(guī)則。所以中間模型需要記錄源代碼中語句結構信息。宏指令類C++語言對宏指令的使用非常靈活,這種靈活隱藏著安全隱患。 MISRAC++制定了嚴格的宏指令使用和書寫方面的規(guī)則,因此中間模型需要記錄代碼的文本 信息。數(shù)據(jù)操作類C++語言在數(shù)據(jù)操作上的定義并不完整。MISRA針對這種安全隱患, 制定了相關規(guī)則,XML中間模型中需要記錄所有變量的使用信息。
過程類c++語言中函數(shù)的使用和聲明不當會產(chǎn)生大量安全隱患,安全子集 MISRAC++制定了大量的規(guī)則來規(guī)范函數(shù)的聲明、定義和使用。所以XML中需要記錄所有函數(shù)聲明、定義和使用的信息。1、XML中間模型制定通過對MISRA C++的分析確定了 XML中間模型的結構和應記錄的數(shù)據(jù)信息語句結構信息和標識符信息,二者分別對應XML中間模型中的語句結構模型和標識符模型。語句結構信息以C++語言語句為單位,能夠體現(xiàn)源文件中每一行代碼的具體含義及其所在行的上下文環(huán)境信息。源文件中的每一條語句在XML中間模型中都對應一個C0DELINE節(jié)點。 每一個信息單元需要包含語句類型、語句內容、行號及可選的子語句信息。無論是基本語句還是復合語句,在XML中間模型中均映射為一個CODELINEf 點。復合語句的C0DELINE節(jié)點包含2個屬性節(jié)點和兩個子節(jié)點,分別是屬性C0DETYPE和 LINENUMBER,子節(jié)點 TEXT 和 SUBLINES,如圖 2 所示。XML中間模型中的標識符信息模型描述了源文件中標識符的信息。代碼文件中定義的每個標識符在XML中間模型中均對應標識符的名字、類型、賦值記錄、引用記錄等信息。標識符模型的結構如圖3所示。每一份待檢測的源文件均有其對應的XML中間模型,可以將XML中間模型看做一個樹結構,有唯一的根節(jié)點S0URCEFILE,其屬性節(jié)點FILENAME用以記錄文件名,F(xiàn)ILETYPE 用以區(qū)分文件類型。兩個子節(jié)點C0DELINES和IDENTIFIERS對應語句結構模型和標識符信息模型。2、MISRA C++規(guī)則的缺陷模式將MISRAC++規(guī)則中每一條抽象為缺陷模式。在靜態(tài)分析工具中,缺陷模式?jīng)Q定著系統(tǒng)檢測的缺陷類型,規(guī)則的狀態(tài)以及啟動的條件等。由四部分組成,分別為描述項、狀態(tài)項、使用的對象和約束,即VP— {DES, STA, OBJ, CON}其中VP 缺陷模式;DES 描述安全規(guī)則的一些基本信息,通常包括兩部分統(tǒng)一編號和規(guī)則信息,即DES— (ID, INFO), ID 規(guī)則在安全子集中的編號;INFO 規(guī)則的文字描述信息。STA 標記安全規(guī)則所處的狀態(tài),取值為真或假,代表規(guī)則啟用或禁用。即STA e {TRUE, FALSE};其中TRUE代表啟用,F(xiàn)ALSE代表禁用。0BJ:安全規(guī)則使用的對象。根據(jù)安全規(guī)則的不同,對象可能是一類語句乂3切!^壯, 如宏指令;可能是一種數(shù)據(jù)類型DataType^ 指針等。CON 匹配缺陷模式的一組約束條件(Pl,P2,P3,…)及約束條件之間的運算關系{AND,OR, NOT}。形式為(條件1,條件 2, …)關系。3,MISRA C++規(guī)則的缺陷模式表達式XQuery作為當前對XML查詢支持最為完善的查詢語言,在缺陷模式的基礎上,利用XQuery語言為每一條安全規(guī)則設計其XQuery表達式,并存儲在安全知識庫中。安全知識庫基于XML設計,如圖4所示,每一條安全規(guī)則在安全知識庫中是一個Rule節(jié)點,含有四個子節(jié)點ID、STATE、ERR0RINF0和XQUERY。ID是規(guī)則中的關鍵節(jié)點,能唯一的標識出規(guī)則庫中每一條規(guī)則。STATE對應于缺陷模式中的STA。ERR0RINF0對應于缺陷模式中的INF0, 向用戶提供出錯信息。XQUERY對應缺陷模式中的OBJ核C0N,根據(jù)缺陷模式中定義的檢測對象、約束條件以及約束條件之間的關系,構建XQuery表達式。依據(jù)安全知識庫中的安全規(guī)則執(zhí)行XQuery表達式,返回違反安全規(guī)則的節(jié)點的LINENUMBER屬性,將規(guī)則缺陷重定向到源代碼文件中。本發(fā)明的有益效果在于通過對C++語言進行XML中間建模,構建XQuery表達式精確地查詢違反安全規(guī)則的節(jié)點,從而重定向到源代碼中,降低漏報率和誤報率,可靈活的進行規(guī)則的配置。


圖1是本發(fā)明安全檢測規(guī)則庫的使用流程圖。 圖2是XML中間模型結構示意圖。
圖3是標識符模型結構示意圖。 圖4是安全知識庫基于XML設計結構示意圖。
具體實施例方式以下結合技術方案和附圖,詳細說明本發(fā)明的具體實施例。以MISRAC++中的一條規(guī)則為例說明。Rule 逗號運算符、與運算符(&&)和或運算符(| )不可被重載。Aoperator&&(A&a){//一些操作}該規(guī)則對應的缺陷模式為VP — {DES,STA, OBJ, CON},其中各部分的取值為DES — (ID, INFO) = (52B0,“逗號運算符、與運算符(&&)和或運算符()不可被重載“);STA = TRUE ;表示啟用該規(guī)則;OBJ —〈Statement 0PERAT0R_FUN_DEC | 0PERAT0R_FUN_DECF> ;表示該安全規(guī)則適用的對象是運算符重載函數(shù)。規(guī)則要求不可重載逗號運算符、與運算符和或運算符,所以三個約束條件是Pl 重載的運算符是逗號;P2 重載的運算符是與運算符;P3 重載的運算符是或運算符。三個約束條件之間的關系是P1、P2、P3相或。即CON— (Pl,P2,P3)0R綜上所述,該安全規(guī)則對應的缺陷模式為=VP52bci — {(52B0,“逗號運算符、與運算符(&&)和或運算符(I I)不可被重載“),TRUE,〈Statement :0PERAT0R_FUN_DEC | OPERATOR, FUN_DECF>, (Pl,P2,P3)0R},其中Pl,P2,P3為上文描述的三個約束條件。1.缺陷模式的XQuery表達方式XQuery作為當前對XML查詢支持最為完善的查詢語言,在缺陷模式的基礎上,利用XQuery語言為每一條安全規(guī)則設計其XQuery表達式,并存儲在安全知識庫中。安全知識庫基于XML設計,每一條安全規(guī)則在安全知識庫中是一個Rule節(jié)點,含有四個子節(jié)點ID、STATE,ERR0RINF0和XQUERY。ID是規(guī)則中的關鍵節(jié)點,能唯一的標識出規(guī)則庫中每一條規(guī)則。STATE對應于缺陷模式中的STA。ERR0RINF0對應于缺陷模式中的INF0,向用戶提供出錯信息。XQUERY對應缺陷模式中的OBJ和C0N,根據(jù)缺陷模式中定義的檢測對象、約束條件以及約束條件之間的關系,構建XQuery表達式。依據(jù)安全知識庫中的安全規(guī)則執(zhí)行XQuery表達式,返回違反安全規(guī)則的節(jié)點的LINENUMBER屬性,將軟件缺陷重定向到源代碼文件中。根據(jù)上節(jié)對Rule逗號運算符、與運算符(&&)和或運算符(| )不可被重載缺陷模式的分析,該規(guī)則的XQuery實現(xiàn)算法如下所示
權利要求
1. 一種基于XML中間模型安全檢測規(guī)則庫的建立方法,其特征在于如下步驟,(I)XML 中間模型制定無論是基本語句還是復合語句,在XML中間模型中均映射為一個CODELINEfA ; 復合語句的C0DELINE節(jié)點包含2個屬性節(jié)點和兩個子節(jié)點,分別是屬性C0DETYPE和 LINENUMBER,子節(jié)點 TEXT 和 SUBLINES ;每一份待檢測的源文件均有其對應的XML中間模型,將XML中間模型看做一個樹結構, 有唯一的根節(jié)點S0URCEFILE,其屬性節(jié)點FILENAME用以記錄文件名,F(xiàn)ILETYPE用以區(qū)分文件類型;兩個子節(jié)點C0DELINES和IDENTIFIERS對應語句結構模型和標識符信息模型;(2)MISRAC++規(guī)則的缺陷模式將MISRA C++規(guī)則中每一條抽象為缺陷模式;由四部分組成,分別為描述項、狀態(tài)項、 使用的對象和約束,即=VP — {DES,STA, OBJ, CON}其中=VP 缺陷模式;DES 描述安全規(guī)則的一些基本信息,包括兩部分統(tǒng)一編號和規(guī)則信息,即=DES- (ID, INFO), ID 規(guī)則在安全子集中的編號;INFO 規(guī)則的文字描述信息;STA 標記安全規(guī)則所處的狀態(tài),取值為真或假,代表規(guī)則啟用或禁用;即STA e {TRUE, FALSE};其中TRUE代表啟用,F(xiàn)ALSE代表禁用; OBJ 安全規(guī)則使用的對象;根據(jù)安全規(guī)則的不同,對象是一類語句Matement或一種數(shù)據(jù)類型DataType ;CON 匹配缺陷模式的一組約束條件(Pl,P2,P3,…)及約束條件之間的運算關系{AND, OR, NOT};形式為(條件1,條件2,…)關系;(3)MISRAC++規(guī)則的缺陷模式表達式XQuery作為當前對XML查詢支持最為完善的查詢語言,在缺陷模式的基礎上,利用 XQuery語言為每一條安全規(guī)則設計其XQuery表達式,并存儲在安全知識庫中;安全知識庫基于XML設計,如下表所示,每一條安全規(guī)則在安全知識庫中是一個Rule節(jié)點,含有四個子節(jié)點ID、STATE、ERR0RINF0和XQUERY ;ID是規(guī)則中的關鍵節(jié)點,能唯一的標識出規(guī)則庫中每一條規(guī)則;STATE對應于缺陷模式中的STA ;ERR0RINF0對應于缺陷模式中的INF0,向用戶提供出錯信息;XQUERY對應缺陷模式中的OBJ核C0N,根據(jù)缺陷模式中定義的檢測對象、 約束條件以及約束條件之間的關系,構建XQuery表達式;依據(jù)安全知識庫中的安全規(guī)則執(zhí)行XQuery表達式,返回違反安全規(guī)則的節(jié)點的LINENUMBER屬性,將規(guī)則缺陷重定向到源代碼文件中。
全文摘要
本發(fā)明公開了一種基于XML中間模型的安全檢測規(guī)則庫的設計,屬于軟件測試領域。在XML中間模型的基礎上,把MISRAC++中的每一條規(guī)則抽象為缺陷模式。XML中間模型存儲了C++源代碼的語句結構信息和標識符信息。使用XQuery查詢語句將缺陷模式轉換成XQuery表達式,針對C++語言源代碼存在的安全漏洞,查詢C++源代碼對應的XML中間模型,定位與缺陷模式匹配的XML節(jié)點,通過缺陷重定向機制完成缺陷從XML中間模型到源文件中的精確定位。所有的XQuery表達式存儲在系統(tǒng)安全知識庫中,并在系統(tǒng)外圍單獨維護,可有效地實現(xiàn)規(guī)則配置與擴展。
文檔編號G06F11/36GK102279792SQ201110207528
公開日2011年12月14日 申請日期2011年7月25日 優(yōu)先權日2011年7月25日
發(fā)明者周寬久, 姚艷雙, 崔凱, 楊廣, 王潔, 簡道紅, 賴曉晨 申請人:大連理工大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
桐梓县| 江源县| 托克逊县| 禄丰县| 新建县| 华蓥市| 枝江市| 彭水| 潞城市| 阿勒泰市| 夏邑县| 吴旗县| 苏尼特左旗| 神木县| 紫金县| 印江| 东丽区| 常熟市| 长岛县| 塔河县| 安塞县| 百色市| 汕尾市| 金山区| 寻乌县| 民丰县| 沂南县| 岳普湖县| 漳州市| 鲜城| 霍邱县| 湖北省| 合肥市| 祁东县| 昂仁县| 临颍县| 凤山市| 文安县| 和顺县| 武威市| 调兵山市|