【技術實現步驟摘要】
一種基于浮點格式感知模糊測試的浮點異常檢測方法
[0001]本專利技術主要涉及到軟件系統的安全檢測
,特指一種基于浮點格式感知模糊測試的浮點異常檢測方法。
技術介紹
[0002]隨著信息化的發展,計算機應用日益廣泛與深入,軟件系統的安全性和可靠性也越來越受到重視。在現代計算機系統中,浮點運算普遍存在,在一些涉及大量科學和工程計算的軟件中都存在著浮點運算,由于浮點數是實數的近似,是實數的一個有限真子集,它的精度和表示范圍有限,這就導致浮點運算過程中可能會產生異常。
[0003]根據IEEE
?
754浮點標準,浮點運算中所出現的浮點異常被分為五種類型,分別是上溢出、下溢出、被零除、無效運算和不精確異常。在涉及國防、航空航天、金融、交通、醫療等安全攸關領域的系統控制軟件中,一旦在浮點運算中出現浮點異常,將會導致計算程序故障,進而引起災難性的后果。
[0004]例如,在1996年6月,由歐洲航天局所研發的一架“阿麗亞娜5號
”?
(Ariane5)一次性無人運載火箭在發射后約40秒時發生了爆炸,造成了數億美元的損失。經調查顯示,造成火箭爆炸的原因在于助推系統的軟件錯誤,在該系統中將一個64位浮點數轉化為一個16位有符號整數時引起了數據精度的丟失,導致運算結果出錯,最終致使火箭發射不久后發生爆炸。從該案例可以看出,浮點運算的可信性很大程度上影響著軟件系統的可靠性。因此,在軟件真正運行之前檢測程序中潛在的浮點異常對于保證軟件系統的可靠性至關重要。
[0005]數值程 ...
【技術保護點】
【技術特征摘要】
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...
【專利技術屬性】
技術研發人員:陳立前,馬成虎,王戟,易昕,范廣生,毛曉光,陳振邦,董威,
申請(專利權)人:中國人民解放軍國防科技大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。