av天堂久久天堂色综合,最近中文字幕mv免费高清在线,在线a级毛片免费视频,av动漫,中文字幕精品亚洲无线码一区

微信掃一掃,關注公眾號

  • 科技行者

  • 算力行者

見證連接與計算的「力量」

首頁 德州農(nóng)工大學開發(fā)的"模糊大腦"系統(tǒng):用AI在網(wǎng)絡安全競賽中找出軟件漏洞并自動修復

德州農(nóng)工大學開發(fā)的"模糊大腦"系統(tǒng):用AI在網(wǎng)絡安全競賽中找出軟件漏洞并自動修復

2025-09-25 14:39
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2025-09-25 14:39 ? 科技行者

在網(wǎng)絡安全日益重要的今天,軟件漏洞就像房子的隱蔽裂縫一樣,看不見摸不著,但一旦被惡意利用就可能造成巨大損失。傳統(tǒng)上,找出這些"裂縫"并修補它們需要經(jīng)驗豐富的安全專家花費大量時間。然而,來自德州農(nóng)工大學、香港城市大學和倫敦帝國理工學院的研究團隊開發(fā)了一個名為"FuzzingBrain(模糊大腦)"的智能系統(tǒng),它能夠像經(jīng)驗豐富的安全專家一樣自動發(fā)現(xiàn)軟件漏洞并生成修復補丁。這項由德州農(nóng)工大學的Jeff Huang教授領導的研究于2025年發(fā)表在人工智能網(wǎng)絡挑戰(zhàn)賽(AIxCC)上,展示了人工智能在網(wǎng)絡安全防護方面的巨大潛力。

這個研究團隊包括來自德州農(nóng)工大學的Ze Sheng、Qingxiao Xu、Jianwei Huang、Matthew Woodcock和Guofei Gu教授,以及香港城市大學的Heqing Huang和倫敦帝國理工學院的Alastair F. Donaldson。他們的團隊名為"All You Need Is A Fuzzing Brain",在DARPA(美國國防高級研究計劃局)舉辦的人工智能網(wǎng)絡挑戰(zhàn)賽中獲得第四名的優(yōu)異成績。

這項研究的意義遠超學術范疇。當前,網(wǎng)絡攻擊事件層出不窮,從個人信息泄露到企業(yè)系統(tǒng)被攻擊,很多都源于軟件中未被發(fā)現(xiàn)的安全漏洞。傳統(tǒng)的漏洞檢測需要安全專家手動分析代碼,這個過程既耗時又容易遺漏。FuzzingBrain系統(tǒng)的出現(xiàn),就像給每個軟件項目配備了一個永不疲憊的安全專家,能夠24小時不間斷地尋找潛在威脅并提出解決方案。

在比賽期間,這個系統(tǒng)展現(xiàn)出了令人印象深刻的能力:它自主發(fā)現(xiàn)了28個安全漏洞,其中包括6個此前從未被發(fā)現(xiàn)的"零日漏洞"(即全新的、未知的安全威脅),并成功修復了其中的14個。更重要的是,研究團隊將整個系統(tǒng)開源,任何人都可以通過GitHub獲取完整代碼,這意味著這項技術的影響力將遠遠超出學術界。

一、什么是網(wǎng)絡安全中的"模糊測試"

要理解FuzzingBrain系統(tǒng)的工作原理,我們需要先了解什么是"模糊測試"。這就像是給軟件進行"壓力測試",但不是測試它能承受多大的工作量,而是測試它面對各種意想不到的輸入時會不會"崩潰"。

傳統(tǒng)的模糊測試就像一個不斷往軟件里塞各種奇怪數(shù)據(jù)的機器人。比如說,如果一個程序期望用戶輸入一個正常的電話號碼,模糊測試工具就會故意輸入一些奇怪的東西:超長的數(shù)字串、包含特殊符號的文本,甚至是完全隨機的字符。如果程序在處理這些"不正常"輸入時出現(xiàn)錯誤、崩潰或者泄露敏感信息,那就說明存在安全漏洞。

這個過程有點像考試時故意出一些刁鉆題目來測試學生的真實水平。正常情況下,學生可能表現(xiàn)很好,但面對意外情況時就暴露出知識的漏洞。軟件也是如此,在正常使用時看起來運行良好,但遇到惡意構造的輸入時就可能出現(xiàn)問題。

然而,傳統(tǒng)的模糊測試存在明顯缺陷。它就像一個盲人在黑暗中尋找東西,完全依賴隨機碰運氣。雖然通過大量的隨機嘗試確實能找到一些問題,但效率很低,而且容易遺漏深層次的、需要特定觸發(fā)條件的漏洞。這就是為什么研究團隊要開發(fā)"智能"的模糊測試系統(tǒng)。

FuzzingBrain的革命性之處在于它將大語言模型(LLM)的智能引入了傳統(tǒng)的模糊測試過程。如果說傳統(tǒng)模糊測試是一個盲目的機器人,那么FuzzingBrain就是一個具有專業(yè)知識和推理能力的安全專家。它不僅能夠生成測試數(shù)據(jù),還能理解代碼結構、分析漏洞類型,并根據(jù)測試結果不斷調(diào)整策略。

這種智能化的測試方法帶來了顯著的效果提升。在實際比賽中,F(xiàn)uzzingBrain發(fā)現(xiàn)的絕大多數(shù)漏洞都是通過基于大語言模型的智能策略找到的,傳統(tǒng)的隨機模糊測試只貢獻了少數(shù)幾個發(fā)現(xiàn)。這說明了人工智能在安全領域的巨大潛力。

二、FuzzingBrain系統(tǒng)的整體架構

FuzzingBrain系統(tǒng)的設計就像一個高度協(xié)調(diào)的工廠流水線,每個組件都有明確的職責,同時又能夠高效協(xié)作。整個系統(tǒng)由四個核心服務組成,它們之間的配合就像交響樂團中的不同樂器部分一樣和諧統(tǒng)一。

系統(tǒng)的"總指揮"是CRS Web服務,它負責接收挑戰(zhàn)任務、分解工作、構建測試環(huán)境,并將具體任務分配給其他組件。這就像一個項目經(jīng)理,既要理解整體目標,又要確保每個團隊成員都知道自己該做什么。當系統(tǒng)收到一個新的軟件項目需要檢測時,CRS Web服務首先會分析項目特點,準備相應的測試工具,然后創(chuàng)建隔離的工作環(huán)境,確保不同的測試任務之間不會相互干擾。

靜態(tài)分析服務扮演著"情報分析師"的角色。它負責分析軟件代碼的結構,回答諸如"這個函數(shù)能從程序入口到達嗎?"、"調(diào)用這個函數(shù)需要經(jīng)過哪些步驟?"等關鍵問題。這些信息對于后續(xù)的漏洞發(fā)現(xiàn)至關重要,就像醫(yī)生在診斷疾病前需要了解人體結構一樣,安全測試也需要先理解軟件的"解剖結構"。

工作服務是系統(tǒng)的"實際執(zhí)行者",負責運行各種智能策略來發(fā)現(xiàn)漏洞和生成修復補丁。這些服務運行在大約100個虛擬機上,每個虛擬機可以同時運行成百上千個測試進程。這種大規(guī)模并行處理能力確保了系統(tǒng)能夠在有限時間內(nèi)測試盡可能多的可能性。

提交服務則像"質(zhì)量控制部門",負責檢查發(fā)現(xiàn)的漏洞和生成的補丁是否有效,去除重復項,并與比賽系統(tǒng)進行交互。這個組件還負責將相關的發(fā)現(xiàn)組織成完整的報告,確保每個安全問題都能得到妥善處理。

系統(tǒng)最巧妙的設計之一是任務分解策略。當收到一個復雜的軟件項目時,系統(tǒng)會將其分解為許多小的、獨立的測試任務。每個任務對應一個特定的測試工具(稱為"fuzzer")和一種特定的錯誤檢測機制(稱為"sanitizer")。這就像把一個大房子的安全檢查分解為檢查每個房間的門窗、電路、水管等具體任務。

以一個名為dropbear的開源軟件項目為例,系統(tǒng)發(fā)現(xiàn)它包含17個不同的測試入口,每個入口又可以配合三種不同的錯誤檢測機制,最終生成了超過50個獨立的測試任務。這些任務可以在不同的虛擬機上同時執(zhí)行,大大提高了測試效率。

為了避免重復勞動和資源浪費,系統(tǒng)實現(xiàn)了智能的任務調(diào)度機制。當一個測試任務發(fā)現(xiàn)了漏洞后,系統(tǒng)會自動調(diào)整其他相關任務的優(yōu)先級和資源分配,確保整體效率最大化。同時,系統(tǒng)還實現(xiàn)了多種容錯機制,當某個組件出現(xiàn)問題時,其他組件可以繼續(xù)工作,保證整體系統(tǒng)的穩(wěn)定性。

三、基于大語言模型的智能漏洞發(fā)現(xiàn)

FuzzingBrain系統(tǒng)的核心創(chuàng)新在于將大語言模型的推理能力引入漏洞發(fā)現(xiàn)過程。這就像給傳統(tǒng)的"試錯"方法裝上了一個智能大腦,讓原本盲目的測試過程變得有的放矢。

系統(tǒng)實現(xiàn)了10種不同的智能漏洞發(fā)現(xiàn)策略,每種策略都針對特定的場景和問題類型。這些策略的工作方式類似于經(jīng)驗豐富的安全專家分析代碼的思路,但執(zhí)行速度要快得多,而且永不疲憊。

最基礎的策略采用了對話式的分析方法。系統(tǒng)會向大語言模型描述待檢測的代碼變更,就像向?qū)<易稍儯?這段新加入的代碼可能存在什么安全問題?能否設計一個輸入來觸發(fā)潛在的漏洞?" 大語言模型基于其訓練時學到的大量安全知識,會分析代碼邏輯,推測可能的問題點,并生成相應的測試數(shù)據(jù)。

這個過程最有趣的地方在于它的迭代改進機制。當?shù)谝淮紊傻臏y試數(shù)據(jù)沒有發(fā)現(xiàn)問題時,系統(tǒng)不會簡單地放棄,而是會分析失敗的原因,然后調(diào)整策略再次嘗試。這就像一個偵探在調(diào)查案件時,如果某個線索沒有結果,會根據(jù)新的信息調(diào)整調(diào)查方向。

舉個具體例子,假設系統(tǒng)正在測試一個處理用戶輸入的函數(shù)。第一次嘗試時,大語言模型可能會生成一個超長的字符串來測試緩沖區(qū)溢出。如果這個測試沒有發(fā)現(xiàn)問題,系統(tǒng)會分析程序的執(zhí)行過程,發(fā)現(xiàn)程序在某個特定分支中可能存在其他類型的問題,然后生成針對那個分支的特定測試數(shù)據(jù)。

系統(tǒng)還實現(xiàn)了多輸入生成策略。與傳統(tǒng)方法每次只生成一個測試用例不同,高級策略會同時生成多個相關的測試用例,從不同角度探索同一個潛在問題。這就像醫(yī)生為了確診一個疾病會同時進行多種檢查,提高診斷的準確性和全面性。

針對不同類型的安全漏洞,系統(tǒng)采用了專門化的檢測策略。對于C/C++程序,系統(tǒng)重點關注內(nèi)存安全問題,如緩沖區(qū)溢出、空指針訪問、整數(shù)溢出等。對于Java程序,系統(tǒng)則更關注注入攻擊、反序列化漏洞、路徑遍歷等Web應用常見的安全問題。每種漏洞類型都有相應的檢測模板和測試策略,確保系統(tǒng)能夠有針對性地發(fā)現(xiàn)各類安全問題。

系統(tǒng)的另一個創(chuàng)新是覆蓋率引導的反饋機制。當測試數(shù)據(jù)未能觸發(fā)漏洞時,系統(tǒng)會分析這個測試究竟執(zhí)行了程序的哪些部分,哪些部分沒有被執(zhí)行到,然后指導大語言模型生成能夠覆蓋更多代碼路徑的測試數(shù)據(jù)。這種方法確保了測試的全面性,避免了重要代碼路徑被遺漏的風險。

在處理復雜軟件項目時,系統(tǒng)還實現(xiàn)了智能的函數(shù)排序和優(yōu)先級分析。面對一個包含數(shù)千個函數(shù)的大型項目,系統(tǒng)會首先分析哪些函數(shù)更可能包含安全漏洞,然后優(yōu)先測試這些高風險函數(shù)。這種策略大大提高了在有限時間內(nèi)發(fā)現(xiàn)關鍵漏洞的概率。

四、智能補丁生成技術

發(fā)現(xiàn)漏洞只是第一步,如何生成有效的修復補丁才是真正的技術挑戰(zhàn)。FuzzingBrain系統(tǒng)在這方面展現(xiàn)了令人印象深刻的能力,它不僅能找出問題,還能提出切實可行的解決方案。

系統(tǒng)的補丁生成過程就像一個經(jīng)驗豐富的程序員分析問題并提出修復方案的過程,但速度要快得多。當系統(tǒng)發(fā)現(xiàn)一個漏洞后,它會首先分析漏洞的根本原因,然后設計相應的修復策略,生成具體的代碼修改建議,最后驗證修復方案的有效性。

補丁生成的第一步是精確定位問題函數(shù)。系統(tǒng)會分析觸發(fā)漏洞的執(zhí)行路徑,識別出真正存在問題的代碼片段。這個過程類似于醫(yī)生根據(jù)癥狀找到病灶的位置。有時候,問題的表現(xiàn)和根本原因可能相距很遠,系統(tǒng)需要通過智能分析找到真正需要修改的地方。

接下來,系統(tǒng)會提取相關函數(shù)的完整信息,包括函數(shù)簽名、完整代碼、調(diào)用關系等。然后將這些信息連同漏洞的具體表現(xiàn)一起提供給大語言模型,讓它基于安全編程的最佳實踐來設計修復方案。

大語言模型在生成補丁時會考慮多個因素。首先是安全性,確保修復方案能夠真正解決identified的安全問題。其次是功能完整性,修復不能破壞軟件的正常功能。最后是代碼質(zhì)量,生成的補丁應該符合良好的編程實踐,不會引入新的問題。

系統(tǒng)實現(xiàn)了13種不同的補丁生成策略,每種策略都有不同的特點和適用場景。基礎策略采用直接的函數(shù)替換方法,將存在問題的函數(shù)重寫為安全版本。高級策略則會考慮更復雜的情況,比如需要同時修改多個相關函數(shù),或者需要添加額外的安全檢查。

其中一個特別有趣的策略是"專家分析增強"方法。這種方法會利用之前漏洞發(fā)現(xiàn)階段的分析結果,將對漏洞特征的深入理解融入補丁生成過程。就像一個醫(yī)生在開處方時會考慮之前的診斷結果一樣,這種方法確保了補丁的針對性和有效性。

系統(tǒng)還實現(xiàn)了樣本補丁目錄功能。通過分析大量已知的安全漏洞修復案例,系統(tǒng)建立了一個補丁模式庫。當遇到類似的漏洞時,系統(tǒng)可以參考這些成功的修復模式,生成更可靠的補丁方案。這就像醫(yī)生會參考醫(yī)學文獻中的成功治療案例來制定治療方案。

補丁驗證是整個過程中最關鍵的環(huán)節(jié)。一個補丁必須滿足四個嚴格的條件才被認為是有效的:代碼能夠正確編譯,能夠防止已知的攻擊,不會破壞軟件的正常功能,并且通過所有的回歸測試。這種全方位的驗證確保了生成的補丁不僅解決了安全問題,還保持了軟件的穩(wěn)定性和可用性。

當補丁驗證失敗時,系統(tǒng)會分析失敗原因,并將詳細的錯誤信息反饋給大語言模型,指導其生成改進的版本。這個迭代過程可能會重復多次,直到找到滿足所有條件的解決方案。這種持續(xù)改進的機制大大提高了補丁生成的成功率。

系統(tǒng)還實現(xiàn)了一種特殊的"XPatch"策略,專門處理那些難以直接發(fā)現(xiàn)漏洞但可能存在安全隱患的情況。這種策略會分析代碼變更,即使沒有具體的漏洞證據(jù),也會嘗試生成預防性的安全加固補丁。這種主動防御的思路在實際應用中具有重要價值。

五、大規(guī)模并行處理與性能優(yōu)化

FuzzingBrain系統(tǒng)的另一個技術亮點是其強大的并行處理能力。整個系統(tǒng)部署在約100臺虛擬機上,每臺機器配備32到192個處理器核心,每臺機器同時運行100到10000個并發(fā)線程。這種大規(guī)模的并行架構就像一個龐大的工廠,能夠同時處理成百上千個不同的任務。

系統(tǒng)的并行化設計遵循一個核心原則:任何可以并行化的組件都要并行化。這種設計哲學的背后是對效率的極致追求。在網(wǎng)絡安全競賽這種時間緊迫的環(huán)境中,能夠快速發(fā)現(xiàn)漏洞和生成補丁往往比完美的單一解決方案更有價值。

任務分發(fā)機制是整個并行架構的關鍵。當系統(tǒng)接收到一個軟件項目后,會自動將其分解為數(shù)十個甚至上百個獨立的測試任務。每個任務都可以在不同的虛擬機上獨立執(zhí)行,互不干擾。這就像一個大型餐廳,不同的廚師可以同時準備不同的菜品,每個人專注于自己的任務,但最終組合成完整的一餐。

為了最大化資源利用效率,系統(tǒng)實現(xiàn)了智能的負載均衡機制。當某些虛擬機的任務完成后,系統(tǒng)會自動將新的任務分配給它們,確保所有計算資源都得到充分利用。同時,系統(tǒng)還會根據(jù)不同類型任務的計算需求,將計算密集型和I/O密集型任務合理分配,避免資源競爭。

在實際運行過程中,研究團隊發(fā)現(xiàn)傳統(tǒng)的模糊測試工具對整體性能的貢獻相對有限,但消耗了大量的計算資源。因此,他們調(diào)整了資源分配策略,將更多的計算能力投入到基于大語言模型的智能策略上。這種優(yōu)化使得系統(tǒng)在相同的資源約束下能夠發(fā)現(xiàn)更多的漏洞。

系統(tǒng)還實現(xiàn)了動態(tài)的時間預算管理。當某個軟件項目已經(jīng)發(fā)現(xiàn)了漏洞后,系統(tǒng)會自動縮短對該項目其他測試任務的時間分配,將節(jié)省的計算資源投入到尚未取得進展的項目上。這種動態(tài)調(diào)整機制確保了整體效率的最大化。

內(nèi)存和存儲管理也是系統(tǒng)優(yōu)化的重點。由于并行策略會生成大量的測試文件,系統(tǒng)實現(xiàn)了智能的文件清理機制。測試文件會根據(jù)生成時間和使用頻率進行自動清理,既保證了有效文件的可用性,又避免了存儲空間的耗盡。

網(wǎng)絡通信的優(yōu)化同樣重要。在大規(guī)模并行環(huán)境中,不同組件之間的通信延遲可能成為性能瓶頸。系統(tǒng)通過優(yōu)化通信協(xié)議、減少不必要的數(shù)據(jù)傳輸、實現(xiàn)智能緩存等方式,最大程度地減少了通信開銷。

為了應對大語言模型API調(diào)用的成本和限制,系統(tǒng)實現(xiàn)了多模型輪換和智能降級機制。當主要的API服務出現(xiàn)問題或達到使用限制時,系統(tǒng)會自動切換到備用的模型服務,確保整體流程不會中斷。這種冗余設計提高了系統(tǒng)的可靠性和穩(wěn)定性。

六、靜態(tài)代碼分析的技術實現(xiàn)

FuzzingBrain系統(tǒng)的靜態(tài)分析組件就像一個能夠"透視"代碼結構的X光機,它能夠在不實際運行程序的情況下,理解代碼的內(nèi)部結構和執(zhí)行流程。這個組件為整個系統(tǒng)提供了重要的"情報支持",幫助其他組件更有針對性地進行安全測試。

靜態(tài)分析的主要任務是回答三類關鍵問題。第一類是函數(shù)元數(shù)據(jù)查詢,當系統(tǒng)需要了解某個函數(shù)的詳細信息時,靜態(tài)分析組件能夠提供函數(shù)的參數(shù)、返回值類型、源代碼位置等完整信息。第二類是可達性分析,即確定從程序的入口點能夠到達哪些函數(shù),這對于確定測試范圍至關重要。第三類是調(diào)用路徑分析,即找出從測試入口到目標函數(shù)的所有可能執(zhí)行路徑。

對于C/C++項目,系統(tǒng)集成了多個專業(yè)工具來實現(xiàn)靜態(tài)分析。首先使用LLVM編譯器基礎設施將源代碼轉換為中間表示形式,這就像將不同方言的文本翻譯成標準語言,便于統(tǒng)一分析。然后使用SVF(Static Value-Flow Analysis)工具構建程序的調(diào)用圖,這相當于繪制出程序內(nèi)部函數(shù)之間的關系網(wǎng)絡。最后使用Bear工具來捕獲編譯過程中的所有命令和依賴關系,確保分析的完整性。

在實際實現(xiàn)過程中,研究團隊遇到了許多技術挑戰(zhàn)。編譯大型項目生成中間代碼時經(jīng)常出現(xiàn)缺少頭文件或編譯參數(shù)不匹配的問題。為了解決這些問題,系統(tǒng)實現(xiàn)了多種fallback機制,包括硬編碼常見的頭文件路徑、自動推斷編譯參數(shù)等。雖然這些方法不夠優(yōu)雅,但在實踐中證明是有效的,最終使系統(tǒng)能夠成功處理95%以上的源文件。

性能優(yōu)化也是靜態(tài)分析面臨的重要挑戰(zhàn)。一些大型項目生成的中間代碼文件可能超過50MB,而構建調(diào)用圖的過程可能需要幾個小時甚至耗盡內(nèi)存。為了應對這個問題,系統(tǒng)實現(xiàn)了多種優(yōu)化策略:將過大的代碼文件裁剪到可管理的大小、使用輕量級的類型分析代替復雜的指針分析、設置嚴格的超時限制等。這些優(yōu)化確保了靜態(tài)分析能夠在合理的時間內(nèi)完成。

對于Java項目,系統(tǒng)采用了不同的技術路線。Java項目使用CodeQL作為主要分析工具,這是一個更加成熟和可靠的分析平臺。系統(tǒng)開發(fā)了專門的查詢語句來提取函數(shù)可達性和調(diào)用路徑信息,這些查詢能夠處理Java特有的語言特性,如函數(shù)重載和動態(tài)加載。

為了提高分析效率,系統(tǒng)實現(xiàn)了批量查詢機制。當需要分析大量函數(shù)對之間的調(diào)用關系時,系統(tǒng)會將多個查詢打包成批處理,減少數(shù)據(jù)庫連接開銷。同時,為了避免并發(fā)沖突,每個分析任務都會使用獨立的數(shù)據(jù)庫副本,確保分析結果的準確性。

靜態(tài)分析還需要處理一些特殊情況。比如遞歸調(diào)用可能導致調(diào)用路徑分析陷入無限循環(huán),系統(tǒng)通過設置最大深度限制來避免這個問題。對于Java項目,系統(tǒng)允許一定程度的間接遞歸,因為這在實際項目中很常見,但會阻止直接的自我調(diào)用以防止無限循環(huán)。

當精確的靜態(tài)分析失敗時,系統(tǒng)還實現(xiàn)了保守的fallback方案。這種方案雖然精度較低,但能夠在絕大多數(shù)情況下提供基本的分析結果,確保整個系統(tǒng)不會因為靜態(tài)分析的失敗而停止工作。

七、多模型協(xié)作與容錯機制

FuzzingBrain系統(tǒng)的穩(wěn)定性和可靠性很大程度上依賴于其精心設計的多模型協(xié)作和容錯機制。在一個依賴外部AI服務的系統(tǒng)中,單點故障可能導致整個流程的中斷,因此系統(tǒng)實現(xiàn)了多層次的冗余和降級策略。

系統(tǒng)集成了來自不同供應商的多個大語言模型,包括Anthropic的Claude系列、OpenAI的GPT系列,以及Google的Gemini模型。這種多樣化的選擇不僅提供了性能上的冗余,還利用了不同模型在不同類型任務上的相對優(yōu)勢。就像一個醫(yī)療團隊會包含不同專業(yè)的醫(yī)生一樣,不同的AI模型在處理不同類型的安全問題時可能表現(xiàn)出不同的特長。

模型選擇和輪換機制是整個系統(tǒng)的核心。系統(tǒng)維護一個按優(yōu)先級排序的模型列表,通常優(yōu)先使用最新、性能最好的模型。當首選模型出現(xiàn)問題(如API限制、服務不可用或響應質(zhì)量下降)時,系統(tǒng)會自動切換到列表中的下一個模型。這個過程對用戶是透明的,整個分析流程不會因為單個模型的問題而中斷。

系統(tǒng)還實現(xiàn)了智能的錯誤檢測和恢復機制。當某個模型連續(xù)產(chǎn)生低質(zhì)量輸出或者頻繁出現(xiàn)錯誤時,系統(tǒng)會臨時降低該模型的優(yōu)先級,將任務重新分配給其他模型。這種自適應機制確保了系統(tǒng)能夠在模型性能波動的情況下維持穩(wěn)定的服務質(zhì)量。

成本控制是多模型系統(tǒng)必須考慮的重要因素。不同的AI服務有不同的定價策略和使用限制,系統(tǒng)實現(xiàn)了細粒度的預算管理機制。通過監(jiān)控API調(diào)用次數(shù)、令牌使用量等指標,系統(tǒng)能夠在接近預算上限時自動調(diào)整策略,比如切換到更經(jīng)濟的模型或者減少某些非關鍵任務的執(zhí)行頻率。

在實際比賽中,研究團隊發(fā)現(xiàn)了一個重要的資源優(yōu)化機會。許多測試任務被分配給了無法到達漏洞代碼的測試工具,這導致了大量無效的API調(diào)用。基于這個發(fā)現(xiàn),系統(tǒng)增加了預篩選機制,通過靜態(tài)分析預先判斷測試工具是否能夠到達潛在的問題代碼,從而避免無效的資源消耗。

系統(tǒng)的容錯設計還體現(xiàn)在任務級別的隔離和重試機制上。每個測試任務都在獨立的環(huán)境中執(zhí)行,單個任務的失敗不會影響其他任務。當任務因為臨時性問題(如網(wǎng)絡中斷、內(nèi)存不足等)失敗時,系統(tǒng)會自動重試,通常會在不同的執(zhí)行環(huán)境或使用不同的模型重新執(zhí)行。

日志記錄和監(jiān)控是保證系統(tǒng)可靠性的重要手段。系統(tǒng)會詳細記錄每個組件的運行狀態(tài)、性能指標和錯誤信息。然而,研究團隊在比賽后期遇到的一個重要教訓是,分布式環(huán)境下的日志管理需要特別小心。由于日志存儲在臨時的虛擬機上,比賽結束后這些關鍵的調(diào)試信息丟失了,這影響了后續(xù)的系統(tǒng)優(yōu)化工作。

為了應對網(wǎng)絡分區(qū)和通信故障,系統(tǒng)實現(xiàn)了本地緩存和離線模式。重要的配置信息和常用的分析結果會緩存在本地,確保即使在網(wǎng)絡連接不穩(wěn)定的情況下,系統(tǒng)也能繼續(xù)執(zhí)行基本功能。

系統(tǒng)還考慮了不同組件的啟動和關閉順序。在系統(tǒng)啟動時,靜態(tài)分析服務會優(yōu)先啟動并完成初始化,為后續(xù)的動態(tài)測試任務提供支持。在系統(tǒng)關閉時,會確保所有正在進行的任務都能夠優(yōu)雅地完成或保存狀態(tài),避免數(shù)據(jù)丟失。

八、SARIF報告處理與多源信息融合

FuzzingBrain系統(tǒng)的一個獨特能力是處理來自外部靜態(tài)分析工具的SARIF(Static Analysis Results Interchange Format)報告。這就像一個經(jīng)驗豐富的安全專家能夠理解和驗證來自不同工具的安全報告一樣,系統(tǒng)能夠智能地處理這些第三方信息,并將其轉化為可操作的安全測試任務。

SARIF是一種標準化的漏洞報告格式,廣泛用于各種靜態(tài)分析工具之間的信息交換。這些報告通常包含大量的技術細節(jié),如漏洞類型、影響的代碼位置、嚴重程度評估等。然而,這些報告往往包含false positive(誤報),需要人工驗證其真實性。FuzzingBrain系統(tǒng)自動化了這個驗證過程。

系統(tǒng)處理SARIF報告的流程分為幾個階段。首先是信息提取階段,系統(tǒng)會解析SARIF文件,提取出漏洞描述、受影響的函數(shù)、代碼位置、調(diào)用棧信息等關鍵數(shù)據(jù)。這個過程就像一個助理幫醫(yī)生整理病歷,將散亂的信息組織成結構化的格式。

接下來是可達性驗證階段。系統(tǒng)會利用靜態(tài)分析組件檢查報告中提到的漏洞函數(shù)是否能夠從系統(tǒng)的測試入口到達。如果某個漏洞位于無法到達的代碼中,那么即使它是真實存在的,也不太可能被惡意利用,因此優(yōu)先級會相應降低。

最關鍵的是智能驗證階段。系統(tǒng)會將SARIF報告中的漏洞描述、代碼片段等信息提供給多個大語言模型,讓它們基于安全知識判斷這個漏洞報告是否可信。這個過程類似于醫(yī)學會診,多個專家獨立給出意見,然后通過投票機制得出最終結論。

系統(tǒng)采用了一種巧妙的雙重驗證策略。對于每個SARIF報告,系統(tǒng)會同時詢問大語言模型兩個問題:"這個報告看起來像是誤報嗎?"和"這個報告看起來像是真實漏洞嗎?" 通過交叉驗證這兩個相反的問題,系統(tǒng)能夠更準確地判斷報告的可信度。

當SARIF報告被確認為可信時,系統(tǒng)會將其轉化為具體的測試任務。系統(tǒng)會根據(jù)報告中的漏洞描述和位置信息,生成針對性的測試用例,嘗試實際觸發(fā)該漏洞。這種從理論分析到實際驗證的轉換是系統(tǒng)的重要創(chuàng)新點之一。

系統(tǒng)還實現(xiàn)了SARIF報告與POV(Proof-of-Vulnerability)發(fā)現(xiàn)的關聯(lián)機制。當系統(tǒng)通過其他方式發(fā)現(xiàn)了一個漏洞后,會檢查是否有相關的SARIF報告提到了同樣的問題。如果找到匹配的報告,系統(tǒng)會將兩者關聯(lián)起來,這不僅驗證了SARIF報告的準確性,還豐富了對漏洞的理解。

這種多源信息融合的方法帶來了顯著的效果提升。SARIF報告提供了高層次的漏洞描述和分析,而系統(tǒng)的動態(tài)測試提供了具體的觸發(fā)方法,兩者結合能夠形成更完整的安全分析結果。這就像結合了理論診斷和實際檢查的醫(yī)療診斷過程,準確性和完整性都得到了提高。

在處理大量SARIF報告時,系統(tǒng)還實現(xiàn)了智能的優(yōu)先級排序機制?;诼┒吹膰乐爻潭取⒂绊懛秶?、可達性等因素,系統(tǒng)會自動確定處理順序,確保最重要的安全問題得到優(yōu)先關注。

系統(tǒng)的另一個創(chuàng)新是預測性SARIF生成功能。基于對常見漏洞模式的學習,系統(tǒng)能夠主動生成可能存在安全問題的代碼位置報告,為后續(xù)的深入測試提供指導。這種主動式的安全分析方法在實際應用中具有重要價值。

九、性能優(yōu)化與實戰(zhàn)經(jīng)驗

經(jīng)過三輪展示賽的實戰(zhàn)檢驗,F(xiàn)uzzingBrain系統(tǒng)積累了豐富的性能優(yōu)化經(jīng)驗。這些優(yōu)化不僅提高了系統(tǒng)的效率,更重要的是提供了在資源約束環(huán)境下的最佳實踐策略。

最重要的發(fā)現(xiàn)之一是傳統(tǒng)模糊測試工具的局限性。盡管libFuzzer等工具在理論上能夠發(fā)現(xiàn)各種類型的漏洞,但在實際競賽中,它們的貢獻相對有限,卻消耗了大量的計算資源。研究團隊發(fā)現(xiàn),基于大語言模型的智能策略能夠發(fā)現(xiàn)絕大多數(shù)漏洞,而傳統(tǒng)的隨機測試只貢獻了少數(shù)幾個發(fā)現(xiàn)。

基于這個發(fā)現(xiàn),系統(tǒng)實現(xiàn)了動態(tài)的資源分配策略。當智能策略已經(jīng)在某個項目上取得進展時,系統(tǒng)會減少傳統(tǒng)模糊測試的資源分配,將更多計算力投入到尚未取得突破的其他項目上。這種自適應的資源管理顯著提高了整體效率。

sanitizer選擇也是一個重要的優(yōu)化點。系統(tǒng)支持三種不同的錯誤檢測機制:AddressSanitizer用于檢測內(nèi)存訪問錯誤,MemorySanitizer用于檢測未初始化內(nèi)存使用,UndefinedBehaviorSanitizer用于檢測各種未定義行為。通過分析歷史數(shù)據(jù),研究團隊發(fā)現(xiàn)AddressSanitizer的檢出率最高,因此在資源受限的情況下,系統(tǒng)會優(yōu)先使用這種檢測機制。

時間預算管理是另一個關鍵的優(yōu)化領域。系統(tǒng)為每種策略設置了動態(tài)的時間限制,當某個策略已經(jīng)發(fā)現(xiàn)了漏洞或者長時間沒有進展時,會自動調(diào)整時間分配。這種策略確保了系統(tǒng)能夠在有限的競賽時間內(nèi)最大化發(fā)現(xiàn)漏洞的數(shù)量。

API成本控制也是實際部署中的重要考慮因素。在其中一輪比賽中,系統(tǒng)耗盡了分配的OpenAI API額度,導致后續(xù)任務無法執(zhí)行?;谶@個經(jīng)驗,系統(tǒng)增加了更細粒度的成本監(jiān)控和預算管理功能,能夠預測API使用趨勢并在接近限制時自動調(diào)整策略。

系統(tǒng)還實現(xiàn)了智能的重復檢測和去重機制。在并行執(zhí)行環(huán)境中,不同的策略可能發(fā)現(xiàn)相同的漏洞,提交重復的POV會降低準確率分數(shù)。系統(tǒng)通過分析崩潰位置、錯誤類型等特征來識別重復發(fā)現(xiàn),并使用大語言模型進行語義級別的相似性判斷,確保只提交獨特的發(fā)現(xiàn)。

補丁提交的數(shù)量控制是評分優(yōu)化的另一個重點。雖然生成更多的補丁看起來是好事,但過多的提交會降低準確率乘數(shù),反而影響最終得分。系統(tǒng)通過智能分析,對每個漏洞只提交最有把握的補丁,在數(shù)量和質(zhì)量之間找到最佳平衡點。

并發(fā)控制和同步也是系統(tǒng)穩(wěn)定性的重要因素。研究團隊在開發(fā)過程中遇到了多次由于并發(fā)訪問導致的競態(tài)條件和死鎖問題。最終通過重新設計共享數(shù)據(jù)結構、使用無鎖編程技巧、實現(xiàn)更細粒度的鎖控制等方法解決了這些問題。

文件系統(tǒng)管理是一個容易被忽視但很重要的優(yōu)化點。大規(guī)模并行測試會生成大量臨時文件,如果不及時清理,可能導致磁盤空間耗盡。系統(tǒng)實現(xiàn)了基于時間和使用頻率的智能清理機制,既保證了active文件的可用性,又避免了存儲資源的浪費。

配置管理也是從實戰(zhàn)中學到的重要教訓。在分布式環(huán)境中,確保所有組件使用一致的配置信息比想象中更困難。系統(tǒng)最初使用分散的配置文件,導致了一些難以調(diào)試的問題。后來實現(xiàn)了中心化的配置管理服務,顯著提高了系統(tǒng)的可維護性。

十、FuzzingBrain測評基準的建立

為了推動整個領域的發(fā)展,研究團隊基于AIxCC競賽數(shù)據(jù)建立了FuzzingBrain Leaderboard,這是一個專門用于評估不同大語言模型在漏洞發(fā)現(xiàn)和修復任務上性能的公開測評平臺。這個平臺的建立具有重要的學術和實踐價值。

傳統(tǒng)的AI模型評估通常關注語言理解、數(shù)學推理、代碼生成等通用能力,但專門針對網(wǎng)絡安全任務的評估基準相對缺乏。FuzzingBrain Leaderboard填補了這個空白,提供了一個標準化的環(huán)境來比較不同模型在實際安全任務上的表現(xiàn)。

測評數(shù)據(jù)集包含了36個來自真實開源項目的挑戰(zhàn),其中16個來自C/C++項目,20個來自Java項目。這些挑戰(zhàn)都是從AIxCC競賽的三輪展示賽中精心選擇的,代表了現(xiàn)實世界中常見的安全問題類型。每個挑戰(zhàn)都包含一個真實存在的安全漏洞,需要AI模型既要發(fā)現(xiàn)這個漏洞,又要生成有效的修復補丁。

評分機制沿用了AIxCC競賽的標準:每個成功發(fā)現(xiàn)的漏洞(POV)獲得2分,每個有效的修復補丁獲得6分。這種加權設計反映了在實際安全工作中,能夠修復問題比僅僅發(fā)現(xiàn)問題更有價值。模型的最終排名基于在所有測試挑戰(zhàn)上的總得分。

為了確保評估的公平性和可復現(xiàn)性,測評平臺進行了幾項重要的標準化處理。首先,所有模型都在相同的硬件環(huán)境中運行,使用單臺虛擬機和相同的計算資源配置。其次,靜態(tài)分析結果被預先計算并以JSON格式存儲,避免了因分析工具差異導致的性能偏差。最后,每次評估都有固定的時間限制(一小時),確保所有模型在相同的時間約束下競爭。

測評過程中的一個重要設計決定是限制每個挑戰(zhàn)只能使用單一的大語言模型。這種設置能夠直接比較不同模型的原生能力,避免了多模型集成可能帶來的復雜性。同時,這也更接近實際應用場景,因為大多數(shù)組織通常會選擇一個主要的AI服務提供商。

平臺還實現(xiàn)了細粒度的性能分析功能。除了總體得分外,系統(tǒng)還會統(tǒng)計每個模型在不同類型漏洞上的表現(xiàn)、平均發(fā)現(xiàn)時間、補丁生成成功率等詳細指標。這些數(shù)據(jù)幫助研究者和從業(yè)者更好地理解不同模型的特點和適用場景。

測評結果顯示了不同模型之間的顯著差異。一些模型在發(fā)現(xiàn)漏洞方面表現(xiàn)出色,但在生成有效補丁方面相對較弱。另一些模型則顯示出更均衡的能力。這些發(fā)現(xiàn)為模型選擇和系統(tǒng)設計提供了有價值的參考。

平臺的開放性是其另一個重要特點。所有的測試數(shù)據(jù)、評估腳本和結果分析工具都是開源的,研究者可以自由使用和擴展。這種開放的設計鼓勵了社區(qū)貢獻,有助于推動整個領域的發(fā)展。

為了保持測評基準的時效性,研究團隊承諾會定期更新測試集,添加新發(fā)現(xiàn)的漏洞類型和更復雜的挑戰(zhàn)。同時,隨著新的大語言模型發(fā)布,平臺也會及時增加對這些模型的支持。

測評平臺還提供了詳細的錯誤分析功能。當某個模型未能成功完成挑戰(zhàn)時,系統(tǒng)會記錄失敗的具體原因,如生成的測試用例無效、補丁編譯失敗、修復后仍存在漏洞等。這些信息對于模型改進和系統(tǒng)優(yōu)化具有重要價值。

通過建立這個標準化的評估平臺,研究團隊希望能夠促進AI在網(wǎng)絡安全領域的應用研究,為從業(yè)者提供選擇工具的依據(jù),并推動整個行業(yè)向更智能、更高效的安全防護方向發(fā)展。

說到底,F(xiàn)uzzingBrain項目展示了人工智能在網(wǎng)絡安全領域的巨大潛力。這個系統(tǒng)不僅能夠自動發(fā)現(xiàn)軟件中的安全漏洞,還能生成有效的修復方案,大大提高了安全防護的效率和覆蓋面。更重要的是,通過開源代碼和建立評估基準,研究團隊為整個領域的發(fā)展做出了重要貢獻。

雖然這項技術目前主要應用在學術研究和競賽環(huán)境中,但其潛在的實際應用價值是顯而易見的。隨著網(wǎng)絡威脅日益復雜,傳統(tǒng)的人工安全審計已經(jīng)難以滿足現(xiàn)代軟件開發(fā)的需求。FuzzingBrain這樣的智能系統(tǒng)可能會成為未來軟件安全防護的重要工具,幫助開發(fā)團隊在軟件發(fā)布前發(fā)現(xiàn)和修復更多的安全問題。

當然,這項技術也面臨一些挑戰(zhàn)。對外部AI服務的依賴、大規(guī)模部署的成本、以及在不同類型項目上的適用性等問題都需要進一步研究和優(yōu)化。但總的來說,F(xiàn)uzzingBrain項目為我們展示了一個充滿希望的未來:智能系統(tǒng)與人類專家協(xié)作,共同構建更安全的數(shù)字世界。

Q&A

Q1:FuzzingBrain系統(tǒng)是什么?它能做什么?

A:FuzzingBrain是德州農(nóng)工大學開發(fā)的智能網(wǎng)絡安全系統(tǒng),它能夠自動發(fā)現(xiàn)軟件中的安全漏洞并生成修復補丁。這個系統(tǒng)就像一個永不疲憊的安全專家,能夠24小時不間斷地檢測軟件中可能被惡意利用的安全問題。在比賽中,它成功發(fā)現(xiàn)了28個安全漏洞,包括6個全新的零日漏洞,并修復了其中的14個。

Q2:FuzzingBrain與傳統(tǒng)的安全檢測工具有什么區(qū)別?

A:傳統(tǒng)的安全檢測工具主要依靠隨機測試或預定義規(guī)則,就像盲人摸象一樣效率有限。而FuzzingBrain集成了大語言模型的智能推理能力,能夠理解代碼結構、分析漏洞特征,并根據(jù)測試結果不斷調(diào)整策略。這就像從一個盲目的機器人升級為具有專業(yè)知識的安全專家,檢測效率和準確性都大幅提升。

Q3:普通開發(fā)者或公司能使用FuzzingBrain嗎?

A:目前FuzzingBrain的完整代碼已經(jīng)在GitHub開源,技術團隊可以免費獲取和使用。不過,由于系統(tǒng)需要大規(guī)模的計算資源和AI服務調(diào)用,個人開發(fā)者可能需要根據(jù)自己的需求和預算進行適當調(diào)整。研究團隊還建立了在線評估平臺,開發(fā)者可以通過這個平臺了解不同AI模型在安全任務上的表現(xiàn)。

分享至
0贊

好文章,需要你的鼓勵

推薦文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-