庫(kù)級(jí)漏洞檢測(cè)|從 AI 代碼安全審計(jì)視角)
## 摘要 一個(gè)漏洞掃描器把召回從 39% 拉到 80%誤報(bào)也跟著漲而且超過(guò)一半的「抓對(duì)了」其實(shí)是蒙對(duì)的。這篇 **DREA**Decoupled Reasoning and Exploration Agents解耦推理與探索智能體是 arXiv 2026 的論文。做法很干脆安全推理交給貴的大模型翻倉(cāng)庫(kù)交給本地小模型。在自建基準(zhǔn) RepoPairBench 上配對(duì)正確率從 19–26% 提到 30–42%可計(jì)費(fèi) API 成本降到原來(lái)的 1/16 到 1/48。如果你在做代碼安全、也在給 LLM 智能體算成本這篇的兩個(gè)數(shù)字值得記住。 **視頻講解**[點(diǎn)擊觀看 B 站視頻](https://www.bilibili.com/video/BV1GZJB62EW4) 章節(jié)時(shí)間軸 - 00:35 作者介紹 - 00:58 研究背景與動(dòng)機(jī) - 01:54 相關(guān)工作 - 02:25 方法 - 03:41 實(shí)驗(yàn)設(shè)計(jì) - 04:43 實(shí)驗(yàn)結(jié)果 - 07:22 局限性 - 07:51 要點(diǎn)總結(jié) - 08:25 參考文獻(xiàn) [TOC] ## 論文基本信息 | 項(xiàng)目 | 內(nèi)容 | |---|---| | 標(biāo)題英文 | DREA: Decoupled Reasoning and Exploration Agents for Repository-Level Vulnerability Detection | | 標(biāo)題中文 | DREA解耦推理與探索智能體的倉(cāng)庫(kù)級(jí)漏洞檢測(cè) | | 作者 | Mingyang Sun, Guozhu Meng | | 機(jī)構(gòu) | 中國(guó)科學(xué)院信息工程研究所 · 中國(guó)科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 | | 會(huì)議 | arXiv 2026 | | arXiv | [arXiv:2607.13439](https://arxiv.org/abs/2607.13439) | | 項(xiàng)目網(wǎng)站 | [github.com/huhusmang/DREA](https://github.com/huhusmang/DREA) | ## 背景與動(dòng)機(jī) 這一節(jié)回答一個(gè)問(wèn)題為什么只盯著一個(gè)函數(shù)看不出來(lái)漏洞。 真實(shí)漏洞很少老老實(shí)實(shí)待在一個(gè)函數(shù)里。權(quán)限檢查可能寫(xiě)在另一個(gè)模塊參數(shù)校驗(yàn)在調(diào)用方項(xiàng)目級(jí)配置藏在配置文件里。只把一個(gè)函數(shù)喂給模型這些證據(jù)根本不在視野中。 論文舉的例子是 CVE-2021-43781出問(wèn)題的項(xiàng)目叫 invenio-drafts-resources。漏洞函數(shù) publish 其實(shí)調(diào)用了權(quán)限檢查 require_permission(identity, publish)。函數(shù)級(jí)分析器看到這一行就判定「已鑒權(quán)」。缺口藏在函數(shù)之外這次檢查沒(méi)有綁定到 id_ 選中的那份草稿對(duì)象上它只驗(yàn)證了一個(gè)全局能力。 DREA 靠三個(gè)跨文件事實(shí)還原了攻擊路徑。第一同項(xiàng)目的 read_draft、edit、delete_draft 都傳了 recorddraft 做對(duì)象級(jí)鑒權(quán)。第二默認(rèn)的 can_publish 策略是最寬松的「任意用戶」。第三目標(biāo)調(diào)用偏偏漏掉了 record 參數(shù)。官方補(bǔ)丁正是補(bǔ)上這個(gè)參數(shù)。 論文開(kāi)篇還用了一個(gè)審計(jì)員的隱喻來(lái)定題。它說(shuō)現(xiàn)實(shí)中的漏洞審計(jì)本來(lái)就是假設(shè)驅(qū)動(dòng)的審計(jì)員先立一個(gè)懷疑再挑著追數(shù)據(jù)流、校驗(yàn)邏輯和權(quán)限檢查去證實(shí)或推翻它。隨后論文用一句反問(wèn)收口能不能讓檢測(cè)從「靜態(tài)上下文增強(qiáng)」換成「假設(shè)驅(qū)動(dòng)的倉(cāng)庫(kù)探索」。 已有做法的問(wèn)題正在這里。VulEval、ReposVul 這類工作會(huì)用調(diào)用圖、依賴切片來(lái)補(bǔ)上下文規(guī)則是固定的。固定規(guī)則給出的上下文與當(dāng)前那條安全假設(shè)無(wú)關(guān)。 ## 研究主線從問(wèn)題到結(jié)論  **圖 4研究主線。問(wèn)題出在函數(shù)級(jí)看不到跨文件證據(jù)結(jié)論落在推理瓶頸上。** ## 基準(zhǔn)/方法設(shè)計(jì) 這一節(jié)講清楚 DREA 到底怎么分工。 DREA 由兩個(gè)智能體組成。**Planner** 用強(qiáng)推理模型從目標(biāo)函數(shù)出發(fā)識(shí)別安全敏感操作形成初始漏洞假設(shè)再?zèng)Q定下一步要什么證據(jù)。**Explorer** 是本地部署的輕量模型用的是 4-bit 量化的 GLM-4.7-Flash跑在單張 A800 上支持 256K 上下文。它只負(fù)責(zé)檢索事實(shí)不做漏洞判定。 判決有硬約束。判 VULNERABLE必須給出從攻擊者可控輸入到危險(xiǎn)操作的觸發(fā)路徑。判 BENIGN必須論證相關(guān)操作已經(jīng)被充分防護(hù)。這逼著模型把話說(shuō)實(shí)而不是憑感覺(jué)給個(gè)標(biāo)簽。  **圖 1DREA 架構(gòu)。Planner 不斷修正安全假設(shè)把取證請(qǐng)求交給本地 ExplorerExplorer 用只讀工具在倉(cāng)庫(kù)里導(dǎo)航回傳結(jié)構(gòu)化發(fā)現(xiàn)。** 配套基準(zhǔn)叫 **RepoPairBench**。它從 NVD 里取帶 CVE 編號(hào)的修復(fù)提交用 PyDriller 抽出函數(shù)級(jí) diff。每對(duì)樣本有三件套父版本里的漏洞函數(shù)、修復(fù)后的函數(shù)、以及還原整個(gè)工程所需的倉(cāng)庫(kù)地址與提交哈希。時(shí)間窗鎖定 2021 到 2025 年的 Python 漏洞理由是 Python 維護(hù)活躍、修復(fù)提交量大而且跨文件判斷的問(wèn)題足夠多。最終 100 對(duì)樣本覆蓋 48 個(gè) CWE 類別展開(kāi)成 200 個(gè)分類實(shí)例。 每一對(duì)都準(zhǔn)備兩份倉(cāng)庫(kù)快照修復(fù)提交的父版本和修復(fù)提交本身。漏洞函數(shù)在修復(fù)前狀態(tài)下評(píng)測(cè)修復(fù)后的函數(shù)在修復(fù)后狀態(tài)下評(píng)測(cè)。這樣上下文和代碼版本始終對(duì)得上。 ## 分類全景  **圖 5四條技術(shù)路線的分野。前三條檢索的是靜態(tài)可抽取的上下文DREA 把探索方向交給安全假設(shè)。** ## 方法細(xì)節(jié) 這一節(jié)補(bǔ)充實(shí)現(xiàn)上的幾個(gè)關(guān)鍵選擇。 Explorer 只有四個(gè)只讀工具ls、glob、grep、read_file。工具集是刻意做小的目的是不讓它越界去做判定。 它的返回被組織成三類結(jié)構(gòu)化發(fā)現(xiàn)。第一類是倉(cāng)庫(kù)上下文比如相關(guān)文件、調(diào)用關(guān)系、模塊結(jié)構(gòu)與執(zhí)行流。第二類是代碼證據(jù)也就是命中的代碼片段與關(guān)鍵語(yǔ)句。第三類是安全發(fā)現(xiàn)比如缺失的檢查、不一致的授權(quán)寫(xiě)法、可疑的數(shù)據(jù)流鏈接。原始代碼不會(huì)整坨塞回 Planner。 實(shí)驗(yàn)里每個(gè)樣本大約跑 10 輪交互證據(jù)夠了就提前停。這個(gè)預(yù)算讓貴的模型只花在推理上。 推理質(zhì)量怎么判論文用 LLM 當(dāng)判官判官選 GPT-4.1。選它的理由有兩條長(zhǎng)而雜的輸入下指令跟隨穩(wěn)定它不在任何被測(cè)骨干里避免模型偏愛(ài)自己的推理風(fēng)格。判分看四件事CWE 類別是否對(duì)齊、缺陷定位是否準(zhǔn)確、根因是否抓住、利用機(jī)制是否成立。判定從嚴(yán)識(shí)別出另一個(gè)「說(shuō)得通」的漏洞也算理由錯(cuò)誤。 判官本身也被校驗(yàn)過(guò)。作者按模型和方法分層抽了 50 例請(qǐng)兩位有五年以上漏洞分析經(jīng)驗(yàn)的研究員獨(dú)立標(biāo)注。判官與兩人的一致率是 96% 和 94%Cohens kappa 分別為 0.92 和 0.88。兩位標(biāo)注者彼此是 92%kappa 為 0.84。 ## 實(shí)驗(yàn)設(shè)計(jì)與結(jié)果 這一節(jié)給出量化結(jié)果。 實(shí)驗(yàn)設(shè)三種 Planner 骨干GPT-5.2、DeepSeek-V3.2、GLM-4.7。Explorer 固定為本地 GLM-4.7-Flash這樣檢索端的差異被壓掉比較反映的是 Planner 行為。基線有三種只給目標(biāo)函數(shù)、給整個(gè)文件、以及「單智能體」——同一個(gè)骨干直接拿工具但沒(méi)有 Planner 與 Explorer 的分工。 主表用配對(duì)正確率Pair-CorrectnessP-C當(dāng)主指標(biāo)。它要求一對(duì)樣本的漏洞版和修復(fù)版全部判對(duì)才算這一對(duì)正確。相比單點(diǎn)準(zhǔn)確率這個(gè)口徑更難被「多報(bào)漏洞」刷分。 | 模型 · 方法 | Recall (%) | FPR (%) | P-C (%) | Youdens J (pp) | |---|---|---|---|---| | DeepSeek-V3.2 · DREA | 80.0 | 45.0 | **42.0** | **35.0** | | DeepSeek-V3.2 · 僅函數(shù) | 39.0 | 32.0 | 19.0 | 7.0 | | GLM-4.7 · DREA | 59.0 | 38.0 | **34.0** | **21.0** | | GLM-4.7 · 僅函數(shù) | 54.0 | 43.0 | 26.0 | 11.0 | | GPT-5.2 · DREA | 53.0 | 28.0 | **30.0** | **25.0** | | GPT-5.2 · 僅函數(shù) | 42.0 | 25.0 | 21.0 | 17.0 | 三個(gè)骨干上 DREA 都拿到更高的 P-C 與 Youdens J。Youdens J 的定義是 $J\mathrm{Recall}-\mathrm{FPR}$它漲說(shuō)明不是靠多報(bào)漏洞換分。DeepSeek-V3.2 的召回漲了 41 個(gè)百分點(diǎn)誤報(bào)只漲 13 個(gè)點(diǎn)。GLM-4.7 甚至在提高召回的同時(shí)把誤報(bào)從 43% 降到 38%。 消融實(shí)驗(yàn)只在一個(gè)骨干上做因?yàn)槊看闻芤粋€(gè)樣本要百萬(wàn)級(jí) token。結(jié)果的分層很清楚。 | DeepSeek-V3.2 配置 | Recall (%) | FPR (%) | P-C (%) | API token (K) | |---|---|---|---|---| | DREAPlanner Explorer | 80.0 | 45.0 | **42.0** | 88 | | 單智能體直接給工具 | 73.0 | 64.0 | 24.0 | 442 | | 整文件上下文 | 57.0 | 41.0 | 26.0 | 20 | | 僅函數(shù) | 39.0 | 32.0 | 19.0 | 3 | 最值得看的是單智能體這一行。它的探索能力和 DREA 完全一樣卻只拿到 24% 的 P-C誤報(bào)率高達(dá) 64%。原因是它把 442K token 的原始代碼全塞進(jìn)了上下文。整文件也不好過(guò)只比僅函數(shù)高 7 個(gè)點(diǎn)誤報(bào)從 32% 升到 41%說(shuō)明無(wú)方向的上下文會(huì)引入噪聲。 成本表回答「解耦值不值」。 | 模型 | 總 token | Planner token | API 占比 | 成本降幅 | |---|---|---|---|---| | DeepSeek-V3.2 | 1,397,669 | 87,847 | **6.3%** | 約 16 倍 | | GLM-4.7 | 1,560,519 | 32,557 | **2.1%** | 約 48 倍 | | GPT-5.2 | 345,691 | 8,357 | **2.4%** | 約 41 倍 | Explorer 承擔(dān)了 93.7% 到 97.9% 的 token全部跑在本地單卡上不進(jìn) API 賬單。Planner 只占 2.1% 到 6.3%。論文的口徑很克制只算可計(jì)費(fèi) API 成本沒(méi)有折算本地 GPU 開(kāi)銷。 類型層面的差異也很大。數(shù)據(jù)流型漏洞最好做。DeepSeek-V3.2 在 CWE-79 上到 69.2%在 CWE-94 上到 71.4%。反序列化類的 CWE-502 跨模型是 42.9% 到 57.1%。缺防護(hù)型就吃力得多CWE-284 跌到 0% 到 20%CWE-20 停在 14.3% 到 28.6%。  **圖 2真陽(yáng)分解。每根柱子分成「理由正確」與「Lucky Hit標(biāo)簽對(duì)、理由錯(cuò)」兩段柱上百分比為 Lucky Hit Rate。**  **圖 3按 CWE 類別分層的 P-C。上方數(shù)據(jù)流型漏洞一致優(yōu)于下方缺防護(hù)型漏洞括號(hào)內(nèi)為該類別的對(duì)數(shù)。** 探索越多是不是越好答案是否定的。DeepSeek-V3.2 的假陰樣本平均花 170 萬(wàn) token比真陽(yáng)的 124 萬(wàn)還多 37%。全部配置下每樣本 token 量與判對(duì)率的相關(guān)系數(shù) $r\approx-0.34$。各結(jié)果類別的平均工具調(diào)用次數(shù)都在 9.2 到 10.0 之間幾乎沒(méi)差別。 ## 結(jié)果對(duì)比總結(jié)  **圖 6同一骨干下的四種配置。DREA 拿到最高 P-C同時(shí)只有 88K 的 API token。** ## 關(guān)鍵發(fā)現(xiàn) - 假設(shè)驅(qū)動(dòng)的探索確實(shí)贏過(guò)靜態(tài)上下文同一骨干下 P-C 從 19–26% 提到 30–42%三個(gè)模型無(wú)一例外。 - 能力分工是降本關(guān)鍵93.7% 到 97.9% 的 token 交給本地小模型賬單降到 1/16 到 1/48而檢測(cè)性能還在漲。 - 結(jié)構(gòu)化證據(jù)比代碼量重要單智能體 442K token 只換到 24% P-CDREA 用 88K 拿到 42%。 - 探索強(qiáng)度是難度的癥狀失敗的樣本反而更長(zhǎng)更貴$r\approx-0.34$ 說(shuō)明瓶頸在綜合證據(jù)不在查得多不多。 - 蒙對(duì)現(xiàn)象很普遍真陽(yáng)里 26% 到 55% 的理由不成立DeepSeek-V3.2 達(dá) 55.0%GPT-5.2 也有 32.1%。而且這不只是某個(gè)方法的問(wèn)題DREA 和僅函數(shù)基線都有。 - 從創(chuàng)新模式看這篇踩中了兩條線。一條是把「標(biāo)簽判對(duì)」與「理由成立」拆開(kāi)測(cè)量的診斷設(shè)計(jì)。另一條是把探索請(qǐng)求分解委托給專職求解器。診斷本身成了貢獻(xiàn)。 ## 局限性 - 基準(zhǔn)只有 100 對(duì)。作者自己說(shuō)這足夠觀察一致差異但覆蓋不了長(zhǎng)尾漏洞模式每一對(duì)都要有可還原的倉(cāng)庫(kù)快照、單函數(shù)修復(fù)和人工核驗(yàn)擴(kuò)不起來(lái)。 - 按 CWE 拆分后每組只剩 3 到 13 對(duì)類別級(jí)結(jié)論的置信度有限。 - 判官的人工校驗(yàn)只覆蓋 50 例。一致率雖高規(guī)模仍然偏小。 - 成本口徑只算 API token。本地 Explorer 的 GPU 開(kāi)銷沒(méi)有折算進(jìn)去消融也只在一個(gè)骨干上完成。 ## 常見(jiàn)問(wèn)題FAQ ### 我要復(fù)現(xiàn)這篇得準(zhǔn)備多少顯存 Explorer 是 4-bit 量化的 GLM-4.7-Flash論文里跑在單張 A800、256K 上下文。Planner 走 API本地不占顯存。也就是說(shuō)一張數(shù)據(jù)中心級(jí)卡就能起完整流水線。 ### 它和 VulnLLM-R、MulVul 這類智能體方法差在哪 差別在檢索的源頭。它們用智能體去取靜態(tài)可抽取的上下文比如預(yù)計(jì)算的調(diào)用圖、CodeQL 查詢結(jié)果、漏洞知識(shí)庫(kù)。DREA 的 Explorer 直接在完整倉(cāng)庫(kù)上用通用只讀工具而且下一步看什么由 Planner 的安全假設(shè)實(shí)時(shí)決定。 ### 用本地小模型翻代碼會(huì)不會(huì)把效果拖下來(lái) 論文的答案是反過(guò)來(lái)。Explorer 固定成同一個(gè)輕量模型后三個(gè)骨干的 P-C 都提升了。真正決定質(zhì)量的是 Planner 的推理和「證據(jù)是否被過(guò)濾成結(jié)構(gòu)化結(jié)論」而不是檢索模型有多大。 ### 成本降 16 到 48 倍這個(gè)數(shù)能當(dāng)真嗎 它的口徑是可計(jì)費(fèi) API token。總 token 里只有 2.1% 到 6.3% 走付費(fèi)模型其余在本地。如果你把自建 GPU 的電費(fèi)和維護(hù)算進(jìn)去倍數(shù)會(huì)明顯縮水但量級(jí)差異仍然在。論文自己也把這條寫(xiě)進(jìn)了局限。 ### Lucky Hit 這個(gè)指標(biāo)我能直接搬走嗎 能只要你的任務(wù)同時(shí)輸出標(biāo)簽和理由。它的定義很樸素真陽(yáng)里理由不成立的比例$1-\mathrm{LHR}$ 就是理由正確率。代價(jià)是需要一個(gè)可信的判官而判官本身要拿人工標(biāo)注校核。 說(shuō)到底這篇最值得帶走的一句話是卡住當(dāng)前 LLM 的不是上下文長(zhǎng)度而是安全推理本身。想順著往下看可以先讀 MulVul 這類多智能體檢索工作再看看用安全反饋?zhàn)鰪?qiáng)化學(xué)習(xí)的 R2Vul 路線。 ## 參考鏈接 - [DREA 論文arXiv:2607.13439](https://arxiv.org/abs/2607.13439) - [DREA 代碼與 RepoPairBench](https://github.com/huhusmang/DREA) - [PrimeVul配對(duì)評(píng)測(cè)與代碼模型能力邊界arXiv:2403.18624](https://arxiv.org/abs/2403.18624) - [VulEval倉(cāng)庫(kù)級(jí)漏洞檢測(cè)評(píng)測(cè)arXiv:2404.15596](https://arxiv.org/abs/2404.15596) - [SWE-Agent智能體導(dǎo)航倉(cāng)庫(kù)arXiv:2405.15793](https://arxiv.org/abs/2405.15793) - [VulnLLM-R帶智能體腳手架的漏洞檢測(cè)arXiv:2512.07533](https://arxiv.org/abs/2512.07533) --- 給大家推薦一款自用寫(xiě)文獻(xiàn)綜述、無(wú)虛構(gòu)文獻(xiàn)的 AI **復(fù)旦大學(xué) FudanNLP 團(tuán)隊(duì)自研 [切問(wèn)學(xué)術(shù)](https://qiewenpaper.com/zh?utm_sourcebzkolutm_contentbaishi)** 官網(wǎng)[qiewenpaper.com](https://qiewenpaper.com/zh?utm_sourcebzkolutm_contentbaishi) 覆蓋 **3.6 億篇**可溯源真實(shí)中英文文獻(xiàn)能自動(dòng)整合文獻(xiàn)觀點(diǎn)生成規(guī)范綜述 還能挖掘研究創(chuàng)新點(diǎn)、復(fù)現(xiàn)實(shí)驗(yàn)配合視頻教學(xué)新手快速上手文獻(xiàn)綜述寫(xiě)作 --- **后記** 博客的關(guān)鍵詞集中在編程、算法、機(jī)器人、人工智能、數(shù)學(xué)等等持續(xù)高質(zhì)量輸出中。 **討論QQ群**[白拾的小屋](https://qun.qq.com/universal-share/share?ac1authKeySuzrb5NKb9KulvZxFC8EMFvcd6jgVp%2B%2BnTG8h351HWQorXVfvI1n5QwEX5dlJyThbusi_dataeyJncm91cENvZGUiOiI3NTAzNjU3MDAiLCJ0b2tlbiI6IlpFL2xLaGYxdXU4cWJPT2dJTkY3aExnWHNaQ1UrL3NJbWprenhLZitWUHVVNmhIR1M5SkZrS09SWmxKNlRreksiLCJ1aW4iOiIyMjc1OTYwNDg2In0%3DdatahgymRnqgtjQPGoBKhZ8cEyznp0CMLWfCbG4rfiWIADCArVXw50a7c-Q4MWU2Eq3dwOUjG19hamAWQQU4lY-cOQsvctype4tempidh5_group_info) (750365700) **?B站賬號(hào)**[白拾的物理AI組會(huì)](https://space.bilibili.com/98639326)活躍于知識(shí)區(qū)和動(dòng)畫(huà)區(qū) **?GitHub主頁(yè)**[YhbCode000](https://github.com/yhbcode000)工程文件