• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于浮點格式感知模糊測試的浮點異常檢測方法技術

    技術編號:36692066 閱讀:21 留言:0更新日期:2023-02-27 20:00
    本發明專利技術公開了一種基于浮點格式感知模糊測試的浮點異常檢測方法,其包括:步驟S1:靜態分析和插樁;利用靜態分析技術識別并得到程序中所有的浮點操作以及程序的控制流圖信息,定義并插樁相應的檢測函數;為每個浮點操作插入了ErrBits函數,所述ErrBits函數用于度量一個測試輸入距離觸發潛在浮點異常的距離;步驟S2:浮點格式感知的模糊測試;針對步驟S1插樁后的代碼,對其進行結合浮點異常距離極小化和分支覆蓋信息為指導的模糊測試來檢測程序中潛在的浮點異常。本發明專利技術具有原理簡單、操作簡便、誤報率較低、可伸縮性較好的等優點。可伸縮性較好的等優點。可伸縮性較好的等優點。

    【技術實現步驟摘要】
    一種基于浮點格式感知模糊測試的浮點異常檢測方法


    [0001]本專利技術主要涉及到軟件系統的安全檢測
    ,特指一種基于浮點格式感知模糊測試的浮點異常檢測方法。

    技術介紹

    [0002]隨著信息化的發展,計算機應用日益廣泛與深入,軟件系統的安全性和可靠性也越來越受到重視。在現代計算機系統中,浮點運算普遍存在,在一些涉及大量科學和工程計算的軟件中都存在著浮點運算,由于浮點數是實數的近似,是實數的一個有限真子集,它的精度和表示范圍有限,這就導致浮點運算過程中可能會產生異常。
    [0003]根據IEEE
    ?
    754浮點標準,浮點運算中所出現的浮點異常被分為五種類型,分別是上溢出、下溢出、被零除、無效運算和不精確異常。在涉及國防、航空航天、金融、交通、醫療等安全攸關領域的系統控制軟件中,一旦在浮點運算中出現浮點異常,將會導致計算程序故障,進而引起災難性的后果。
    [0004]例如,在1996年6月,由歐洲航天局所研發的一架“阿麗亞娜5號
    ”?
    (Ariane5)一次性無人運載火箭在發射后約40秒時發生了爆炸,造成了數億美元的損失。經調查顯示,造成火箭爆炸的原因在于助推系統的軟件錯誤,在該系統中將一個64位浮點數轉化為一個16位有符號整數時引起了數據精度的丟失,導致運算結果出錯,最終致使火箭發射不久后發生爆炸。從該案例可以看出,浮點運算的可信性很大程度上影響著軟件系統的可靠性。因此,在軟件真正運行之前檢測程序中潛在的浮點異常對于保證軟件系統的可靠性至關重要。
    [0005]數值程序浮點異常檢測方法的目的是,在軟件發生故障之前檢測潛在的浮點異常以保證軟件的可靠性。現有的浮點異常檢測方法主要采用靜態分析方法,主要包括以下2個步驟:
    [0006]S1:對數值程序中不同類型的浮點運算構造相應的浮點約束,使得違法該約束時的測試輸入是觸發浮點異常的輸入。
    [0007]S2:基于S1構造了浮點約束的程序源代碼,開展靜態分析(如符號執行),分析得到程序中潛在的浮點異常。
    [0008]上述現有分析方法主要采用靜態分析的方法,在檢測數值程序中的浮點異常時由于過近似容易導致一些誤報。
    [0009]上述現有分析方法的可伸縮性有限,現有分析方法一般先對源程序進行浮點約束的構造,然后利用SMT求解器來求解。但是實際數值程序中可能有成千上萬的浮點運算,并且使用SMT求解器來求解浮點約束是非常昂貴的,一般可伸縮性有限。

    技術實現思路

    [0010]本專利技術要解決的技術問題就在于:針對現有技術存在的技術問題,本專利技術提供一種原理簡單、操作簡便、誤報率較低、可伸縮性較好的基于浮點格式感知模糊測試的浮點異常檢測方法。
    [0011]為解決上述技術問題,本專利技術采用以下技術方案:
    [0012]一種基于浮點格式感知模糊測試的浮點異常檢測方法,其包括:
    [0013]步驟S1:靜態分析和插樁;利用靜態分析技術識別并得到程序中所有的浮點操作以及程序的控制流圖信息,定義并插樁相應的檢測函數;為每個浮點操作插入了ErrBits函數,所述ErrBits函數用于度量一個測試輸入距離觸發潛在浮點異常的距離;
    [0014]步驟S2:浮點格式感知的模糊測試;針對步驟S1插樁后的代碼,對其進行結合浮點異常距離極小化和分支覆蓋信息為指導的模糊測試來檢測程序中潛在的浮點異常。
    [0015]作為本專利技術方法的進一步改進:所述步驟S1的流程包括:
    [0016]步驟S11:識別浮點操作;通過靜態分析識別目標程序中所有浮點操作;
    [0017]步驟S12:進行代碼插樁;基于LLVM框架,將異常檢測函數和ErrBits函數插樁到原始程序中的浮點操作后,根據不同類型的浮點操作插樁相應的異常檢測函數。
    [0018]作為本專利技術方法的進一步改進:所述步驟S1中,基于程序的控制流信息,對程序進行插樁以記錄運行時的分支覆蓋信息。
    [0019]作為本專利技術方法的進一步改進:所述步驟S2的流程包括:
    [0020]步驟S21:輸入為步驟S1插樁后的程序和初始測試輸入,輸出為BuggyS,是觸發目標程序中浮點異常的測試用例集;
    [0021]步驟S22:當模糊測試運行時間沒有超過預定義閾值時限時,首先,從種子隊列中選擇一個輸入s,對其進行變異并生成變異后的輸入s

    ;然后,運行該變異后的輸入s

    并監控其執行狀態,收集距離浮點異常信息以及程序分支覆蓋信息;
    [0022]步驟S23:如果所述變異的輸入s

    距離觸發浮點異常更近,即本次執行距離浮點異常信息CurSet_ErrBits中存在潛在異常位置的ErrBits值比目前最新的距離浮點異常信息Set_ErrBits中相應的潛在異常位置的ErrBits值小,則利用CurSet_ErrBits的信息更新映射表Set_ErrBits,同時將該變異輸入s

    視為有趣的種子,并將其添加到種子隊列中以供后續進一步變異來生成更多可能有趣的測試輸入;或者,在所述變異的輸入s

    的執行過程中,覆蓋了之前沒有覆蓋到的程序位置,該輸入s

    也將被視為有趣的種子并添加到種子隊列中;
    [0023]步驟S24:如果發現此次輸入的執行導致目標程序崩潰,那么該輸入會被添加到收集觸發浮點異常用例集BuggyS中;最后當以浮點格式感知的模糊測試的運行時間達到預定義的時限閾值時,則結束運行過程并輸出觸發浮點異常測試用例集BuggyS。
    [0024]作為本專利技術方法的進一步改進:所述步驟S21中,在開始階段,將BuggyS 和CurSet_ErrBits初始化為空集,模糊測試種子池初始化為由初始測試輸入組成的隊列;所述CurSet_ErrBits表示在當前測試輸入運行中從所有異常位置到對應的ErrBits的映射。
    [0025]作為本專利技術方法的進一步改進:所述步驟S22中,在執行過程中,執行引擎將會維護CurSet_ErrBits和Set_ErrBits兩個變量,所述Set_ErrBits是一個全局映射,在每個異常位置保留最小的ErrBits信息。在當前執行結束后,執行引擎將獲取到此次執行的浮點異常距離信息CurSet_ErrBits和當前最新的Set_ErrBits信息。
    [0026]作為本專利技術方法的進一步改進:所述步驟S23中,對于指數和尾數,包括位翻轉變異策略:在位翻轉策略下,針對指數位,在一個隨機位置翻轉一個隨機位,并翻轉一個隨機選擇的連續的n位;其中n為2,3,4和8;尾數位的翻轉操作與指數位相同,但為n增加了一個
    新值,為16。
    [0027]作為本專利技術方法的進一步改進:所述步驟S23中,對于指數和尾數,包括算術操作策略:針對指數位,給它加一個整數,該整數從1到32;相反的變異操作是從中減去這個整數;尾數位的算術運算與指數位相同,但這個整數是2
    m
    ?
    1,其中m是從1到33。
    [002本文檔來自技高網
    ...

    【技術保護點】

    【技術特征摘要】
    1.一種基于浮點格式感知模糊測試的浮點異常檢測方法,其特征在于,包括:步驟S1:靜態分析和插樁;利用靜態分析技術識別并得到程序中所有的浮點操作以及程序的控制流圖信息,定義并插樁相應的檢測函數;為每個浮點操作插入了ErrBits函數,所述ErrBits函數用于度量一個測試輸入距離觸發潛在浮點異常的距離;步驟S2:浮點格式感知的模糊測試;針對步驟S1插樁后的代碼,對其進行結合浮點異常距離極小化和分支覆蓋信息為指導的模糊測試來檢測程序中潛在的浮點異常。2.根據權利要求1所述的基于浮點格式感知模糊測試的浮點異常檢測方法,其特征在于,所述步驟S1的流程包括:步驟S11:識別浮點操作;通過靜態分析識別目標程序中所有浮點操作;步驟S12:進行代碼插樁;基于LLVM框架,將異常檢測函數和ErrBits函數插樁到原始程序中的浮點操作后,根據不同類型的浮點操作插樁相應的異常檢測函數。3.根據權利要求2所述的基于浮點格式感知模糊測試的浮點異常檢測方法,其特征在于,所述步驟S1中,基于程序的控制流信息,對程序進行插樁以記錄運行時的分支覆蓋信息。4.根據權利要求1或2或3中任意一項所述的基于浮點格式感知模糊測試的浮點異常檢測方法,其特征在于,所述步驟S2的流程包括:步驟S21:輸入為步驟S1插樁后的程序和初始測試輸入,輸出為BuggyS,是觸發目標程序中浮點異常的測試用例集;步驟S22:當模糊測試運行時間沒有超過預定義閾值時限時,首先,從種子隊列中選擇一個輸入s,對其進行變異并生成變異后的輸入s

    ;然后,運行該變異后的輸入s

    并監控其執行狀態,收集距離浮點異常信息以及程序分支覆蓋信息;步驟S23:如果所述變異的輸入s

    距離觸發浮點異常更近,即本次執行距離浮點異常信息CurSet_ErrBits中存在潛在異常位置的ErrBits值比目前最新的距離浮點異常信息Set_ErrBits中相應的潛在異常位置的ErrBits值小,則利用CurSet_ErrBits的信息更新映射表Set_ErrBits,同時將該變異輸入s

    視為有趣的種子,并將其添加到種子隊列中以供后續進一步變異來生成更多可能有趣的測試輸入;或者,在所述變異的輸入s

    的執行過程中,覆蓋了之前沒有覆蓋到的程序位置,該輸入s

    也將被視為有趣的種子并添加到種子隊列中;步驟S24:如果發現此次輸入的執行導致目標程序崩潰,那么該輸入會被添加到收集觸發浮點異常用例集BuggyS中;最后當以浮點格式感知的模糊測試的運行時間達到預定義的時限閾值時,則結束運行過程并輸出觸發浮點異常測試用例集BuggyS。5.根據權利要求4所述的基于浮點格式感知模糊測試的浮點異常檢測方法,其特征在于,所述步驟S21中,在開始階段,將BuggyS和CurSet_ErrBits初始化為空集,模糊測試種子池初始化為由初始測試輸入組成的隊列;所述CurSet_ErrBits表示在當前測試輸入運行中從所有異常位置到對應的ErrBits的映射。6.根據權利要求4所述的基于浮點格式感知模糊測試的浮點異常檢測方法,其特征在于,所述步驟S2...

    【專利技術屬性】
    技術研發人員:陳立前馬成虎王戟易昕范廣生毛曉光陳振邦董威
    申請(專利權)人:中國人民解放軍國防科技大學
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 97性无码区免费| 亚洲国产精品无码中文字| 玖玖资源站无码专区| 久久精品无码一区二区无码| 亚洲AV无码国产精品永久一区| 成人免费无码大片A毛片抽搐| 亚洲Av永久无码精品三区在线 | 麻豆亚洲AV永久无码精品久久| 狠狠精品干练久久久无码中文字幕| 亚洲精品无码成人AAA片| 伊人久久大香线蕉无码麻豆| 亚洲AV无码久久精品蜜桃| 在线观看无码的免费网站| 亚洲AV无码国产精品色| 国产精品无码专区| 最新高清无码专区| 日韩经典精品无码一区| 无码人妻久久一区二区三区免费丨| 国精品无码一区二区三区在线| 国产精品无码专区在线播放| 亚洲av无码电影网| 精品无码无人网站免费视频| 亚洲精品无码鲁网中文电影| 永久免费av无码网站yy| 亚洲精品无码AV中文字幕电影网站| 亚洲AV无码精品国产成人| 亚洲av无码片vr一区二区三区| 日韩免费人妻AV无码专区蜜桃| 成人无码AV一区二区| 免费无码黄网站在线看| 国精品无码一区二区三区在线蜜臀| 国产AV无码专区亚洲精品| 国产成人无码精品久久久久免费 | 无码人妻精品一区二区三18禁| 成在人线av无码免费高潮水| 精品无码人妻一区二区三区不卡| 亚洲a无码综合a国产av中文| 国产免费av片在线无码免费看| 好了av第四综合无码久久| 在线观看无码的免费网站| 粉嫩高中生无码视频在线观看|