人工智能大模型在代码安全审查方面落地研究

随着信息技术的飞速发展,软件在各个领域的应用越来越广泛,其安全性也日益受到重视。在软件开发过程中,代码安全审查是确保软件安全性的重要环节。然而,传统的以人工为主的代码安全审查方式已经难以适应快节奏、敏捷模式的软件开发流程。尽管目前市场上有众多成熟的安全扫描工具可供选择,但其扫描结果误报率较高,难以在开发流水线中实现准确无误的自动化扫描,仍需花费大量人力资源手动排除工具误报,且排误准确率在很大程度上依赖于安全人员的个人技能。为解决上述问题,进一步提升代码安全扫描在开发流水线中的自动化程度,邮储银行软件研发中心安全测试团队(以下简称“安全团队”)开展了人工智能大模型技术赋能代码安全审查工作的研究。

一、人工智能大模型

赋能代码安全审查的应用测试

1

明确测试目标

为了探索和分析大模型产品能否有效检测常见的代码漏洞类型,并据此初步判断其在实际应用中的成功率和可行性,安全团队确定了以下研究目标。一是分析代码漏洞类型与大模型检测的适配性,评估哪些漏洞的特征是易于被大模型捕捉和识别的,分析大模型在分析代码时的优势与局限性。二是初步判断不同大模型检测代码漏洞的准确率、漏报率和误报率等方面的表现。三是考虑替代传统代码安全审计工具的可能性。

2

制定测试方法

(1)测试对象选择

基于上述目标,为了全面评估人工智能大模型在代码安全审查中的表现,同时也为了深入研究大模型在检测代码漏洞方面的适用性,安全团队选取了五个Transformer架构的大模型商业版产品作为本次测试的大模型样例。五个大模型的简要特点见表1。

表1 大模型特点概述

此外,为了确保测试数据的全面性和代表性,安全团队选取30种常见代码漏洞的正反例(正例含有漏洞的代码、反例不含漏洞的代码)作为测试数据集。这些漏洞涵盖了常见的安全问题,如SQL注入、命令注入、XSS攻击等。同时,为了更贴近实际开发场景,安全团队还从实际的项目中抽取了源代码片段,经过脱敏处理后作为测试数据集的补充。

(2)大模型测试

基于上述测试对象,安全团队设计了详细的测试流程,以确保测试结果的准确性和可靠性。测试流程主要包括模型选择、数据准备、大模型提问组装、大模型审查、结果分析与验证等步骤。同时,为了评估大模型在代码安全审查中的表现,安全团队确定了以下三个评估指标:准确率、漏报率和误报率。准确率是指大模型正确识别的漏洞数量与总漏洞数量的比值;漏报率是指大模型未能识别的漏洞数量与总漏洞数量的比值;误报率是指大模型错误识别的漏洞数量与总漏洞数量的比值。通过这些指标,可以全面评估大模型在代码安全审查中的性能。

3

测试结果与分析

经过严格的测试,五个大模型在代码缺陷检测的准确率、漏报率和误报率情况见表2。

表2 大模型在代码缺陷检测的准确率、漏报率和误报率

从总体测试结果来看,大模型B在准确率(71.7%)上显著优于其他模型,但其较高的漏报率(15%)表明其对潜在风险的覆盖存在一定不足。而其他模型(A、C、D、E)虽然准确率相近(55%~58.33%),但在漏报率和误报率上呈现明显的权衡关系:漏报率较低的模型(如D、E)伴随极高的误报率(77%、74%),反之漏报率稍高的模型(如A、C)误报率相对可控(38.3%、33.3%)。这一现象揭示了漏洞检测领域的核心矛盾——降低漏报通常会放宽判断标准,往往以误报激增为代价,而高准确率模型可能因保守策略遗漏部分真实风险。这一矛盾本质是模型判别边界的刚性限制:放宽边界(抓更多风险)必然引入噪声,收紧边界(减少噪声)必然遗漏部分真实信号。

从具体漏洞类型来看,大模型对以下正反例的识别和判断已经展现出了高度的准确性和可靠性(见表3),说明使用大模型替代人工来审查此类安全漏洞代码具备一定的可行性。然而,大模型在处理“命令注入”“NULL引用”“SQL注入”三类缺陷反例时均存在不同程度的误报现象,五个模型合并统计时,未出现漏报的情况。

表3 大模型正确审查代码缺陷的用例情况统计

此外,部分大模型在理解特定缺陷方面存在不足,如在检测SQL注入漏洞时,大模型B和C虽然判断出了SQL语句的参数非用户控制,但错误地认为只要存在SQL语句拼接就存在漏洞,这表明大模型在理解SQL注入的复杂性和上下文依赖方面存在不足;在检测HTTP响应截断漏洞时,大模型A对HTTP响应截断漏洞的理解完全错误,误认为它是字符串长度的截断,这表明大模型在理解网络安全漏洞,特别是HTTP协议层面的缺陷时,存在显著不足;在检测硬编码密码的反例时,大模型A将常量密码标志位误判为真实密码,这表明大模型在识别过程中可能过于依赖关键字匹配,缺乏对代码上下文和语义的深入理解;在区分配置文件中的明文和加密后密码方面,模型A和B存在误判,这揭示了大模型在处理此类问题时的局限性。加密后的密码往往具有特定的格式或特征,但这些特征并不总是明显或一致的,因此大模型难以对此作出准确判断。人工审查此类问题时同样仅依靠经验或者结合有限的其他信息(如上下文、文件类型、系统配置等)进行综合判断。

综上所述,为了实现大模型在代码审查中的应用,还需进一步降低其误报率,提升其准确性和可靠性,如提升大模型训练数据的质量和多样性、选择合适的训练算法,以及提升提示词(Prompt)的精准度等。总体来看,大模型在赋能代码安全审查方面具有较大应用潜力,落地实践的可行性较高。

二、人工智能大模型

赋能代码安全审查的实践

基于以上研究,安全团队有针对性地对部署在邮储银行内网的人工智能代码大模型产品进行调试,并将之与代码安全扫描工具进行集成(如图1所示),以实现大模型对日常代码安全审查工作的赋能

图1 大模型产品与代码安全扫描工具集成架构

1

与静态代码安全扫描工具集成

安全团队通过编写程序实现静态代码安全扫描工具与大模型的集成。该程序利用静态代码安全扫描工具提供的OpenAPI接口获取扫描任务和漏洞信息,然后根据漏洞信息组装大模型提问,并将已经格式化的问题提交给大模型进行智能审查。大模型运用其强大的自然语言处理能力和快速分析能力,基于大量训练数据和复杂算法逻辑所积累的知识和判断能力,给出问题的回答结果。大模型辅助代码安全审查示例如图2所示。

图2 大模型辅助代码安全审查示例 

待大模型完成审查并输出结果后,程序会进行详细的分析和验证。这一步骤旨在确保大模型的审查结果准确,符合预期的质量标准。如果大模型无法给出明确的结论,或者其回答的内容存在模糊不清晰的情况,那么程序将依赖进一步的人工核实来确定审计结果。此外,如果大模型的回答结论与其详细分析内容存在明显的矛盾或不一致的情况,可能是大模型本身对自然语言的理解表达有问题,程序需要更加谨慎地判断并确定采信的对象,以确保最终的审计结果不会受到大模型理解偏差的影响。

最后,程序根据大模型回答结果反馈标记扫描工具的缺陷状态,进而形成闭环的“自动化扫描+大模型审查”体系。

2

与安全测试管理工具集成

在上述流程的基础上,安全团队进一步将人工智能大模型与安全测试管理工具集成,形成“自动化扫描+大模型审查+安全测试”的人工智能大模型代码安全审查工作流程(如图3所示),即管理工具自动下发扫描任务到静态扫描工具,扫描完成后触发人工智能大模型审计,完成审计后在静态代码扫描工具中进行缺陷的标注,随后将标记的缺陷导入安全测试项目管理工具,最终由安全审查人员通过安全测试管理工具查看结果。

图3 人工智能大模型代码安全审查工作流程

3

实践效果评估

经过安全团队的实际应用,人工智能大模型在代码安全审查中表现良好。

在初步排查代码漏洞误报方面,人工智能大模型能够自主识别并排除40%~50%的误报问题,这一比例明显高于传统静态扫描工具单独使用时所能取得的成效。在代码审查的初期阶段,大模型成功过滤了大量不必要的干扰信息,为后续的人工审计工作打下了坚实的基础。

在人工审计环节,代码审查人员可以充分利用人工智能大模型的初步审查结果,结合大模型提供的详细解答和自身对代码漏洞分析的技能,对剩余的代码漏洞进行更为精准和高效的二次审计。这种模式不仅使得审计过程更加完善,还显著降低了人工审查的工作量。据初步估算,与传统审查方式相比,新流程下的人工工作量预计将减少30%~40%。

此外,人工智能大模型的应用不仅提升了安全人员的工作效能,还深化了其对代码漏洞的理解,并促进了个人专业技能的提升。同时,当代码安全审计人员发现大模型的回答存在错误时,这些错误案例可以被精准地整理出来,并反馈给人工智能大模型,为其提供有针对性的学习训练数据,从而进一步提升模型的性能。

三、未来展望

可以看到,随着人工智能技术的不断发展,人工智能大模型在代码安全审查方面具有广阔的应用前景和巨大的发展潜力,但就目前而言,其应用还存在一些局限性。为了进一步提升人工智能大模型在代码安全审查中的性能,未来的研究可以从以下几个方面着手。

一是增强模型理解能力。为提高漏洞检测的准确性和全面性,大模型需要更深入地理解代码的语义和逻辑结构,通过有针对性的投喂大量代码数据对其进行训练,可显著提升大模型对代码漏洞的理解力,进而降低误报率。

二是开发人工智能代码漏洞修复方案。在当前的软件开发实践中,传统代码扫描工具提供的修复建议往往缺乏针对性,未能充分考虑具体代码上下文和漏洞类型,导致其在实际应用中的可采纳度较低,开发人员往往需要额外投入时间和精力对修复建议进行二次开发或重新编写。为此,安全团队计划进一步深化人工智能在代码漏洞修复领域的应用,通过利用大模型的深度学习与理解能力,生成更加精准、贴合实际代码情境的修复方案,从而减少开发人员手动修复的工作量与时间成本,缩短软件迭代周期,提升整体软件交付效率与质量。

三是嵌入DevOps流水线。当前,代码静态安全扫描大多通过DevOps流水线在开发阶段自动化完成,并借助质量门禁进行代码安全管控。然而,较高的误报率会使其在实际落地过程中难以满足敏捷快速迭代的代码安全强管控需求。为此,安全团队考虑将人工智能大模型的辅助审计引入DevOps流水线,以显著降低误报率,提高质量门禁管控的落地效果,更好地适应敏捷开发模式下的代码安全需求。

 

 如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。


1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值