“AI+Security”系列第4期(三):基于大模型的漏洞挖掘技术与实践

B站影视 2024-12-27 16:30 2

摘要:近日,“AI+Security” 系列第 4 期线下活动在北京顺利举行,主题聚焦于 “洞” 见未来:AI 驱动的漏洞挖掘新范式,吸引了众多安全领域专家参与。奇安信安全研究员尹斌先生围绕 “基于大模型的漏洞挖掘技术与实践” 展开分享。他深入介绍了大模型与静态代码

近日,“AI+Security” 系列第 4 期线下活动在北京顺利举行,主题聚焦于 “洞” 见未来:AI 驱动的漏洞挖掘新范式,吸引了众多安全领域专家参与。奇安信安全研究员尹斌先生围绕 “基于大模型的漏洞挖掘技术与实践” 展开分享。他深入介绍了大模型与静态代码分析、模糊测试以及 Agent(智能体)相融合,在漏洞挖掘中的探索和实践情况,并分享了大模型挖掘漏洞实践的具体内容,帮助与会者更好地理解和掌握漏洞挖掘技术,为行业技术交流与发展提供了有价值的参考。

漏洞挖掘方法丰富,包括静态代码分析、模糊测试等。2022 年起,大模型技术逐步应用于漏洞挖掘领域,推动了该技术的发展。大模型在漏洞挖掘中主要依靠微调、RAG 和提示词任务。在学术研究中,常用 CodeBERT、GPT-4 等模型,而团队研究发现开源及国产模型同样具有有效性。尹斌先生从静态代码分析、模糊测试和大模型融合智能体等方向分享了相关漏洞挖掘技术。

大模型融合静态代码分析挖掘漏洞

静态代码分析即在不运行程序的情况下,对源码和二进制代码进行剖析以探寻漏洞,其常用技术包含符号执行、控制流分析等,CodeQL 是其中较为经典的工具。

尹斌先生指出,将大模型与静态代码分析相结合时,存在两个极具代表性的经典方法。

方法一为 DiverseVul,它借助大规模数据集对大模型进行精细微调。从训练结果来看,模型的准确率表现较为出色。然而,不容忽视的是,数据集中白样本占据了相当大的比例。这一现象直接导致了在衡量模型性能的关键指标 Precision(精确率)和 Recall(召回率)方面,数值并不理想,最终综合得出的 F1 值仅为 47%。尽管如此,与之类似的其他研究成果却表明,大模型经过微调后,在漏洞识别率上有着显著的提升。具体的研究结论还包括,经过充分训练后的大模型在漏洞检测任务上的表现超越了当前领域内的最优(SOTA)模型;在不同的模型对比中,T5 模型展现出了更为出色的效果;特定的预训练任务对于提升模型整体效果发挥着至关重要的作用,例如变量重命名、移除噪声代码等操作都能有效优化模型对漏洞的识别能力;此外,模型在面对不同类型的 CWE(常见弱点枚举)时,其识别准确率存在着明显的差异。

方法二则是 GPTScan。它主要针对逻辑漏洞展开检测,而逻辑漏洞往往会对业务流程产生严重影响,例如在金融转账场景中可能导致资金错误转移等异常情况。GPT 在整个过程中主要发挥协助理解代码逻辑的作用,并与传统工具协同扫描。这一过程具体分为三步:

第一步是精心选择重点分析函数,这一环节需要通过双重筛选来实现,一方面要过滤掉可能干扰分析的第三方库函数,另一方面要进行全面的可达性分析,确保筛选出的函数在实际业务流程中具有可操作性和关联性。

第二步是巧妙调用大模型(以 ChatGPT 为例),借助其强大的语言理解能力来判断代码是否满足特定的漏洞类型,目前已经针对十种常见漏洞制定了详细且各异的规则,其中场景匹配是一项重要的判断依据,通过将代码逻辑与预定义的漏洞场景进行精准比对,从而初步判断漏洞的可能性。

第三步则是由于 GPT 的回复可能存在一定程度的不确定性和偏差,所以需要进一步深入确认其发现的潜在问题是否真正构成漏洞,这一步骤需要综合运用多种技术手段和专业知识进行严谨判断。

大模型融合模糊测试挖掘漏洞

在当今的软件安全领域,模糊测试是一种极为重要的技术,其核心原理是通过向软件系统输入恶意或异常数据,从而挖掘其中潜藏的漏洞。模糊测试主要分为以下几类:

1. 白盒模糊测试

在这种测试模式下,测试人员可以获取软件的源代码,这使得他们能够深入了解程序的内部结构和逻辑流程。基于源代码的知识,测试人员可以更加有针对性地设计测试用例,精准地覆盖程序中的关键路径和复杂逻辑,从而提高发现漏洞的效率和准确性。

2. 黑盒模糊测试

与白盒模糊测试相反,黑盒模糊测试在源码未知的情况下进行。测试人员仅能从软件的外部接口和功能表现来设计测试用例,这种方式更贴近软件在实际使用场景中的情况。虽然缺乏源代码信息,但通过大量不同类型的输入数据,可以广泛地探测软件系统在各种情况下的反应,从而发现潜在的漏洞。

3. 灰盒模糊测试

灰盒模糊测试介于白盒和黑盒之间,测试人员已知部分信息,例如软件的某些内部结构、算法或数据处理流程,但并非全部源代码。这种方式结合了白盒和黑盒测试的优点,既能利用部分已知信息进行有针对性的测试,又能从外部视角发现一些可能被内部逻辑掩盖的漏洞。

模糊测试的基本流程是一个系统且严谨的过程。首先,需要向被测对象输入丰富多样的测试用例,这些测试用例既包含合法的输入,用于验证软件在正常情况下的功能正确性;也包含非法的输入,旨在故意触发软件系统的异常处理机制,暴露潜在的漏洞。在输入测试用例后,密切观察被测对象的运行状态,重点关注如崩溃、异常抛出和响应超时等关键情况。一旦出现这些异常现象,就可能暗示着软件存在设计缺陷、逻辑错误、功能偏差以及安全隐患等严重问题。整个模糊测试主要涵盖四个关键步骤:

1. 测试用例生成

这是模糊测试的基础环节,需要根据不同的测试策略和目标生成各种类型的测试用例。测试用例的多样性和有效性直接影响到漏洞发现的概率。

2. 程序执行

将生成的测试用例输入到被测软件中,使其按照正常的业务逻辑运行,模拟实际使用场景。

3. 运行时监控

在软件运行过程中,实时监控其各种行为和状态,记录所有的运行信息,包括内存使用情况、系统调用、函数执行顺序等,以便后续分析是否存在异常。

4. Crash 分析

当软件在测试过程中发生崩溃或其他异常情况时,对产生的错误信息、堆栈跟踪等进行深入分析,确定漏洞的位置和原因。

尹斌先生表示,大模型融合模糊测试后,在测试驱动生成方面有显著改观。大模型能基于程序语义理解生成多样化种子,包含常规、边界及异常情况,还会参考同类项目进行调整。在变异阶段,依据程序结构和已有测试信息提供智能变异策略。它还可深度分析程序源代码,构建逻辑模型以预测漏洞路径,匹配已知漏洞模式,优化执行顺序与资源分配。测试过程中,接收运行时的覆盖率、异常等反馈来调整驱动生成,并迭代优化自身理解与策略,持续提升测试驱动质量,从而高效挖掘软件漏洞。

例如,某极具价值的文章深入探讨了模糊测试的关键环节 —— 生成 fuzz 驱动程序时提示词的写法,其中提到在迭代查询中利用所有可用的信息,包括基本API信息、扩展API文档、示例代码片段和错误信息,能达到更好的fuzz驱动生成效果。实验结果显示,LLM生成的fuzz 驱动程序在大多数问题上表现出与手动编写的类似效果,但仍需进一步改进以处理复杂性和错误修复。目前大模型生成fuzz驱动程序,在自研的天象模糊测试平台实测是可以发现0 Day漏洞的。

大模型融合Agent挖掘漏洞

在漏洞挖掘领域,Agent 概念为技术发展开辟了新路径。Agent (Nvidia 定义)作为一种能够借助大语言模型(LLM)对问题展开推理、制定解决方案计划,并依靠一系列工具执行该计划的系统,具备基于 LLM、推理、计划、执行(通过工具调用)以及存储(利用 Memory 记录多轮交互对话历史)等关键特性。

尹斌先生提及,大模型融合 Agent 进行漏洞挖掘存在两个经典方法。

方法一:Naptime

Google 的 Project Zero 团队于 2023 年开始开发 Naptime 项目,并在 2024 年 6 月底予以公开。该团队发现,当前诸多 LLM 辅助漏洞挖掘的文献与实际应用经验存在偏差,难以应用于真实场景。他们认为,适用于实践的方法应包含以下要点:

1. 强化推理过程:给予 LLM 更多的推理时间,促使其输出推理过程以及更多中间结果后再进行决策,如此能够提高准确率。参考资料表明,当要求 LLM 逐步执行操作并展示中间计算结果时,可得出更为准确的结论,就像 COT(生成思维链)这种一系列中间推理步骤,有助于提升大型语言模型执行复杂推理的能力。

2. 构建交互式环境:交互式环境至关重要,与编程环境交互在安全研究中具有关键意义。参考案例证实了交互式代码生成的优势,例如 InterCode 可作为提升代码理解和生成能力的挑战性基准,其 “交互式” 特点模拟了人类编写代码时 “写代码 - 执行 - 测试” 的流程。

3. 提升模型工具调用能力:模型若能调用工具,自身能力将得到进一步增强。

4. 确保结果验证准确性:必须具备准确验证结果的方法,漏洞验证并非模糊不清,在验证集上能够实现百分百肯定的测评。

5. 优化抽样策略:在漏洞研究中,虽然常常涉及多种猜测,但模型一次性考虑多种猜测效率较低,因此推荐抽样策略,即让模型通过多次独立尝试探索多种猜测,并且该策略可在系统中加入验证环节来达成,需要注意的是,这并非尝试所有可能性,而是具有针对性地提高探索效率。

方法二:Big Sleep

Google Project Zero 与 Google DeepMind 团队合作,将 Naptime 升级为 Big Sleep,并首次基于 Gemini 1.5 Pro 发现了 SQLite(C 语言代码)中的 stack overflow 漏洞。

例如,在实际情况中,iColumn 参数通常大于 0,不过 - 1 用于表示 ROW-ID 属于特殊情况,正常情况下使用该参数的子函数需要进行校验,特别是在用于做 index 的场景中。另外,PoT Prompting 方法作为 CoT 的改进,通过生成 Python 程序代码来表达推理步骤,并借助 Python 解释器执行计算,提高了数值推理任务的准确性和效率,在数学和金融数据集实验中,PoT 在解决复杂计算推理问题方面表现更为出色。这些技术和理念共同为漏洞挖掘中 Agent 的应用及相关研究提供了丰富的参考以及广阔的探索方向。

大模型挖掘漏洞实践

大模型在漏洞挖掘实践中展现出多方面的关键能力,涵盖漏洞挖掘全流程以及知识与数据处理等层面。

在大模型辅助漏洞挖掘全流程能力阶段,尹斌先生表示,主要涵盖了如下三个关键阶段的工作:

• 程序理解与漏洞知识准备阶段是基础且关键的环节。程序理解作为此阶段的首要任务,要求对目标程序的架构与功能进行深入剖析,这是后续各项操作得以开展的根基。继而在程序理解的基础上,深入开展 RFC 理解工作,通过对与目标程序相关的 RFC(请求评论文档)标准进行细致研究,明确程序设计的规范及预期行为,从而更为精准地把握程序应有的运行模式。完成上述两项任务后,进入漏洞知识理解阶段,全面梳理既有的漏洞知识,构建对潜在漏洞的系统认知,为后续检测环节奠定坚实基础。

• 进入漏洞检测与分析阶段,包含多种检测方法。静态代码分析通过对程序源代码进行深入研究,精准识别其中潜在的漏洞及代码薄弱环节,从代码层面挖掘可能存在的安全隐患。模糊测试采用构造大量异常或边界输入的方式,对程序健壮性展开测试,试图触发潜在漏洞,检验程序在极端或特殊输入情形下的应对能力。渗透测试则从攻击者视角于动态环境中对目标进行测试,验证程序在实际运行场景中的安全性,模拟真实攻击场景以发现潜在安全问题。

• 漏洞验证与修复阶段随后展开。漏洞验证环节针对检测出的潜在漏洞进行复现与确认操作,唯有确保漏洞真实存在且可复现,后续工作方能有效推进。接着实施漏洞评估,严谨考量漏洞的影响范围与危害程度,为制定科学合理的修复方案提供关键依据。随后依据评估结果开展漏洞修复工作,精心设计并实施修复方案,力求彻底消除漏洞。最后,对整个流程进行全面总结与归纳,生成漏洞分析报告,详细记录漏洞从发现、验证到修复的全过程及其结果,为后续安全维护及参考提供重要资料。

在漏洞挖掘领域,大模型展现出多方面的关键能力,涵盖知识 / 数据处理、知识问答、静态代码分析、与多种技术融合以及综合平台应用等层面,共同推动漏洞挖掘工作的高效开展。

1. 知识 / 数据能力

拥有海量漏洞相关知识与数据资源,接入 NOX 全量漏洞达 25W +,同时涵盖 3000W + 的 CPE 信息和 10W + 的 POC/EXP 信息。持续收集来源广泛的海量安全新闻数据,已存储 80W + 高质量安全情报,并构建了集采集、清洗、存储、展示、推荐于一体的流水线平台,确保数据高质量。此外,实现智能推荐与知识图谱功能,既能个性化推送情报,又能基于大模型抽取非结构化情报中的安全实体和关系,构建全面知识图谱。

2. 漏洞挖掘知识问答能力

通过进行实体抽取和关系抽取,基于长文本大模型微调实体和关系知识,利用统一抽取模型操作,构造知识图谱后,可以进行知识图谱推理。同时,知识图谱具备推导隐含知识能力。基于安全领域数据构建问答数据集,微调大模型基座生成安全问答大模型,支持对单篇或多篇文档综合理解,预设多路召回实现知识问答。

3. 静态代码分析挖掘漏洞能力

借助国内首款在线查询式二进制漏洞挖掘工具破壳平台(https://poc.qianxin.com/),基于静态程序分析技术助力用户控制代码安全缺陷。其具备逆向增强、交互式漏洞挖掘等多功能,支持团队协作、缺陷定位、变体分析等操作,还可编写查询规则发现缺陷、获取程序信息、管理版本及展示漏洞,提交认证漏洞可获奖励。

4. 大模型融合Fuzz挖掘漏洞能力

体现在多个方面,如通过标识符恢复等提升引擎准确性,涉及逆向、引擎能力构建、漏洞结果验证等。在代码分析中,LLM 辅助反编译优化、模式总结等,在实际案例中能进行多种识别与总结,还可生成 Fuzz 驱动程序,如在天象模糊测试平台发挥作用,且能进行二进制文件功能理解与漏洞分析。

5. 大模型融合供应链分析能力

可理解二进制功能,如分析 file.so 文件为 libtar 共享库及相关功能,能指出其中 th_read 函数的堆缓冲区溢出漏洞及成因和修复方法,还可进行二进制相似性分析。

6. 大模型辅助漏洞挖掘综合平台

整合上述各项能力,实现漏洞挖掘流程的规范化和高效化,为漏洞挖掘工作提供全面且系统的支持,有效提升漏洞挖掘的效率与质量,在整个漏洞挖掘领域发挥着重要作用。

写在最后

漏洞挖掘对于保障软件和系统安全至关重要。大模型融合多项技术在漏洞挖掘领域的应用,为这一关键工作带来了前所未有的突破与创新。

展望未来,安全极客社区将积极响应技术发展趋势,以 “AI+Security” 为核心,开展更多丰富多彩的主题活动。社区旨在汇聚来自各行各业的专家学者,共同探讨前沿技术,分享宝贵的实践经验和技术干货。

嘉宾们分享的 PPT 将在安全极客知识星球进行分享,欢迎大家关注,以获取更多干货内容。

来源:云起无垠

相关推荐