大模型生成代码的安全与质量
最近,开源中国 OSCHINA、Gitee 与 Gitee AI 联合发布了《2024 中国开源开发者报告》。报告聚焦 AI 大模型领域,对过去一年的技术演进动态、技术趋势、以及开源开发者生态数据进行多方位的总结和梳理。查看完整报告:2024 中国开源开发者报告.pdf
在第二章《TOP 101-2024 大模型观点》中,蚂蚁集团程序分析团队技术专家,香港科技大学博士谢筱恒探讨了大模型生成代码的安全性与质量问题,并分析相关技术手段与未来发展方向。全文如下。
大模型生成代码的安全与质量
文/谢筱恒
随着人工智能技术的快速发展,基于大型预训练模型的代码生成工具,如OpenAI的Codex和GitHub的Copilot,已成为开发者的重要助手,能显著地提升开发者的开发效率。
然而,这些工具在带来便利的同时,也带来了代码安全性和质量的新挑战。根据IDC数据,82%的开发者已使用带有智能代码生成功能的工具,而这些开发者中的71%表示其超过40%的代码由这些工具生成。
GitClear研究检查了2020年1月至2023年12月间最初编写的1.53亿行代码,在AI辅助编程用户激增期间,代码翻转(即需在两周内修复或恢复的代码)情况明显增加,这也表明代码稳定性在下降。
同时,Snyk的调查显示,超半数组织“偶尔”或“频繁”地遭遇了因低质量AI生成代码引发的安全问题。
本文将探讨大模型生成代码的安全性与质量问题,并分析相关技术手段与未来发展方向。
大模型生成代码的常见安全和质量问题
大模型基于Transformer架构,经过大规模代码数据集的预训练,能够理解并生成符合上下文逻辑的代码。然而,这些模型并不具备真正的编程理解能力,而是通过学习大量代码样本中的模式进行生成。因此,生成的代码可能存在如下的安全和质量问题。
代码质量不稳定。大模型生成的代码有时存在语法错误、逻辑问题或无法通过测试的情况。例如,生成的代码可能缺少必要的语法元素(如括号、分号)而无法编译,或在运行时因逻辑错误导致意外行为。此外,许多生成的代码在功能测试中无法通过,增加开发者的修复工作量,降低了效率。
缺乏上下文理解。大模型通常基于输入的表面模式生成代码,缺乏对业务逻辑和系统架构的深度理解。这导致生成的代码可能不符合项目的整体编码规范,无法正确调用已有模块或接口,甚至与现有功能重复。在复杂项目中,这种缺乏上下文的生成方式使代码的直接可用性较低,开发者需要投入额外精力进行适配和修改。
安全隐患。生成代码在处理用户输入、文件操作和网络请求等敏感操作时,容易忽略安全性,导致潜在漏洞。例如,未对用户输入进行验证可能引发SQL注入或XSS攻击,文件路径处理不当可能导致目录遍历或未授权的文件读写,网络请求中未正确加密数据可能导致信息泄露。这些问题增加了代码在生产环境中的风险,可能被恶意利用。
法律和版权问题。大模型生成的代码可能基于公开代码库或开源项目,而这些代码可能受到版权保护,存在侵权风险。例如,生成的代码可能直接复制开源代码片段,未遵守相关开源协议,或与受版权保护的代码高度相似,从而引发法律争议。这可能导致开发者或组织面临知识产权诉讼及相关损失。
影响大模型生成代码质量的因素
模型训练数据的质量。大模型的代码生成能力极大程度依赖于训练数据的质量。如果模型训练时使用的数据集包含不良的代码模式、不规范的编码风格或者过时的技术,生成的代码往往会继承这些问题,导致质量较差。例如,模型可能生成带有潜在安全漏洞的代码(如未验证用户输入的SQL查询),或使用已经被淘汰的技术框架和方法(如不安全的加密算法)。此外,训练数据中若缺少高质量的代码示例,生成结果可能在可维护性、性能和测试性方面表现不佳。
上下文理解的局限性。大模型的代码生成通常基于短期上下文(如用户输入的一段描述或代码片段),缺乏对整体系统架构和长期上下文的理解。这种局限性使得其在复杂项目中难以生成高质量的代码。例如,在大型软件项目中,模型可能忽略全局变量的依赖关系、模块间的交互逻辑或编码规范,导致生成的代码无法融入现有的系统环境。此外,模型难以理解业务需求背后的深层逻辑,可能生成表面上正确但实际不可用的代码,从而给开发者带来额外的修改和调试工作。
缺乏调试能力。与人类开发者不同,大模型无法主动调试或验证自己生成的代码,因而可能生成带有隐藏逻辑错误的代码,而这些错误往往难以快速定位和修复。例如,生成的代码可能在边界条件下表现异常,或者因函数调用错误导致运行时崩溃。这种缺乏调试能力的特性,使得开发者需要手动排查生成代码的潜在问题,增加了工作负担。此外,生成代码可能未遵循最佳实践(如缺乏注释或测试用例),进一步加大了调试难度。
如何保障大模型生成代码的安全与质量
为提升大模型生成代码的安全性与质量,业界与学术界提出了多种解决方案,涵盖工具研发、模型改进和技术研究等多个方面。
生成代码的安全性验证与质量评估。工业界已开发了多种代码分析工具,如Black Duck和AWS提供的服务,能够帮助开发者检测并修复AI生成代码中的安全漏洞。工具如CodeQL和CodeFuse-Query支持通过自定义查询快速定位安全隐患,并以高性能的语法和语义分析能力提供实时反馈。这些工具不仅速度快,还支持定制化查询,并能无缝集成到开发环境和持续集成工具链中,自动化地检查和优化生成代码的安全性与质量。此外,研究者也在探索通过形式化验证、符号执行等技术对生成代码进行安全审查,并利用AI自动评估代码质量,特别是关注可维护性和性能等指标。
结合安全编码实践的生成模型。将常见的安全编码准则融入大模型的训练中,是提升生成代码安全性和可靠性的关键。例如,通过在模型训练数据中引入安全编码示例,增强模型在处理用户输入、文件操作、网络请求等场景下的安全性。同时,近年来的研究还表明,结合大模型的程序语义理解能力,通过提示工程技术,可以引导模型输出更高质量的代码分析结果,如检测源代码中的潜在漏洞。这类研究不仅提升了大模型的代码分析能力,也为开发者提供了新的技术手段。
自动调试与修复功能的集成。开发集成自动调试与修复功能的代码生成工具,是保障代码质量的重要方向。这些工具可以在代码生成后,自动检测并修复潜在错误,减少开发者手动修复的负担。例如,CodeFuse的编译诊断修复Agent可以基于代码分析发现质量和安全问题,然后基于预设规则或模型预测直接修复漏洞,从而提高代码的稳定性和可用性。
多模态模型的应用与上下文理解。未来的代码生成模型可能结合代码、自然语言和图像等多模态信息,进一步提高生成代码的准确性和上下文理解能力。例如,通过结合项目文档、架构设计图和代码片段,模型可以更全面地理解开发环境,从而生成更符合业务逻辑或系统架构的代码。
可解释性与审计功能的增强。提升代码生成模型的可解释性与透明性是增强信任度的核心方向。例如,通过提供审计机制,开发者可以追溯生成代码的来源并了解模型的决策过程。这不仅有助于发现潜在问题,还能帮助开发者更高效地验证代码的安全性和质量。
结语
大模型生成代码在提高开发效率、降低编程门槛等方面展现出了巨大的潜力。然而,代码的安全性与质量问题仍然是亟待解决的挑战。通过结合静态分析、强化学习、模型优化等技术手段,可以在一定程度上提升生成代码的安全性和质量。
未来的研究应聚焦于模型的可解释性、安全性优化、多模态融合等方向,以充分发挥大模型在代码生成领域的优势。同时,开发者在使用大模型生成代码时,应保持审慎态度,结合自身专业知识,对生成的代码进行仔细的审查和测试,确保代码的可靠性和安全性。
作者简介:
谢筱恒
蚂蚁集团程序分析团队技术专家,香港科技大学博士。蚂蚁程序分析团队致力于打造蚂蚁的先进、专业、普惠的程序分析系统,过去四年团队发表30+篇国际顶会论文,技术能力广泛应用于变更影响评估、安全风险检测、代码自动修复、构建程序知识图谱以及智能问答系统等多个方面。在智能研发时代,我们正在全力推进软件工程和AI智能结合的技术演进,努力帮蚂蚁打造软件工程3.0时代的研发新范式。
《2024 中国开源开发者报告》由开源中国 OSCHINA、Gitee 与 Gitee AI 联合出品,聚焦 AI 大模型领域,对过去一年的技术演进动态、技术趋势、以及开源开发者生态数据进行多方位的总结和梳理。
报告整体分为三章:
- 中国开源开发者生态数据
- TOP 101-2024 大模型观点
- 国产 GenAI 生态高亮瞬间
查看完整报告,请点击 :2024 中国开源开发者报告.pd

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
人工智能与处理器芯片架构
最近,开源中国 OSCHINA、Gitee 与 Gitee AI联合发布了《2024 中国开源开发者报告》。报告聚焦 AI 大模型领域,对过去一年的技术演进动态、技术趋势、以及开源开发者生态数据进行多方位的总结和梳理。查看完整报告:2024 中国开源开发者报告.pdf 在第二章《TOP 101-2024 大模型观点》中,中国科学院计算技术研究所副所长包云岗谈到了人工智能与处理器芯片架构是如何相互影响进而发展的。全文如下。 人工智能与处理器芯片架构 文/包云岗 一、引言 芯片有几十种大类,上千种小类,本文主要关注处理器芯片。这类芯片的特点是需要运行软件,例如:微控制处理器(MCU)会运行实时操作系统或者直接运行某个特定程序;中央处理器(CPU)往往会运行Windows、Linux等复杂操作系统作为底座支撑整个软件栈;图形处理器(GPU)一般不加载操作系统而是直接运行图形图像处理程序,神经网络处理器(NPU)则直接运行深度学习相关程序。 处理器芯片设计是一项很复杂的任务,整个过程犹如一座冰山。冰山水面上是用户或者大众看到的处理器芯片架构,呈现为一组微架构核心参数,比如8核、8发射乱序执行、...
- 下一篇
TiDB x DeepSeek 打造更好用的国产知识库问答系统解决方案
前言 过去两年,GenAI(生成式人工智能)的落地应用一直是行业热点话题,而 RAG (检索增强生成,Retrieval-Augmented Generation)更是每每谈及的关键技术。各大数据库厂商纷纷积极探索数据库内实现或集成向量功能,或者打造一款向量数据库,并将向量数据库与 AI 大语言模型 LLM 相结合,推出创新的 RAG 解决方案。 或许有人会说,当更好的大模型出现时,向量数据库就有些鸡肋了,非也。简单的说,LLM 是属鱼的,大语言模型能够存储的信息有限,需要向量数据库帮助持久化记忆,而且大语言模型占用的计算资源和存储资源在现阶段还非常昂贵,需要一个外置“大脑”来持久化存储语料,向量数据库就是这个“大脑”的不二之选。此外,鉴于信息安全及合规要求,许多 RAG 应用需要进行私有化部署。以知识库问答系统为例,我们需要将大量内部文档导入到系统中,并且还会不断"投喂"新的资料,而这些内容都将转化为向量数据存储到数据库中。RAG 的内容输入格式不应仅局限于 Markdown 或 PDF,以后还将支持图片、音视频等形式。随着向量数据库相关技术发展,其向量搜索能力和向量数据库的性能将得...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8