Google指出,善用大型語言模型(Large Language Model,LLM)可自動(dòng)化開源軟件漏洞模糊測(cè)試計(jì)劃OSS-Fuzz,進(jìn)而使程序代碼的檢查范圍平均提升1.5%到31%。Google計(jì)劃之后發(fā)布工具,讓其他開發(fā)人員也能用LLM對(duì)開源項(xiàng)目自行模糊測(cè)試。
模糊測(cè)試(fuzz testing)為于軟件中輸入無效或隨機(jī)數(shù)據(jù),來快速及全面監(jiān)控程序的反應(yīng),經(jīng)常被用來檢測(cè)軟件或計(jì)算機(jī)系統(tǒng)的安全漏洞。Google 2016年發(fā)布針對(duì)開源軟件的模糊測(cè)試項(xiàng)目OSS-Fuzz,以協(xié)助開發(fā)人員尋找軟件中的瑕疵或安全漏洞。一開始支持C與C++語言,幾年下來擴(kuò)大到JVM/Java、Rust、Go與Python,也可以用于LLVM支持的語言。幾個(gè)月前,Google OSS-Fuzz項(xiàng)目小組做了一項(xiàng)實(shí)驗(yàn),使用Google大型模型語言(LLM)來提升OSS-Fuzz的性能。他們發(fā)現(xiàn)LLM可有效擴(kuò)大OSS-Fuzz服務(wù)對(duì)項(xiàng)目程序代碼覆蓋率,且不需撰寫新的程序代碼。
OSS-Fuzz自2016年迄今,已識(shí)別出超過1,000個(gè)安全漏洞,但是Google認(rèn)為可以再更多。目前OSS-Fuzz一項(xiàng)開源項(xiàng)目程序代碼的平均覆蓋率僅為30%,即大部分程序代碼都被遺漏了,因此項(xiàng)目小組相信,如果擴(kuò)大fuzz target,可以找到更多漏洞。Fuzz target是發(fā)送隨機(jī)輸入值測(cè)試程序代碼的函數(shù),但是撰寫fuzz target得依不同項(xiàng)目進(jìn)行,且需要人力花時(shí)間撰寫,問題是這些項(xiàng)目維護(hù)人員通常是志工,吃力又不討好。
為此Google訓(xùn)練LLM來撰寫模糊測(cè)試fuzz target函數(shù)。項(xiàng)目小組寫了一個(gè)評(píng)估框架架在OSS-Fuzz的檢查工具和LLM之間并展開實(shí)驗(yàn)。他們Fuzz檢查工具(Introspector tool)找出樣本項(xiàng)目的程序代碼未經(jīng)模糊測(cè)試的部分,將程序代碼送到評(píng)估框架。評(píng)估框架發(fā)出一項(xiàng)提示,包含一些項(xiàng)目必要資訊,要求LLM撰寫新的fuzz target。之后評(píng)估框架以LLM撰寫的fuzz target執(zhí)行模糊測(cè)試,再觀察執(zhí)行結(jié)果及覆蓋率。如果fuzz target無法匯編,評(píng)估框架就會(huì)要求LLM修改fuzz target直到修正錯(cuò)誤。
一開始,LLM撰寫的fuzz target程序代碼的確無法匯編,但重復(fù)幾次并測(cè)試新的fuzz target后,研究人員發(fā)現(xiàn),開源項(xiàng)目程序代碼覆蓋率平均增加了1.5%到31%。Google的樣本項(xiàng)目之一tinyxml2的程序代碼覆蓋率則由38%上升到69%,項(xiàng)目小組完全零介入。研究人員說,若以人力撰寫來復(fù)制tinyxml2的結(jié)果,至少需要一天時(shí)間。這意味著,整個(gè)OSS-Fuzz現(xiàn)有處理的1,000多個(gè)項(xiàng)目,要以人力來擴(kuò)大覆蓋率,得花好幾年。
Google以LLM測(cè)試OpenSSL項(xiàng)目時(shí),撰寫了一個(gè)新的target,在之前沒測(cè)試的程序代碼又發(fā)現(xiàn)了CVE-2022-3602。這雖非新漏洞,但也顯示,只要擴(kuò)大程序代碼覆蓋率,就可能找出更多漏洞。
基于tinyxml2實(shí)驗(yàn)的成功證明,加入LLM有望能大幅提升程序代碼覆蓋,Google希望把LLM的自動(dòng)化技術(shù)正式用在其他OSS-Fuzz項(xiàng)目上。
幾個(gè)月后,Google會(huì)將其評(píng)估框架開源,讓其他研究人員測(cè)試其LLM撰寫的fuzz target。Google也會(huì)持續(xù)改善其LLM撰寫fuzz target的能力及基礎(chǔ)架構(gòu),并且和Google Assured OSS部門合作,以便確保Google Cloud客戶拿到更安全的開源軟件。