|
這兩年,隨著大模型代碼能力的增強,很多公司已經在采用大模型編寫代碼,大大提升效率。 大模型雖然代碼寫得快,但寫的代碼并不安全,很多甚至不如成熟程序員寫的代碼。一方面,代碼生成速度大幅提升,另一方面,代碼質量并不提高,結果就是對測試越來越大的挑戰(zhàn)。 怎么辦?用大模型對抗大模型是現在比較流行的方法。大模型在安全測試方面也有了很多的發(fā)展。Fuzzing就是一個比較重要的領域。 Code Intelligence是一家德國公司,他們的CI Spark利用生成式 AI 的代碼分析和生成功能來自動生成模糊測試,這是 AI 驅動的白盒測試的核心。 它的主要能力包括: 識別接受用戶控制輸入的入口點 識別有效的 API 序列及可觸發(fā)的行為 識別 API 的有效參數 處理數據流和控制流依賴關系
簡單地說,它可以自動識別模糊測試候選對象并自動生成模糊測試的代碼。此外,CI Spark 提供了一種交互模式,允許用戶快速與之交互以糾正任何漏報并提高生成測試的質量。嗯嗯,自然語言交互。 Code Intelligence的網站上提供了一個Demo,地址在https://www./product-ci-spark 在Demo中,體現了幾個特點: 測試代碼生成直接整合進IDE中。

IDE右邊的部分用于交互。 2. 自然語言交互的測試代碼生成能力 
要求檢查生成的代碼里不能有”<script”,防止SQL注入。直接生成測試的Java代碼。 還可以更詳細的要求,增加一個有意義的輸出: 
看上去生成的測試代碼還可以。 3. 測試代碼可以直接保存到項目中,測試結果可以直接在IDE中運行 
準確地找到了相關代碼的位置??瓷先y試效果還可以。 有一篇論文專門研究了大模型用于模糊測試的情況: 
https:///html/2402.00350v1 文章對眾多的大模型Fuzzing測試的工具做了調查:
 得到如下結論:與傳統(tǒng)的fuzzer相比,基于大模型的fuzzer有以下優(yōu)點:CHATAFL 作為一種基于大型語言模型的網絡協(xié)議模糊測試技術,與 AFLNET Pham等同類最先進的模糊測試工具相比,具有更高的平均代碼覆蓋率 (2020)和NSFuzz Qin等人(2023),這些工具沒有使用 LLM 技術。與 AFLNET 相比,CHATAFL 的分支覆蓋率平均高出 5.8%。與 NSFuzz 相比,這一數字上升到 6.7%。這表明 CHATAFL 的檢測范圍更廣,發(fā)現未知 bug 的幾率更高。從整體代碼來看,TitanFuzz 在 PyTorch 和 TensorFlow 上分別實現了 20.98% 和 39.97% 的代碼覆蓋率,遠超 DeepREL 和 Muffin。相比 DeepREL,TitanFuzz 在 PyTorch 和 TensorFlow 上的代碼覆蓋率分別提升了 50.84% 和 30.38%。雖然 TitanFuzz 的時間成本較高,但僅使用種子生成函數并針對 DeepREL 覆蓋的 API 進行測試的效果明顯優(yōu)于 DeepREL,并且耗時更少,這體現了直接使用 LLM 生成高質量種子的優(yōu)勢。傳統(tǒng)的模糊測試器通常根據給定的規(guī)則或方法隨機生成測試用例。此類方法缺乏對代碼結構、邏輯和上下文的深入了解。因此,它們可能無法有效地探索復雜的編程模式或識別高級漏洞。此外,傳統(tǒng)的模糊測試器通常不會利用歷史錯誤數據或編程模式。相比之下,LLM 可以從大量歷史代碼和錯誤中學習,從而能夠模擬過去的錯誤模式并發(fā)現新的漏洞。在 FuzzGPT 的實驗中,總共檢測到 76 個錯誤,其中 61 個得到確認,包括 49 個已確認為以前未知的錯誤(其中 6 個已修復)。更重要的是,FuzzGPT 檢測到 11 個新的高優(yōu)先級錯誤或安全漏洞。這表明基于 LLM 的模糊測試器可以找到更深層次的編程漏洞。例如,當使用CHATAFL、NSFUZZ和AFLNET測試同一目標時,在相同的運行次數和時間下,CHATAFL在測試目標中發(fā)現了9個新漏洞。相比之下,NSFUZZ只發(fā)現了4個漏洞,而AFLNET發(fā)現了3個漏洞。Fuzz4All 表現出色,已在 GCC、Clang、OpenJDK 等廣泛使用的系統(tǒng)中發(fā)現 76 個漏洞,其中 47 個漏洞已被確認為未知漏洞。傳統(tǒng)的模糊測試需要大量的時間、精力和人工。種子生成是模糊測試中不可或缺的一部分,創(chuàng)建多樣化且有效的輸入需要大量的人工和專業(yè)知識。此外,使用現有種子通過變異生成新輸入也非常耗時。使用大型語言模型自動化模糊測試可以解決這些問題。InputBlaster 利用 LLM 的自動化功能根據輸入提示生成高質量的種子。每次測試后,它會根據不同的提示對種子進行變異,從而生成新的種子以供進一步測試。實施自動化模糊測試可以節(jié)省大量成本,預計這將是未來的一大趨勢。
|