调查:AI写的代码比“手工代码”安全性差很多

安全侠2024-01-20 17:33:59

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



类似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上的不安全代码进行模型训练。开发者需要对这些输入(开源代码)运行静态分析工具,仅使用通过安全检查的输入(代码)进行训练,以及设计更聪明的方法,利用库文档和“专家”代码示例在训练前重新加权整个数据集,可以显著提高数据的安全性。


结论


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


参考链接:


https://arxiv.org/html/2211.03622v3

人工智能写代码
本作品采用《CC 协议》,转载必须注明作者和本文链接
近日,程序员兼律师Matthew Butterick起诉微软、GitHub和OpenAI,指控GitHub的人工智能开发辅助工具Copilot违反了开源许可条款,窃取开发人员成果,并向微软索赔90亿美元。虽然Copilot可以加快编写代码的过程并简化软件开发,但它对公共开源代码的使用让专家担心它违反了软件许可归属和限制。
斯坦福大学的一项研究发现,使用人工智能助手编写的代码比“手工代码”的安全性差很多,而且人工智能工具还会导致用户对其代码中的安全性过于自信。
ChatGPT可以是百度谷歌、可以是家教、可以是秘书助理……,无论是作业、论文、报告、商业文案,还是代码、修Bug,ChatGPT似乎无所不能。
最近这个ChatGPT人工智能是真火啊,身边的小伙伴都注册开始调戏了。通常情况下,我们编写的程序在开发过程中,可执行文件中保留了很多符号信息,包括数据结构名称、变量名、函数名、参数名等等,通过IDA反编译后是能看到这些名字的。不过没关系,现在有人用ChatGPT做了一个插件,一键帮你解读反编译的代码,还会用注释告诉你这段代码是在干嘛,简直不要太爽:某社交平台评论区一位网友的评论让人破防了:
近日,OpenAI紧急发布了一个AI文本检查工具,能够检测输入内容是否是使用ChatGPT等人工智能工具生成的。
ChatGPT掀起的人工智能热潮仍在继续,伴随着全新的AI技术如何颠覆各大行业大讨论的同时,也有担忧的声音:如何确保高新技术能够安全地用在“正道”?
为了得到更好的数据分析结果,需要对这些数据集进行数据清洗和停用词过滤等操作,这里利用Jieba库进行清洗数据。向量空间模型是用向量来表征一个文本,它将中文文本转化为数值特征。贵州省位于中国的西南地区,简称“黔”或“贵”。
脚本的一部分使用椭圆曲线加密和曲线ed25519生成密钥,用于对文件进行签名。第一个是用于漏洞利用后进行信息窃取的Python脚本。研究人员用ChatGPT开发完整感染链上周五的报告是在Check Point研究人员尝试开发具有完整感染流的AI生成的恶意软件两个月后发布的。虽然ChatGPT条款禁止将其用于非法或恶意目的,但研究人员毫不费力地调整了他们的请求成功绕过这些限制。
才发布3天,GPT-4就被曝计划逃跑,并且急寻人类帮助。结果发现,2020年发表的模型几乎没有显示出能解决ToM任务的能力。GPT-4诱导人类帮助其越狱这件事一出,就再度引发网友的热议,相关博文有470浏览量。第三阶段,夺取控制权。并进一步通过内部访问权限控制马斯克的账户,或者复刻一个假的马斯克账号,进一步抹黑他。最后推特将落入邪恶主谋的黑暗统治下。
安全侠
暂无描述