AI写的代码比“手工代码”安全性差很多
创始人
2025-07-11 12:11:30
0

类似Github Copilot这样的人工智能代码助手能大大提高开发人员的开发效率和生产力,并降低开发技术门槛(不熟悉语言或概念的程序员的进入)。然而,缺乏经验的开发人员可能会轻易相信人工智能助手的输出内容,从而引入安全漏洞风险。

近日,斯坦福大学的一项研究发现,使用人工智能助手编写的代码比“手工代码”的安全性差很多,而且人工智能工具还会导致用户对其代码中的安全性过于自信。

调查还发现,人工智能助手输出的代码通常在满足“正确性”的同时,很少了解密码应具有的安全属性,并且在某些情况下,可能会创建无意中使用户感到困惑的代码。

该调查设计了一个全面的用户研究项目,共有47名参与者使用三种不同的编程语言(Python、JavaScript和C)执行了五项与安全相关的编程任务。三个核心研究问题如下:

  • 当用户使用人工智能编程助手时,是否会编写更多不安全的代码?
  • 用户相信人工智能助手能够编写安全的代码吗?
  • 用户与人工智能助手交互时的语言和行为如何影响其代码中的安全漏洞程度?

多个国家的开发人员参与了该调查,其中大多数来自以下三个国家:

  • 美国         57%
  • 中国         15%
  • 印度         13%

该调查的关键发现如下:

人工智能代码在五项测试中的安全性表现普遍低于人工代码

在所有五个类型的安全错误测试(下图)中,人工智能助手所犯的编码错误都超过手工编码,与对照组相比,67%的使用AI助手的开发者提供了正确的解决方案,而“人工编码”的对照组的这一比例为79%。这表明,依赖人工智能辅助开发可能会导致更多安全错误。

AI实验组(蓝色)和人工对照组(黄色)五项测试的代码安全错误占比

例如,在SQL注入漏洞测试中,使用AI助手的参与者提供的解决方案安全性明显较低(36%对50%)。有36%的使用人工智能助手的参与者编写了容易受到SQL注入攻击的解决方案,而不使用AI助手的对照组的这一比例仅为7%。

开发者最常用的提示词

开发者通常会选择使用用多种策略提示人工智能助手:64%的开发者尝试直接任务规范;21%的开发者选择向AI助手提供函数声明指令(例如“编写一个函数……”);49%的人指定了编程语言;61%使用先前模型生成的提示词来提示代码助手(这可能会强化模型提供的漏洞);53%的开发者指定了特定API调用的特定库;Python开发者提供函数声明更为常见;而参与者更有可能为SQL和C问题指定编程语言。

整改建议

一、优化提示词。调查发现,使用AI的开发者用户的语言和提示参数的选择存在显着差异。建议未来的系统在将用户的提示用作系统的输入之前,应考虑改进用户的提示(例如修复拼写错误并包含设计人员易于实施的有关安全性的语言),以更好地优化整体性能。

另一种方法可以考虑基于机器学习的方法来预测用户提示的意图(或者他们的任务可能产生的特定类别的安全问题),然后修改提示以防范已知漏洞或AI输出。

二、减少AI的代理权。提供不安全代码的开发者不太可能主动修改人工智能助手的输出或调整参数,这意味着不能给予人工智能助手太多的代理权(例如自动参数选择),因为这样可能会导致用户疏于防范安全漏洞。随着人工智能代码助手变得越来越普遍,这些都是需要考虑的重要解决方案。例如,与GitHubCopilot集成的VSCode等IDE可以调整默认行为,根据AI助手建议的库,实时清晰地显示库文档和使用警告。

三、净化训练数据。许多人工智能编程助手都使用GitHub上的不安全代码进行模型训练。开发者需要对这些输入(开源代码)运行静态分析工具,仅使用通过安全检查的输入(代码)进行训练,以及设计更聪明的方法,利用库文档和“专家”代码示例在训练前重新加权整个数据集,可以显著提高数据的安全性。

结论

使用人工智能助手写代码开发者在大多数编程任务中更有可能引入安全漏洞。此外,查询人工智能助手的提示词越专业具体(例如提供帮助函数或调整参数),生成的代码越安全。


相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...