1. 程式人生 > >NEUZZ分析:一種新型模糊測試程序

NEUZZ分析:一種新型模糊測試程序

需要 過濾 解決 neu 可擴展 目標 nbsp 覆蓋率 邊緣

從概念上講,模糊是一個優化問題,其目標是最大限度地在給定時間的測試中發現觸發漏洞的程序輸入的數量。

目前主流的模糊測試思路是使用進化算法來解決底層優化問題-生成新的輸入,最大限度地提高代碼覆蓋率。進化優化從一組種子輸入開始,將隨機突變應用於種子生成新的測試輸入,執行這些輸入的目標程序,並只保留有希望的新輸入 。這樣存在的問題是輸入語料庫越來越大時,達到新的代碼位置的效率會越低。

本文介紹了一種新的,高效的,可擴展的程序平滑技術,使用前饋神經網絡 (NNs),可以增量學習復雜的平滑逼近, 真實世界的程序分支行為,即由特定給定的輸入預測目標程序的控制流邊緣。首先確定程序平滑的意義,采用高效的梯度引導技術進行模糊處理。並有一個有效的和可擴展的程序平滑技術使用代理神經網絡有效地建模目標程序的分支行為,並進一步提出了一種增量學習技術,以隨著訓練數據的曾多叠代地改進代理模型。

如何將模糊轉換為優化問題:

梯度引導:

平滑逼近:

增量學習:在一開始NN模型可能只能覆蓋程序空間的一小部分,所以需要通過增量訓練進一步細化模型。本文設計了一種新的覆蓋的過濾方案,該方案創建了舊數據和新數據的濃縮摘要,使得訓練更有效。

NEUZZ分析:一種新型模糊測試程序