DeepMind發(fā)布代碼修復(fù)AI智能體CodeMender,實(shí)現(xiàn)「被動(dòng)響應(yīng)」與「主動(dòng)防御」一體化
眾所周知,開發(fā)者「苦軟件漏洞久已」,即使使用模糊測試等傳統(tǒng)的自動(dòng)化方法,也難以發(fā)現(xiàn)和將其修復(fù),且耗時(shí)耗力。而在 AI 大行其道的當(dāng)下,用 AI 來修復(fù)關(guān)鍵軟件漏洞技術(shù)與產(chǎn)品也開始涌現(xiàn),那么,如何才能使得 AI 修復(fù)安全代碼是值得信任的,答案在于「通過嚴(yán)格的驗(yàn)證」。
近日,DeepMind 最新推出了一種全新的用于代碼安全的 AI Agent—CodeMender,它使用 Gemini Deep Think 自動(dòng)修補(bǔ)關(guān)鍵軟件漏洞。它會(huì)檢查補(bǔ)丁是否正確、是否能夠修復(fù)根本原因,并且不會(huì)引起其他任何破壞。這確保只有高質(zhì)量的解決方案才會(huì)被發(fā)送給人工審核。

具體來看,CodeMender 通過一種全面的代碼安全方法來幫助解決軟件漏洞問題,實(shí)現(xiàn)「被動(dòng)響應(yīng)」與「主動(dòng)防御」并重:既能立即修補(bǔ)新的漏洞,也能重寫和保護(hù)現(xiàn)有代碼,并在此過程中消除所有類型的系統(tǒng)性漏洞。
數(shù)據(jù)顯示,在過去六個(gè)月開發(fā) CodeMender 的過程中,DeepMind 已經(jīng)向開源項(xiàng)目上傳了 72 個(gè)安全修復(fù)程序,其中一些修復(fù)程序多達(dá) 450 萬行代碼。
通過自動(dòng)創(chuàng)建和應(yīng)用高質(zhì)量的安全補(bǔ)丁,CodeMender 可幫助開發(fā)者從繁瑣的查找漏洞工作中解脫出來,從而回歸本業(yè) —— 專注打造優(yōu)質(zhì)軟件。
而 CodeMender 一經(jīng)發(fā)布,也引起了一些開發(fā)者的關(guān)注與討論。
一位名為 CRISPRKING 的 X 網(wǎng)友認(rèn)為,CodeMender 的突破不在于發(fā)現(xiàn) bug,而在于確保修復(fù)不會(huì)破壞其他任何東西,「這是真正的自動(dòng)化與演示的區(qū)別所在。」

另一位網(wǎng)友則認(rèn)為,CodeMender 的出現(xiàn)將把 QA、安全審計(jì)、漏洞賞金的收入都「吃光」。

而據(jù)媒體報(bào)道,谷歌最近剛剛正式啟動(dòng)了一項(xiàng)專門針對 AI 產(chǎn)品漏洞的獎(jiǎng)勵(lì)計(jì)劃。而自從谷歌兩年前正式邀請 AI 研究人員排查產(chǎn)品 AI 功能濫用風(fēng)險(xiǎn)以來,漏洞獵手們已累計(jì)獲得超過 43 萬美元的獎(jiǎng)金。
也有網(wǎng)友對「AI 產(chǎn)生軟件漏洞」與「AI 自動(dòng)修復(fù)軟件漏洞」的自我博弈產(chǎn)生了興趣:「我想知道我們是否會(huì)陷入一場軍備競賽,一方面 AI 偽裝成貢獻(xiàn)者(和安全研究人員)試圖將漏洞引入流行的庫中,另一方面 AI 試圖檢測并修復(fù)這些漏洞……」

事實(shí)就是,這是一項(xiàng)開創(chuàng)性的研究,「我們正在進(jìn)入自我修復(fù)軟件的時(shí)代。」
下面介紹一下 CodeMender 的更多詳細(xì)信息。
CodeMender 實(shí)際操作
CodeMender 的核心運(yùn)行機(jī)制,是借助最新一代 Gemini 深度思考模型的思維能力,構(gòu)建出一個(gè)能自動(dòng)調(diào)試并修復(fù)復(fù)雜漏洞的 Agent。為此,CodeMender Agent 配備了強(qiáng)大的工具集,使其能在修改代碼前進(jìn)行邏輯推演,并自動(dòng)驗(yàn)證修改結(jié)果,確保修復(fù)正確且不會(huì)引發(fā)其他問題。

作為研究的一部分,DeepMind 還開發(fā)了新的技術(shù)和工具,使 CodeMender 能夠推理代碼并更有效地驗(yàn)證更改。這些技術(shù)和工具包括:
- 高級程序分析:基于高級程序分析技術(shù)開發(fā)的工具,包括靜態(tài)分析、動(dòng)態(tài)分析、差分測試、模糊測試和 SMT 求解器。通過系統(tǒng)性地審視代碼模式、控制流和數(shù)據(jù)流,CodeMender 能更精準(zhǔn)地定位安全漏洞和架構(gòu)弱點(diǎn)的根本原因。
- 多智能體系統(tǒng):開發(fā)的專用智能體,使 CodeMender 能夠協(xié)同處理底層問題的不同方面。例如,CodeMender 使用一個(gè)基于大型語言模型的代碼審查工具,能高亮顯示原始代碼與修改后代碼的差異,以驗(yàn)證提議的更改未引起問題,并在需要時(shí)進(jìn)行自我修正。
修復(fù)漏洞
為有效修補(bǔ)漏洞并防止其復(fù)發(fā),CodeMender 會(huì)綜合使用調(diào)試器、源代碼瀏覽器等工具來精確定位根本原因,并設(shè)計(jì)補(bǔ)丁。下方視頻輪播展示了兩個(gè) CodeMender 修補(bǔ)漏洞的案例。
案例 1:識別漏洞的根本原因
這是 Agent 在分析了調(diào)試器輸出和代碼搜索工具的結(jié)果后,對 CodeMender 生成的補(bǔ)丁的根本原因進(jìn)行的推理。
雖然此案例中的最終補(bǔ)丁僅修改了幾行代碼,但漏洞的根本原因尚不清楚。在本例中,當(dāng)時(shí)的崩潰報(bào)告顯示是堆緩沖區(qū)溢出,但實(shí)際問題出在解析過程中對可擴(kuò)展標(biāo)記語言 (XML) 元素的堆棧管理不正確。

案例 2:智能體能夠創(chuàng)建非平凡補(bǔ)丁
在此示例中,CodeMender Agent 成功構(gòu)思出一個(gè)處理復(fù)雜對象生命周期問題的非平凡補(bǔ)丁。
該 Agent 不僅定位了漏洞根源,還修改了項(xiàng)目內(nèi)一個(gè)完全自定義的 C 代碼生成系統(tǒng)。

主動(dòng)重寫現(xiàn)有代碼以提高安全性
DeepMind 還還賦予 CodeMender 一項(xiàng)能力:主動(dòng)重寫現(xiàn)有代碼,引導(dǎo)其采用更安全的數(shù)據(jù)結(jié)構(gòu)和 API。
例如,部署 CodeMender,將 - fbounds-safety 注釋應(yīng)用于廣泛使用的圖像壓縮庫 libwebp 的部分內(nèi)容。應(yīng)用此注釋后,編譯器會(huì)在代碼中添加邊界檢查,以防止攻擊者利用緩沖區(qū)溢出或下溢執(zhí)行任意代碼。
幾年前,libwebp 中的堆緩沖區(qū)溢出漏洞 ( CVE-2023-4863 ) 被威脅者利用,用于零點(diǎn)擊 iOS 漏洞攻擊鏈的一環(huán),而如果當(dāng)時(shí)就應(yīng)用 - fbounds-safety 注釋,那么這個(gè)漏洞以及項(xiàng)目中大多數(shù)其他緩沖區(qū)溢出漏洞,或?qū)⒂肋h(yuǎn)無法被利用。
下方視頻輪播展示了 Agent 決策過程的案例,包括驗(yàn)證步驟。
示例 1:Agent 的推理步驟
在此示例中,要求 CodeMender Agent 解決 bit_depths 指針上的以下 - fbounds-safety 錯(cuò)誤:


示例 2:Agent 自動(dòng)糾正錯(cuò)誤和測試失敗
CodeMender 的另一個(gè)關(guān)鍵功能是能夠自動(dòng)糾正新錯(cuò)誤以及任何由其自身注釋引起的測試失敗。以下是 Agent 從編譯錯(cuò)誤中恢復(fù)的示例。

示例 3:Agent 驗(yàn)證更改
在此示例中,CodeMender Agent 修改了一個(gè)功能,然后使用配置為功能等效性的 LLM Judge 工具來驗(yàn)證該功能是否仍然完好。當(dāng)該工具檢測到故障時(shí),Agent 會(huì)根據(jù) LLM Judge 的反饋進(jìn)行自我修正。

不管是從功能介紹來看,還是實(shí)例演示來看,CodeMender 的早期成果都是令人鼓舞的,是邁向自動(dòng)化安全修復(fù)的重要一步,但仍需采取謹(jǐn)慎的態(tài)度,注重其可靠性。
官方顯示,目前所有 CodeMender 生成的補(bǔ)丁在提交到上游之前都會(huì)經(jīng)過人類研究人員的審核。而 DeepMind 表示,未來幾個(gè)月內(nèi)將繼續(xù)分享技術(shù)論文和報(bào)告,希望最終能夠?qū)?CodeMender 發(fā)布為所有開發(fā)人員的工具,以增強(qiáng)每個(gè)人的軟件安全性。

























