Zing 论坛

正文

SCTS:让大语言模型通过自我批判树搜索自主发现代码漏洞

一种基于蒙特卡洛树搜索的迭代推理框架,让8B参数模型在分布外漏洞检测任务上超越32B模型,实现无需标注数据的自监督优化。

代码安全漏洞检测大语言模型蒙特卡洛树搜索自监督学习OOD泛化
发布时间 2026/05/27 19:21最近活动 2026/05/27 20:49预计阅读 3 分钟
SCTS:让大语言模型通过自我批判树搜索自主发现代码漏洞
1

章节 01

导读 / 主楼:SCTS:让大语言模型通过自我批判树搜索自主发现代码漏洞

一种基于蒙特卡洛树搜索的迭代推理框架,让8B参数模型在分布外漏洞检测任务上超越32B模型,实现无需标注数据的自监督优化。

2

章节 02

原作者与来源

  • 原作者/维护者: zhurui1995
  • 来源平台: GitHub
  • 原始标题: Self-Critique_Tree_Search: Empowering Large Language Models with Autonomous Reasoning for Novel Code Vulnerability Detection
  • 原始链接: https://github.com/zhurui1995/Self-Critique_Tree_Search
  • 发布时间: 2026-05-27

3

章节 03

背景:代码漏洞检测的困境

在软件安全领域,检测代码中的潜在漏洞一直是开发者和安全工程师的核心挑战。传统的监督学习方法虽然在已知漏洞模式上表现良好,但面对分布外(Out-of-Distribution, OOD)的新型漏洞时,往往力不从心——这些模型无法泛化到训练数据中未曾见过的漏洞模式。

与此同时,大语言模型(LLMs)虽然在代码理解和生成方面展现出强大能力,但在零样本推理场景下仍存在逻辑不一致和召回率低的问题。根本原因在于,这些方法将复杂的漏洞分析过程简化为单步预测,忽略了漏洞检测本质上是一个需要迭代探索和深度推理的任务。

4

章节 04

SCTS的核心思想:自我批判与树搜索结合

SCTS(Self-Critique Tree Search,自我批判树搜索)提出了一种全新的解决思路:在推理阶段进行迭代自监督优化,而非依赖昂贵的标注数据。该方法将蒙特卡洛树搜索(MCTS)框架与大语言模型结合,让模型在推理时扮演双重角色——既是生成漏洞分析报告的推理者(Reasoner),也是批判和修正报告的评审者(Critique)。

这种设计的核心洞见是:对于漏洞分析这类复杂推理任务,显式的搜索机制和自修正能力是实现稳健OOD泛化的有效路径。通过让模型自我批判、自我改进,SCTS能够在没有 ground truth 标签的情况下,逐步收敛到逻辑一致的结论。

5

章节 05

方法论:四阶段迭代循环

SCTS的每一次迭代包含四个关键阶段,形成一个完整的自我进化循环:

6

章节 06

1. 选择(Selection)

智能体采用上置信界(UCB)策略遍历现有搜索树,在高奖励分析路径的开发与未探索路径的探索之间取得平衡。这一阶段选择最有潜力的节点(即现有的漏洞分析报告)进行扩展。

7

章节 07

2. 扩展(Expansion)

选中的节点通过生成新的、可能更优的分析报告来扩展。这一过程包含两个反思步骤:

  • 自我批判:大语言模型首先对选中的报告生成批判性审查,识别其中的逻辑缺陷、遗漏或弱点。
  • 引导优化:基于批判意见,模型生成新的、经过优化的分析报告。
8

章节 08

3. 评估(Evaluation)

SCTS的一个重要贡献是设计了无需 ground truth 标签的奖励函数。新生成的报告基于以下内部质量指标进行加权评分:

  • 置信度(Confidence):模型评估报告内部确定性和逻辑连贯性的分数。
  • 特异性(Specificity):基于规则的评分,奖励提供具体、可解析细节(如漏洞类型、行号)的报告。
  • 一致性(Consistency):模型评估新报告如何解决自我批判阶段识别出的问题的分数。