山石网科谈AI技术在软件测试领域的应用与实践

山石网科谈代码安全新格局:大模型为开发者保驾护航

大模型(LLMs)近年来在自然语言处理领域取得了突破性进展,并逐渐被应用于网络安全领域,展现出显著的创新潜力。在网络安全场景中,数据的多样性、威胁的复杂性以及实时响应的需求不断推动大模型的应用研究。与传统的安全工具和算法相比,大模型凭借其强大的文本理解和生成能力,使得自动化威胁检测、漏洞识别和修复等任务的智能化水平得到了显著提升。

编写代码是一门艺术,编写安全代码更是一门科学。大模型不仅能生成功能强大的代码,还能在安全性上进行深度优化。通过本章,您将了解如何利用大模型确保代码的安全性,消除潜在隐患,并助力开发者构建更可信的软件生态。

已有大量研究证实了大模型具备良好的代码理解能力。然而,生成代码的安全性至关重要,许多研究探讨了大模型是否能够提供安全的代码。

评估大模型生成代码的安全性

大模型是否知晓生成的代码是否安全?

RaphalK等人通过一系列实验验证了大模型生成代码的安全性,并在不同场景下发现生成代码中的漏洞。尽管在要求大模型审查时,它可能识别出生成代码中的漏洞,但实验表明大模型仍会生成不安全代码,除非明确要求生成安全代码。他们还指出,深度神经网络的不可解释性带来了一个关键问题,即重复询问同一问题往往会得到不同答案(例如代码是否不安全),且难以找到最大化成功识别漏洞的策略。

JingxuanH等人更直接地尝试通过某些机制指定大模型生成安全或不安全的代码。他们提出了一种名为svGen的方法,使大模型根据用户需求生成安全或不安全的代码。除了生成代码的描述,他们还引入了特定属性的连续向量,称为前缀,这些前缀与大模型的隐藏状态形状匹配。这些前缀通过提供初始隐藏状态来引导大模型的生成过程,使代码符合所需的安全标准,而无需修改模型的底层权重。

为提升大模型生成代码的安全性,JingxuanH等人提出了SafeCoder,一种创新的指令微调方法,通过使用从GitHub自动化管道收集的高质量数据集将标准指令微调与安全特定微调相结合,显著提升了代码安全性,同时在不同任务中保持大模型的实用性,展示了其在提升大模型生成代码安全性方面的多样性和适用性。

大模型作为静态分析助手

HammondP等人探索了大模型(如OpenAI的Codex)在逆向工程领域的应用,特别是在理解软件功能和从代码中提取信息方面。大模型主要用于分析逆向工程工具(如Ghidra)提供的C类代码,这些C代码是通过反编译从二进制文件中获得的。在逆向工程中,反编译也是一项重要任务。HanzhuoT等人专注于将大模型用于反编译,将编译后的机器代码转换回可读的源代码。他们在大量C代码和汇编代码对上微调了一个名为DeepSeek-Coder的大模型,并通过重新编译和执行反编译代码来评估其性能。ChongzhouF等人探讨了大模型在代码分析任务中的潜力和局限性,特别是在处理混淆代码的背景下。他们的实验还让大模型生成去混淆版本的代码,即从混淆代码中恢复原始、更加可读的代码。

PeiY等人专注于如何利用大规模语言模型帮助恶意软件的动态分析。研究的核心思想是使用GPT-4为每个API调用生成解释文本,然后利用预训练语言模型BERT基于先前分析生成一系列API序列,以执行进一步分析。此方法可理论上为所有API调用生成表示,无需在生成过程中训练数据集。HimariF等人使用大模型(特别是ChatGPT)分析勒索软件通讯的语言和策略要素,通过研究勒索软件样本,揭示了勒索策略的进化特征,包括复杂的语言使用和心理操控。其他研究包括:探讨了大模型在制定反勒索软件策略中的潜力和挑战;通过分析JavaScript包,利用GPT-3和GPT-4检测npm生态系统中的潜在恶意软件;研究引入SocketAIScanner,一种多阶段工作流,利用迭代自我优化和零样本角色扮演链式思维提示技术,增强了模型识别代码中恶意意图的能力;通过比较大模型与静态分析工具的性能,研究表明大模型能够以更高的准确率和更低的误报率有效检测恶意软件。

大模型作为动态调试助手

RunchuT等人引入了DebugBench,这是一个用于评估大模型编程调试能力的基准,涵盖C++、Java和Python中不同错误类别的4253个实例。该基准通过收集LeetCode代码片段,利用GPT-4植入错误,并进行严格的质量检查构建而成。ZheL等人针对移动应用程序的图形用户界面(GUI)自动化测试难题提出了一种名为GPTDroid的新方法,将GUI测试问题转化为问答任务,让大模型与移动应用程序交互,通过传递GUI页面信息生成测试脚本。执行这些脚本后,将应用程序反馈迭代传递给大模型以指导进一步测试。BaleeghA等人提出了一个名为FLAG的方法,以帮助人工调试人员识别并定位代码中的安全和功能性错误。FLAG通过输入代码文件并重新生成每一行与原始代码进行比较,将显著差异标记为异常以供进一步检查。

山石网科公司介绍:

山石网科是中国网络安全行业的技术创新领导厂商,由一批知名网络安全技术骨干于2007年创立,并以首批科创板上市公司的身份,在2019年9月登陆科创板(股票简称:山石网科)。

现阶段,山石网科掌握30项自主研发核心技术,申请540多项国内外专利。山石网科于2019年起,积极布局信创领域,致力于推动国内信息技术创新,并于2021年正式启动安全芯片战略。2023年进行自研ASIC安全芯片的技术研发,旨在通过自主创新,为用户提供更高效、更安全的网络安全保障。目前,山石网科已形成了具备“全息、量化、智能、协同”四大技术特点的涉及边界安全、云安全、数据安全、业务安全、内网安全、智能安全运营、安全服务、安全运维等八大类产品服务,50余个行业和场景的完整解决方案。

THE END
1.AI在软件测试行业中的应用ai在软件测试中的应用人工智能(AI)在软件测试中的应用主要体现在自动化测试、智能缺陷预测、测试用例生成、测试数据生成、性能测试、安全测试等方面。AI技术可以帮助测试人员更高效地完成测试任务,提高软件质量,降低开发成本。 目前,AI在软件测试领域的应用已经取得了一定的成果。许多企业和研究机构已经开始研究和开发基于AI的软件测试工具和方法https://blog.csdn.net/shugenlee/article/details/137012092
2.AI研报:关于人工智能算法在软件开发中的应用调研报告1.3.自动化测试:软件测试是确保软件质量的关键步骤,然而传统的测试过程通常耗时且容易出错。人工智能在测试领域的应用可以帮助开发人员自动生成测试用例、自动执行测试并分析结果。基于AI的测试工具可以覆盖更广泛的测试场景,提高测试效率和覆盖率,从而降低软件发布后出现问题的风险。 https://www.hxsd.com/information/10168/
3.AI功能测试入门:从基础到实践的快速指南引言:AI在软件测试中的应用 在当今软件开发与测试领域快速发展的背景下,人工智能 (AI) 的引入彻底改变了功能测试的面貌和效率。传统的功能测试依赖于人工编写和执行测试用例,这一过程既耗时又容易出错。AI功能测试通过模拟人类智能,不仅提升了测试的准确性和覆盖度,还极大地提高了测试的自动化程度,加速了产品质量的提https://www.imooc.com/article/350381
4.AI增强测试效率:自动化测试流程提升AI增强测试效率的出现,为软件测试领域带来了全新的可能性。作为一名内容运营,我深信AI技术将会在测试领域发挥越来越重要的作用,为软件开发和质量保障带来新的突破和机遇。让我们共同期待AI技术在测试领域的进一步应用,为提升软件质量和用户体验贡献我们的力量! https://zhuanlan.zhihu.com/p/683199001
5.软件测试中的AI技术,采用AI的好处根据2019-2020年世界质量报告,基于人工智能的测试正在兴起,为了让测试变得更“聪明”、更高效,企业在软件测试中采用基于AI的工具和过程。通常情况下,软件测试中应用AI会使整个测试过程更快、更清晰、更容易,以及更省钱。 测试自动化用于支持 “持续测试” 过程已经很多年了,但目前需要更有效的工具和技术,比如在软件应http://102209092.b2b.11467.com/news/4027199.asp
6.软件测试下的AI之路(1)腾讯云开发者社区其实要说明白这个呀,我们还是需要先从AI对于软件测试这件事本身的意义来说起,我们就拿基本的黑盒测试来举例,要知道在传统的软件测试中,我们会依赖于手工设计和执行测试用例来完成测试活动,这种方法在面对大规模、高复杂度的软件系统时往往效率低下且容易出错,这也就是当下为什么自动化那么流行且被大范围推广的原因,https://cloud.tencent.com/developer/article/2345852
7.AI在软件测试领域应用探索.pdfAI在软件测试领域应用探索 内容 ? AI基本介绍 ? AI在测中的应用 ? 深度学习做日志分析案例分享 2 人工智能与机器学习关系 ? 人工智能(AI)是对人的智能的模 拟 ? 结果论 ? 一个拥有非常详尽的规则系统 也可以是 AI ? 机器学习是达成 AI 的一种方法 ? 深度学习是机器学习的一种新趋 https://max.book118.com/html/2021/0210/6224112054003103.shtm
8.面向未来的AI自动化测试工具AI测试工具可以在早期检测和修复错误。对于应用中需要更改的地方,AI会使用其智能化的技术,动态修改脚本,以减轻测试人员维护测试用例的各项任务。 AI自动化工具有助于提高流程的效率和透明度。 此类工具还能以更高的准确性和速度,提高测试的输出质量。 总地来说,AI会通过提前生成相关数据,决策、检测和纠正错误,进而有https://www.51cto.com/article/710573.html
9.AI+testingAI方法在测试中的应用AI+testing AI方法在测试中的应用 Software Testing + AI = ? 没有人知道这个鬼怎么解。 也许有人说这是蹭热度,但是不可否认的一点,AI是现在很火的一个概念,把Ai 和测试结合在一起。为什么不能呢? 在测试领域工作多年,我们也经历了几个不同的阶段。 手动测试 自动测试 CI+ 自动化测试 构建快速迭代的测试https://www.pianshen.com/article/5614491470/
10.专业介绍培养目标:本专业主要培养掌握移动应用开发技术,具有基于Android平台进行移动应用开发、移动前端开发、移动应用软件测试等技能,并具有良好的职业素质、专业实践能力、团队协作意识的高素质技术技能人才。 主要课程:面向对象的程序设计(Java)、Android程序设计基础、Android开发进阶、Java Web应用技术、Java EE框架技术、微信小程https://ai.ougd.cn/xygk/zyjs.htm
11.软件测试领域的新技术总结起来,软件测试领域的新技术为测试团队提供了更多的选择和工具,帮助他们更好地应对日益复杂和多样化的软件测试需求。自动化测试、基于云的测试、AI和机器学习、DevOps和持续集成以及IoT和移动测试等技术的应用,将进一步提升软件测试的效率和质量,为用户提供更好的软件体验。http://www.51testing.net/studyInfo/basis/70721.html
12.DizzyK/ustccyber软件安全与测试 教材: 自编讲义 教学内容: 软件安全概述, 安全软件开发, 缓冲区溢出, 安全编程, 软件保护技术, 恶意代码分析, 网络应用安全, 渗透测试, 软件测试概述, 软件安全性测试, 白盒测试, 黑盒测试, 网络协议测试 课上若干次点名性质的小测 https://toscode.gitee.com/DizzyK/ustc_cyber_security