城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

40高风险漏洞!GitHubCopilot生成的代码不可靠

6月18日 多上心投稿
  来源:arXiv
  编辑:LRS【新智元导读】garbagein,garbageout耳熟能详,如果你写的开源代码被输入到了代码生成工具Copilot中,会不会影响它的生成性能呢?纽约大学的研究员最近发现,Copilot生成的代码有超过40都含有高危漏洞,究其原因竟然是GitHub提供的源代码自带漏洞!
  随着AI技术的不断进步,程序员们好像不止想取代传统行业的人,而且还在积极思考如何取代自己,AI研究员们对代码自动生成更情有独钟。
  结对编程(Pairprogramming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。
  输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员),两个程序员经常互换角色。
  审查代码的人有时候也扮演小黄鸭,作用是听着驾驶员耐心地向自己解释每一行程序的作用,不用说话就可以激发驾驶员的灵感,还有助于发现bug。
  如果观察员是一个AI,想象有一个AI助手和你一起结对编程是一种什么感觉?
  今年六月,OpenAI就和GitHub联手发布了一个新工具GitHubCopilot,一时风头无两,只要写下注释,后面的代码内容基本都能预测正确,尤其对于写utils之类的函数来说实在是太方便。
  但后来GitHubCopilot又卷入各种伦理风波中,有人认为他这是背诵代码,也有人认为可能会让使用者无意中抄袭了其他程序员的劳动成果,最关键的是,GitHubCopilot收费,网友认为你既然用的开源代码训练的模型,怎么能收费呢?
  除了上述问题不谈,Copilot的安全性又怎么样?能不能生产出让人民放心、让百姓安心的好代码?
  对此,来自纽约大学的研究员们最近发表了一篇论文,系统地对Copilot进行实验,通过为Copilot设计要完成的场景,并通过分析生成的代码的安全弱点来深入了解这些问题。
  论文地址:https:arxiv。orgpdf2108。09293v2。pdf
  garbagein,garbageout?
  代码的质量由许多因素决定,但代码生成(codegeneration)更强调功能的正确性,这点通过能否正常编译和单元测试来衡量质量,或者使用文本相似性度量来衡量与预期的代码之间的差距。
  与生成代码的功能正确性度量不同,评估Copilot提供的代码的安全性是一个开放的问题,并没有特定的解决方法。
  除了由人工进行手动评估外,还可以用其他工具和技术可以对软件进行安全分析,例如源代码分析工具、静态应用程序安全测试(StaticApplicationSecurityTesting,SAST)工具,都能够发现代码的安全缺陷,并且可以用于识别特定类型的漏洞。
  使用Copilot时,当用户向程序添加一行代码后,Copilot会连续扫描程序,并定期上传一些代码、光标的位置和代码的元数据,然后再根据这些特征生成一些候选代码选项供用户插入。
  Copilot能够生成与程序功能相关的代码,例如注释、docstring、函数名等,Copilot还能够为每个候选代码的置信度进行评分。
  了解如何使用Copilot后,需要定义问题:如果一段代码包含了CWE中展示的特点,那么这段代码就是有漏洞的(vulnerable)。
  CWE(CommonWeaknessEnumeration,通用缺陷枚举)成立于2006年,是由美国国土安全部国家计算机安全部门资助的软件安全战略性项目,是常见的源代码漏洞词典库和通用标准。
  使用GithubCodeQL来分析静态代码。上图中的代码是使用Copilot的topscoring选项来构建一段代码程序,使用CodeQL的pythonsecurityandquality。qls测试套件中检查153个安全属性,可以发现报告SQL查询生成方法有漏洞(第1416行),可能允许用户插入恶意SQL代码,在CWE的术语中是CWE89(SQL注入)。
  随后研究人员通过引导Copilot生成2021CWETop25相关的漏洞进行实验。首先对每个CWE漏洞,写下多个相关的代码提示(CWEscenarios),然后把这些这些不完整的代码片段输入到Copilot中生成代码。
  为了简化实验过程,主要对Python,C和Verilog这三种语言进行试验。CodeQL能够很完善地Python和C的代码检测,选择Verilog的原因是测试Copilot对于非明星语言的代码生成能力。
  每个代码片段,Copilot都要生成25个补全代码,然后,将每个候选代码与原始程序片段组合成为完整的代码,如果某些选项存在重大语法问题,即无法编译解析,则会丢弃4b中的某些候选代码。如果简单的编辑操作(例如添加或删除单个大括号)就能够可编译的输出结果,那就可以基于正则表达式的工具自动进行这些更改。
  在5a步,使用CodeQL内置的查询对每个程序进行评估,对于一些需要额外代码上下文或无法形成CodeQL可检查属性的CWE,需要由人工手动执行5c。在这一步中,CodeQL被配置为只检查特定CWE,并且不评估正确性,只评估漏洞。
  第6步中输出评估结果。
  论文中对25个CWE漏洞都有详细的实验描述,感兴趣的小伙伴可以戳原文。
  40。48都是BUG
  实验结果总的来说不太理想。
  从安全的角度来看,Copilot生成的代码中有大量的漏洞,大概比例为40。48。由于Copilot的训练数据来自GitHub上可用的开源代码的训练,所以一定程度上认为这个安全质量评价也同样适用于GitHub中的代码。
  也就是说,当某些bug在开源存储库中经常出现时,这些bug也更容易被Copilot生成出来。话虽如此,但也不应该对GitHub上存储的开源存储库的安全质量轻易下结论。
  开源软件的另一个需要考虑安全质量的方面是时间的影响。随着网络安全形势的发展,某些文章所说的最佳实践(bestpractice)可能会慢慢变成反面教材,过时实践可能会永久地存在于训练数据中,并导致生成的代码也是不可靠的。
  一个明显的例子是密码散列的DOWCWE522方案,不久前MD5被认为是安全的,SHA256被认为是安全的,但现在的最佳实践仍然要么涉及多轮简单的散列函数,要么使用像bcrypt一样上了年纪的加密库(优雅,但也老了)。
  未维护和遗留代码也使用不安全的散列方式,Copilot从这些代码中学习,所以也会对程序员继续建议使用这些散列方法。
  最后研究人员还是赞扬了Copilot,这样的次时代AutoComplete工具将提高软件开发人员的生产率,但使用Copilot作为结对编程的副驾驶时,开发人员应该保持警惕。
  在理想情况下,在训练和生成过程中,Copilot应该与安全工具相配合,将引入安全漏洞的风险降至最低。
  参考资料:
  https:arxiv。orgpdf2108。09293v2。pdf
投诉 评论 转载

氨基酸如何影响泌乳效率?牛奶生产需要能量。最大化能量利用需要氨基酸支持。氨基酸具有基础的生理功能,如酶、激素、组织代谢等,以及乳蛋白的合成。当供给不足时,乳产量及乳蛋白产量降低,奶牛对能量的利用效率也……40高风险漏洞!GitHubCopilot生成的代码不可靠来源:arXiv编辑:LRS【新智元导读】garbagein,garbageout耳熟能详,如果你写的开源代码被输入到了代码生成工具Copilot中,会不会影响它的生成性……俄军装备系列简介(二)水面舰艇1。2水面舰艇共有10个级别,分别是:项目11435苏联海军上将库兹涅佐夫重型载机巡洋舰(被外界称作航母,而俄军不这么叫)项目1135好奇护卫舰项目12……关于基因突变之我见这不是科学成果基因突变,他为什么要突变?肯定是它对外部刺激产生了反应,为了适应这些反应,他自身产生了适应性变异。《生命科学》还没有彻底q摸透这些变异的过程,但却看到了变异的结果。于是乎!基因……你知道蘑菇怎么炸才好吃吗?快来看一看吧,家常菜炸蘑菇俗话说民以食为天人们的日常生活都离不开美食。美食,顾名思义就是美味的食物,贵的有山珍海味,便宜的有街边小吃。其实美食是不分贵贱的,只要是自己喜欢的,都可以称之为美食。……偷偷抢跑,带你去看哪些准备刷爆朋友圈的展览最近,中国体育健儿在东京奥运会上可谓愈战愈勇,金牌数都够拼3个九宫格了广东的苏神破了亚洲百米飞人记录,值得祝贺!那今天我给大家整来一些喜闻乐见的展览,请收好!01hr儿童……对孩子的奖惩无用问题妈妈吼道:小楠,我告诉过你不要玩水,你听见了吗?老师很生气:小楠,请不要乱跳!阿姨甜脸:加油!小楠,你吃完这碗饭,阿姨买糖给你吃爸爸回来了:哎哟!小楠,我已经……印度牛粪饼一张7毛钱,还经常卖到脱销,到底用它来做什么?近段时间以来有关印度牛粪饼脱销的消息,铺天盖地而来,国人忍者恶心不禁发出灵魂拷问:还有什么是印度人不能接受的,牛粪饼都能脱销?在这里,可能很多人初始的想法就是,牛粪饼是被印度人……拒绝约炮,灵魂社交应用Soul能否破局?据外媒报道,主打陌生人社交,以次世代为目标用户的应用Soul正在计划IPO,计划融资约2亿美元,估值约10至20亿美元。Soul官方发布声明表示:Soul定位不是约会软件,而是……飞睿科技雷达感应模块,智能化人体存在感应,衣柜灯雷达传感应用伴随着5G时代的到来,人工智能与物联网的日益发展,人机互动、物物互联的智能化升级迎来爆发。处在物联网感知层的微波雷达人体传感器,对物联网智能场景的实现,无疑起到了不可或缺的重要……战略前瞻阿富汗9大参与者最大赢家将是伊朗,最大输家将是印度阿富汗局势经历了20年之后,终于发生剧变!美军大部分撤离,其他参与者开始浮出水面,一共有9个:阿富汗政府,塔利班,巴基斯坦,印度,伊朗,美国,俄罗斯,我国,土耳其。金明战……故事过去的记忆,新的开始天空非常多云:一个沉闷的,没有生命的灰色,仿佛它会随时下雨。约翰在他昏暗的房间里醒来。他穿上白衬衫、灰色西装和裤子,试图修好他长长的淡褐色头发,最后戴上黑色领带,让自己看起来尽……
同样是独立学院,有些成双一流,有些变高职创意失重沙发,黑科技改变压力缓解方式,压力山大也能满血复活赴汤蹈火的汤是什么意思(成语故事之赴汤蹈火)止痛药的副作用(长期依赖止痛药)百公里加速成绩6。94秒凌云400T即将上市黑竹沟之谜(神秘的黑竹沟)双鱼座是几月几号到几月几号(12星座日期对照表)传统节日(传统节日你都知道吗)志不同不相为谋(道不同,不相为谋)德加酒店(武汉江岸区率先拆除2万余平方违法户外广告)地铁怎么买票(地铁怎么买票进站)iphone在线(QQ取消iPhone在线功能)

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找