文章总结: 本文提出SASTBENCH,首个针对AIAgent自动SAST分级任务的基准。该数据集结合真实CVE与SAST输出模拟现实分布,解决了现有评测偏离实际误报难点的问题。实验表明,增强模型推理及优化提示词能显著提升分类性能。该基准为SAST自动化研究提供了标准化平台。 综合评分: 90 文章分类: AI安全,代码审计,应用安全,漏洞分析,安全工具
【论文速读】| SastBench:智能体驱动的静态应用安全测试结果分级能力测试基准
原创
知识分享者 知识分享者
安全极客
2026年1月15日 17:35 北京
基本信息
原文标题:SASTBENCH: A Benchmark for Testing Agentic SAST Triage
原文作者:Jake Feiglin & Guy Dar
作者单位:Rival Labs
关键词:SAST,Agentic Benchmark,三分类,静态应用安全测试,漏洞发现,人工智能,LLM,数据集,自动化安全分析
原文链接:https://arxiv.org/pdf/2601.02941
开源代码:暂无
论文要点
论文简介:本文针对静态应用安全测试(SAST)领域实际中普遍存在的误报困境,提出了SASTBENCH——一个专为评测AI Agent自动化SAST三分类任务(即自动区分SAST工具报告中的真漏洞与误报)而设计的全新基准数据集与评测方案。与以往基准主要聚焦漏洞检测本身不同,SASTBENCH紧贴现实中SAST分析工作的真实流程,基于CVEs真实样本与实际SAST工具输出构建,兼顾数据分布的真实性与Agent通用可测性。论文系统阐述了SASTBENCH的数据采集与标注流程、任务与评测体系,并通过对多种大语言模型和Agent架构的实验对比,揭示了不同模型与设计在三分类自动化任务中的表现差异和挑战。SASTBENCH以开放态度面向社区,旨在推动SAST领域自动化、智能化发展,为学术和产业提供统一的比较平台。
研究目的:本研究旨在解决SAST(静态应用安全测试)工具在检测代码安全漏洞时产生大量误报、给安全分析人员带来严重人工筛查负担(Triage)的现实问题。尽管近些年AI和大语言模型(LLM)展现出自动化代码理解和漏洞分析的能力,现有公开基准数据集和评测任务并未从SAST实际流程出发,难以模拟真实三分类场景中的误报分布与判断难点,导致模型在这些基准下表现的参考性有限。本文的直接目标是面向“自动SAST三分类”这一实际需求,设计并构建兼具现实性、规模性、Agent友好的数据集和评测流程,为研究者和业界产品提供真实表现的对照标准,并系统性比较不同AI Agent和LLM的能力边界和优化方向。
研究贡献
- 提出并实现了SASTBENCH,首个定位于Agent自动SAST三分类任务的大规模、现实分布基准,弥补了现有基准难以反映实际SAST Triage任务需求的缺失;
- 创新性地结合真实CVEs(人类标注漏洞、强关联CWE分类)与SAST工具输出(严选误报负样本),设计自动化、高效的数据采集和样本标注策略,降低手工负担同时保证相对真实的三分类分布;
- 提供了灵活扩展的数据结构和评测环境,支持多种Agent/LLM架构参与,开放Docker化部署与API接口,支持多语言/多类别覆盖;
- 系统性评估了不同模型、Agent设计在SASTBENCH下的表现,揭示更强模型/定制安全提示显著提升性能的规律,并深度剖析指标与能力边界;
- 相关代码和数据开放,推动学术与产业的Agent SAST自动化研究,共建透明且可复现的标准实验平台。
引言
静态应用安全测试(SAST)工具已成为现代软件安全防护的重要支撑,其核心在于于开发流程中自动化扫描源代码,提前预警潜在安全漏洞,有效降低安全风险。然而,这些工具固有的一个重大缺陷是误报率极高——即大量正常代码会被错误标记为漏洞(false positives),极大消耗了安全分析师的人力资源,使得人工Triage(初步筛查分类)成为不可或缺却枯燥负担沉重的环节。这一流程既费时费力,又极度依赖分析人员经验,且人为失误频发,久而久之容易导致告警疲劳,最终增加真正安全威胁被忽视的风险。
大语言模型(LLM)近年来在理解代码、逻辑推理等方面展现出非凡潜力,各类以LLM为核心的Agent系统日益成为自动化漏洞筛查的希望。遗憾的是,现有面向代码安全的公开数据集和评测基准并未严格将SAST三分类(Triage)任务从检测、分类等更宽泛问题中拆分出来,导致评测难以真正对齐SAST误报分布的“难负样本”特性。研究者由此面临一个真实痛点:在AI Agent自动Triage领域,缺乏能够动态反映真实行业场景的数据与评测标准,制约了AI产品和方法的科学进步和落地。
实际上,SAST工具在业界已是主流安全策略的基石,因其能够“一次发现、多处排查”,极大提高了产线代码风险的初步过滤效率。但“过滤”之后的二次人工Triage数仍然庞大,并且大量误报与复杂样本交错,需要智能体能够结合上下文、语义与安全领域知识综合判断。当前许多面向SAST自动化的AI工具不断涌现,可受限于缺乏统一的高质量数据集,彼此之间无法做出科学有效的横向对比,产品发展缓慢且难以客观评价。更重要的是,SAST三分类的“误报分布”通常远比普通漏洞检测难度大——因为这些负样本恰是SAST算法难以判别的“硬负类”,非简单与普通代码混合。如何实现“模拟-现实一致”的数据采集与评测,是该任务必须突破的关键。
为此,本文提出SASTBENCH,面向SAST三分类、尤其关注Agent自动化评估场景设计,将真实CVEs作为真阳性,并以经过严格过滤的SAST工具输出作为近似误报负样本,严格遵循现实分布规律生成,最终构建具备任务真实性、规模普适性、评测灵活性的全新基准体系,并搭配标准化Agent评测环境,力求为相关AI研究和产业提供一致可靠的实验平台。
研究背景
SAST(静态应用安全测试)工具能够主动识别大型代码库中的各类安全风险。最初,这些工具主要靠正则或规则匹配,但这种机制往往缺乏对程序上下文和数据流的理解,造成大量无效检测。例如,诸如用户输入注入命令一类的风险,有时仅依靠模式识别就误将安全代码误判为漏洞。现实报告显示,例如在Python/Flask项目中,通过SAST检测出的命令注入警告中,99.5%实为误报,反映出人工Triage的需求极大。据统计,SAST工具检测到的安全相关警报中,实际有效的真阳性比例仅为8%至30%,不同语言分布有显著差异;而近年行业报告甚至指出,在2166条SAST报告的漏洞中,噪声(误报)比例高达91%。
公开基准和数据集方面,当前主流的漏洞检测和分类基准依然未能对齐“SAST三分类”任务本身。例如,Juliet、CASTLE、Devign等经典数据集多聚焦人工构造或模板化的合成样本,虽便于精确标注和问题归一,但严重丧失了真实场景下SAST误报分布的复杂性与多样性。PrimeVul、JitVul等近期基准试图通过CVE修复前后对比生成“正-负”配对,但因补丁本身容易暴露负样本特征,导致分布偏差或信息泄漏。其他如ReposVul、CleanVul则通过大规模开源仓库挖掘,在规模和语种覆盖方面取得突破,然而大多没有明确针对Triage任务专用的“硬负样本”设计思路。
SASTBENCH在上述背景下独具差异。首先,它聚焦于真实SAST工具输出产生的“难判”误报作为负样本,结合最新CVEs严格控制三分类分布,并支持多语言、多漏洞类型的全局覆盖。其次,SASTBENCH优化了Agent化评测场景,支持Docker环境独立部署、标准化API调用,不干涉Agent工具链和推理逻辑,保证评测公平与通用性。相比绝大多数未考虑Agent工作流或现实SAST分布的旧基准,SASTBENCH更加贴合自动Triage的挑战和实际工业场景。
研究方法
SASTBENCH的数据集设计和基准方法论遵循三大原则:真实还原SAST Triage流程、自动化高效采集与持续迭代、支持多样Agent架构公平参与。具体实现上,数据集(当前版本为SASTBENCH-v0.1)分为正类(True Positive, TP)与负类(False Positive, FP),每一条样本都基于真实开源仓库的特定提交(commit)构建,同时绑定对应的CWE类型。正类样本由CVE数据库采集,重点挑选有GitHub可验证提交和准确CWE标签且代码能溯源的公开漏洞;为了防止模型利用训练数据提前获悉答案,数据集设有“知识截止期”——只选取LLM截断时间点之后的CVEs(本文实验实例为2025年2月后),防止模型“预知”或数据污染。
负类样本采集思路高度贴合现实。研究团队选用流行开源SAST工具(semgrep免费版等)在CVEs相关仓库的pre-fix版本上运行,自动生成的所有检测警报中,严选不与已知CWE重合的结果,并加多重过滤(如去除与真漏洞同函数内检测、跨漏洞交叉冗余),最大限度保证“误报”属性。这些负样本更能反映SAST工具现实应用中的Triage难点。
在格式设计上,一条样本记录即为一个“提交-漏洞类型”对,其中包含该类型关联的所有检测位置与代码信息。每条数据详细标注仓库名、具体commit hash、函数名、代码行上下界、检测起止行、CWE类型、语言、以及采集来源等,保证模型评测时能获得完整语境,同时方便追溯自动化过程。
SASTBENCH的评测流程全部容器化:每份提交生成独立的评测仓库环境,Agent仅需实现/analyze接口,输入为结构化的检测任务(定位、类型、上下文等),输出二分类判断(true_positive或false_positive)。核心指标采用Matthews相关系数(MCC)以解决极度类不平衡问题,辅以Precision、Recall、F1、F2分数和Accuracy从不同维度分析模型表现。为鼓励持续进化,SASTBENCH机制支持根据时间窗口、语言等标签动态扩展和版本管理,可灵活适配不同的研究前沿。
数据集多语言特性显著,当前覆盖38种主流程序设计语言,囊括139种独立CWE类型。总样本量为2737条,其中TP(真漏洞)299条,FP(误报)2438条,严重不平衡(8.15:1),但极符合实际安全分析场景的分布规律。漏洞类型既包括高频Web输入类(如XSS、SQL注入),亦兼顾内存安全、逻辑缺陷等多元形态。这一机制大大降低了以往数据集的模板化和偏语种问题,提升基准多样性和高维挑战性。
研究实验
SASTBENCH的实验部分围绕“全流程复现Agent自动Triage场景”展开,详尽设计多模型、多Agent、工具链多维组合的对比评测。实验工具链配置包括文件读取、目录遍历、符号搜索等基础指令,还有面向特定CWE的查询工具,但特意保留一定“虚假干扰”,使得测试更具现实复杂度。
被评测Agent覆盖多种范式:
- “No Tools Baseline”单纯依赖LLM“一次性推断”能力,仅提供代码关键信息而无任何自动化工具调用,采用Chain-of-Thought(链式思考)模式。
- “Simple ReAct Agent”采用经典ReAct循环,允许LLM与环境交互、逐步推理而不加任何提示优化。
- “Improved Prompt Agent”则由领域安全专家辅助设计,注重安全分析逻辑与关键信息高亮,极大强化推理能力。
- 另有“OpenHands”、“mini-SWE-agent”等通用Agent架构,用模块化/分工合作工具集处理分析任务,测试Agent领域泛化能力。
模型层面,实验涉及来自Google、Anthropic、Meta、OpenAI等不同研发团队的高级大模型,包括Gemini 2.5(Pro/Flash)、Claude Sonnet 4.5、Llama 4 Maverick 17B等,以及DeepSeek-R1、Qwen3-Coder 480B、GPT-OSS 120B等具备代码理解与推理能力的最新LLM。
评测指标采纳严谨的分类标准。SASTBENCH以MCC为主,因其能全面反映在样本极度不均衡下的真实预测性能。Precision与Recall用于分别衡量误报过滤和真漏洞召回,F1/F2则为二者的加权结合,尤其F2更加强调召回对安全实际的决策意义。所有Agent在统一数据与环境下运行,确保结果差异源自模型与逻辑本身而无需纠结系统性偏差。为保证效率和资源利用率,部分高复杂度实验仅在部分平台(如Gemini)上充分展开,其余配置则取代表性样本进行性能展示。
结果分析
实验大表明,不同Agent和LLM架构下模型的Triage准确性、召回能力以及实际应用适配性存在较为明显的分化趋势。具体来看,具备更强推理能力与更丰富领域安全知识的大模型(如Gemini 2.5 Pro、Claude Sonnet 4.5)在采用“改良安全领域提示(Improved Prompt/ReAct)”后,均显著优于简单指令或泛用Agent架构,取得更高的MCC分数与F1、F2综合表现。数据可见,Gemini 2.5 Pro(改良ReAct)在MCC(0.148)、召回率(0.582)上表现突出,而Claude Sonnet 4.5则在改良输入后,召回率高达0.722,但两者在Precision与Recall上的平衡仍需进一步提升,这也反映出Triage任务本身对“高召回/低误报”双重极限的技术难点。
精细分析不同Agent/model组合的PR空间分布,发现更复杂的推理机制与更强基础模型往往同时带来Precision与Recall的提升,少部分模型(如GPT-OSS)由于外部交互异常或数据噪声影响未能达到预期效果。此外,无工具方案(No Tools Baseline)居然与基本ReAct Agent整体表现接近,说明在提供足够上下文信息基础上,单LLM已能覆盖较多语义推理矿点,但进一步提升仍依赖于流程优化与领域知识加持。
号值得注意的是,不同模型的错误与正确识别样本高度重合,表明当前主流LLM在SAST三分类的推理链条上倾向“同样的成功/失败模式”,彼此差异更多体现在对安全边缘样本“疑难点”的覆盖广度与深度。聚合评测各指标表现,除Accuracy外,F1、F2与MCC排序高度一致,进一步说明MCC在类不平衡场景下的强解释力。
更为关键的经验洞见包括:安全领域针对性提示词(prompt)设计对于LLM的实际分析能力提升极为显著,能有效补齐“表面验证即安全”等常见推理陷阱。面向未来,只有融合更深层次的安全专家知识/案例库、强化Agent推理与迭代机制,才能根本性提升模型对Triage场景中极“刁钻”负样本的甄别能力。初步的通用Agent,若无针对SAST任务的逻辑补全和定制指导,难以取得较高均衡性结果,表现大幅落后于精细优化设计。
论文结论
本文提出的SASTBENCH有效填补了SAST三分类Agent化评测的基准缺失,为自动化机器三分类方案的合理比较和现实指导提供了契合产业实际的数据分布、评测流程和开放接口。实验验证显示,当前LLM和Agent虽已初步具备自动Triage潜力,但模型能力提升、提示词优化与领域知识深挖三者缺一不可,而通用方案对复杂负样本仍存较大识别短板。SASTBENCH的开放机制与自动化持续更新策略,将极大促进SAST Triage相关研究社区和产品化实现的透明度、可复现性和进步速度。
尽管如此,SASTBENCH亦存在一定局限性,如负样本为SAST工具误报“近似”,理论上极个别真实未知漏洞存在“混入”风险,不过大规模过滤和统计分析已最大限度降低此类偏差。面向未来,作者建议SASTBENCH与其他补全集同用——如更关注特定漏洞注入、极端边界场景的数据集——共同构成自动化安全评测的全景视图。整体来看,SASTBENCH的发布为SAST领域Agent智能化奠定了更坚实的实验基准与标准平台,对学界和产业都具有显著推动作用。
-End-
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全极客 知识分享者 知识分享者《【论文速读】| SastBench:智能体驱动的静态应用安全测试结果分级能力测试基准》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论