桃子桃子快讯
返回首页
研究论文

Frame:神经符号混合架构提升 LLM 漏洞检测精度

Frame 以符号引擎为骨干、LLM 补广度,在 Endor Labs 真实语料上召回与精度均优于 Semgrep OS…

2026.07.02 · 周四4 分钟阅读

Frame 是一款面向静态应用安全测试(SAST)的神经符号混合工具,由符号推理引擎与本地 LLM 层组成,目标是兼顾漏洞检测的召回率与精度。它把符号分析作为「骨干」保证结果可证可验,让 LLM 负责补充上下文相关、跨文件等符号引擎难以表达的漏洞,最后再由符号引擎对 LLM 的提议进行核对与分级。

核心思路:符号引擎兜底,LLM 补广度

传统 SAST 长期面临召回与精度的两难:纯符号分析精确但覆盖窄,会漏掉跨文件数据流、未知框架模型以及与控制缺失相关的漏洞;模式匹配扫描面广但噪声大;纯 LLM 扫描虽然上下文感知强,但会幻觉数据流且不具备可证明性。

Frame 采用一条折中路线:

  • 符号核心始终运行,基于 SIL 中间表示做污点分析与分离逻辑推理,由 Z3 求解器处理约束条件,输出可证明的发现。
  • LLM 作为可选层运行 agent 循环,调用 read_file、grep 等工具在仓库中搜索符号引擎遗漏的漏洞,特别是跨文件数据流。
  • 每个 LLM 提议都需经过符号引擎自带的 sink 模型验证,若 sink 能被识别,则升级为更高置信度等级,LLLM 输出与符号输出始终分层呈现,避免混淆。
  • 最终一轮 triage 分类过滤明显的误报,回收精度。

评估数据:在 Endor Labs 语料上优于 Semgrep

论文在 Endor Labs 提供的真实语料(5 个生产应用、193 条经模型判定汇集的漏洞)上对比了多种模式:

  • Frame 仅符号核心:召回 0.37,精度 0.45,F1 0.41。
  • Frame 加入 LLM 检测:召回 0.71,精度 0.46,F1 0.56。
  • Frame 加入 LLM 检测 + triage:召回 0.67,精度 0.51,F1 0.58。
  • Semgrep OSS(p/default):召回 0.52,精度 0.40,F1 0.45。
  • Endor Labs AI SAST(公开数字,语料略不同):召回 0.44,精度 0.50,F1 0.47。

LLM 层额外找回约 65 个漏洞,这些漏洞既被符号引擎遗漏,也未被 Semgrep 捕获,覆盖 Java、JavaScript/TypeScript 和 C# 三种语言;其中在一个 C# 应用上,传统引擎完全无输出,而 Frame 的 LLM 层仍能给出发现。

实际案例:LLM 找回符号引擎漏掉的漏洞

论文用两个例子说明两类典型问题。一是精度方面:符号层在某个应用打包的压缩 JavaScript 库中命中正则拒绝服务(ReDoS)模式,但该库代码在实际请求路径中不可达;在 371 条符号假阳性中,有 264 条属于这种「CWE-1333 / CWE-1321 命中 vendored library」的情况,triage 阶段正是为此设计。

二是召回方面:一个 C# 控制器的 POST 操作原本带有 [ValidateAntiForgeryToken] 防止 CSRF(CWE-352),但属性被注释掉,漏洞本质是「控制缺失」,符号引擎没有可证明的对象,而具备 ASP.NET 知识的读者一眼即可识别,这正是 LLM 层要补的盲区。

局限与诚实声明

论文对评估的局限做了较坦诚的披露:汇集的 ground truth 本身就由 Frame 自带的 LLM 检测参与富集,因此存在确认偏差;LLM 本身的非确定性也意味着结果可能随运行波动。整体定位上,作者明确表示 Frame 并非要取代符号分析或纯 LLM 方案,而是探索「符号引擎如何让 LLM 保持诚实」这条中间路径。

信源