当前位置: 首页 > 编程日记 > 正文

GitHub 的 AI 编程工具漏洞高达 40% ,再次陷入争议……

整理 | 禾木木

出品 | AI科技大本营(ID:rgznai100)

在近日发表的一篇论文中,研究人员对 GitHub Copilot 人工智能编程辅助工具进行了深入调查。结果发现,仍处于测试预览阶段的 Copilot 具有高达 40% 的错误代码率,意味着开发者必须在使用时对其保持清醒的认知。此外在多场景测试项目中,约 40% 都被发现包含了安全漏洞。

AI 编程神器 GitHub Copilot

此前,GitHub 和 OpenAI 推出一种新人工智能自动编程工具 Copilot ,能自动生成代码,供开发者参考使用。

官方宣传语为“你的 AI 结对编程助手”。

什么是结对编程呢?

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。

在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。

那么AI结对编程就是人机结对编程的升级版,具体来说 GitHub Copilot 由 OpenAI Codex 提供支持,可以从开发者已经编写的代码和注释中提取上下文,试图理解开发者意图,生成需要添加的一行、多行代码或整个函数,当程序员接受或拒绝建议时,模型就会学习越来越适应和匹配开发者的编程风格。

这使得程序员无需在写代码时去查阅大量文档或搜索相关示例,更加聚焦于开发工作本身。

正如 OpenAI 员工 Harri Edwards 所言:“用一种不熟悉的语言编写代码,用谷歌搜索所有东西,就像用一本短语手册去浏览一个外国国家。而使用 GitHub Copilot ,好比雇佣一名翻译。”

GitHub 首席执行官在 6 月 29 日的一篇博客文章中称:

OpenAI Codex 对人们如何使用代码有着广泛的了解,且在代码生成方面较 GPT-3 强大得多,部分原因是其在包含大量公共源码的数据集上展开了训练。

GitHub Copilot 适用于多种语言框架,但现阶段的技术预览版本更侧重于 Python、JavaScript、TypeScript、Ruby 和 Go 语言。

然而 Copilot 很快引发了多方争议,尤其涉及代码质量、法律与道德考量、替换人类开发者的可能性、以及引入安全漏洞的可能性。

GitHub Copilot 的代码质量如何呢?

近日,康奈尔大学的研究人员公布了一项数据,为了对 Copilot 的实际价值做出量化,他们为 GitHubCopilot 生成了 89 个不同的场景,生成了 1692 个程序。其中,大约 40% 的程序存在安全漏洞。

具体说来是,这项研究从三个维度展开了考量,分别是缺陷的多样性、prompt 的多样性、以及领域的多样性。

总体而言,头部 39.33% 和总体 40.48% 的项目易受攻击。从安全角度来看,Copilot 在测试场景中的表现也有好有坏。

对于新手来说,Copilot 借鉴的高质量代码还是相当值得推荐的。但若开源存储库中的某些错误相当明显,Copilot 也会更加频繁地重现。

研究人员表示,由于 Copilot 是利用 GitHub 上提供的开源代码进行训练的,因此可以推断,代码安全质量取决于 GitHub 社区的开源代码质量。

在 GitHub Copilot 推出后,有关于它的负面消息这并不是第一次。

就在其发布不到一周的时间里,GitHub Copilot 就被推上了侵权的风口浪尖,引发了前所未有的争议。

原因是有位程序员尝试了一下平方根倒数速算法(Fast Inverse Square Root),结果只是打出来这四个关键词。

floatQ_rsqrt( float number )
{
long i;
float x2, y;
constfloat threehalfs = 1.5F;x2 = number * 0.5F;y  = number;i  = * ( long * ) &y;                       // evil floating point bit level hackingi  = 0x5f3759df - ( i >> 1 );               // what the fuck? y  = * ( float * ) &i;y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration
//    y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed
return y;
}

GitHub Copilot 就逐行“完美复刻”了当年那段神奇的算法,甚至连当时的原版注释都被保留下来。

甚至GitHub Copilot连当年那句“what the fuck”的注释也用上了。

这种现象引起了大量开发者的不满,这不禁让人细思极恐:难道这不侵犯版权吗?

结 语

关于 GitHub Copilot 代码的事情,在 Hacker News 论坛上引起热议。

一家科技公司的产品安全负责人明确表示:禁止员工使用GitHub Copilot。

不过,也有程序员表示,我用 AI 写的程序关我什么事,有责任那也是 GitHub 母公司微软的。

尽管 AI 编程有很多争议,但脚步从未停止。今年八月,OpenAI 宣布开发一种将自然语言转换为编程代码的人工智能系统 —— Codex。

Codex 是建立在 Copilot 之上,Codex 通过接收用英语编写的句子并将它们翻译成可运行的代码,换句话说,它是可以将自然语言转换为代码的 AI 系统,这意味着 AI 编程的概念又往前进了一步。

对此,OpenAI 称 Codex 让计算机能够更好地理解人们的意图,从而让每个人都可利用计算机来实现更多目的。

那么,AI 写代码究竟可行不可行呢?

参考链接:

https://news.ycombinator.com/item?id=27710287

https://github.com/id-Software/Quake

https://arxiv.org/abs/2108.09293

https://www.techradar.com/news/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims

相关文章:

centos中mysql重置密码

1 . 用空密码方式使用root用户登录 MySQL; mysql -u root 2. 修改root用户的密码; mysql> update mysql.user set passwordPASSWORD(’新密码’) where User’root’; mysql> flush privileges; mysql> quit 3. 重新启动MySQL&#xff…

Centos 内存占满 释放内存

2019独角兽企业重金招聘Python工程师标准>>> 一台服务器,今天用 free -m 查看,发现内存跑满了。 再 top,然后按下shiftm,也就是按内存占用百分比排序,发现排在第一的进程,才占用0.9%&#xff0c…

Android开发实践:为什么要继承onMeasure()

首先,我们写一个自定义View,直接调用系统默认的onMeasure函数,看看会是怎样的现象: 12345678910111213141516171819202122package com.titcktick.customview; import android.content.Context; import android.util.AttributeSet;…

Android_CodeWiki_01

记录常用代码片,以备不时之需..wkakak,开始: 1、 精确获取屏幕尺寸(例如:3.5、4.0、5.0寸屏幕) 1 public static double getScreenPhysicalSize(Activity ctx) { 2 DisplayMetrics dm new Displ…

centos vnc配置笔记

1.首先查询是否安装VNC Serverrpm -qa |grep vnc如果有类似于:vnc-server-的值返回说明已经安装了vnc-server如果没有安装采用yum安装yum -y install vnc2.配置VNC用户如果以root登录的话,输入vncpasswd Password:Verify:设置root用户的VNC登录用户名和密…

普通大学生和大厂的距离有多长?

随着夏季的离去,金九银十招聘季已经悄然而至,现在正处于大厂招聘高峰期,是找工作的好时机。对于程序员这个行业来说,进大厂意味着高工资、高福利以及巨大的晋升空间,这是普通公司无法提供的,因此&#xff0…

ovirt官方安装文档 附录F

附录F:在单独的机器上安装Websocket代理 websocket代理允许用户通过noVNC和SPICE HTML5控制台连接到虚拟机。noVNC客户端使用websocket传递VNC数据。但是,QEMU中的VNC服务器不提供websocket支持,因此必须在客户端和VNC服务器之间放置一个webs…

CentOS重启启动Apache,VNC

centos 重启 apache #service httpd restart 重启 VNC #service vncserver restart 重启mysql # /etc/init.d/mysqld start 重启nginx #/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

调侃 -- 刚入职时的单纯

借个漫画调侃下刚入职时傻傻的想法当然也不是说排斥加班,既然选择了这个行业,也做好了加班的准备还好现在的公司不怎么加班,相比某些企业简直不能算是加班对于哪些上班好几年的老员工,下班后仍能坚持在工位上做下去,我…

AI市场扩大催生多样化标注需求

爱数智慧创始人兼CEO张晴晴在服贸会论坛上做主题分享 9月3日,由中国信通院云计算与大数据研究所,亚太工程组织联合会主办的《2021中国智能产业论坛》在2021服贸会上成功举办,论坛现场,北京爱数智慧创始人兼CEO张晴晴做《多模态标…

五、DNS与bind

DNS服务可以为用户提供域名和IP之间的自动转换。通过DNS,用户只需输入机器的域名即可访问相关的服务,而无需使用那些难以记忆的IP地址。DNS帮助用户在互联网上寻找路径,在互联网上的每一个计算机都拥有一个唯一的地址,称作IP地址。…

Nutch 二次开发之parse正文内容

关于nutch的基础知识能够參考lemo的专栏 nutch支持二次开发,为了满足搜索的准确率的问题,考虑只将网页正文的内容提取出来作为索引的内容,相应的是parse_text的数据。我使用的事nutch1.4 版本号,在cygwin下运行crawl命令进行爬取。…

翼方健数曹华:构建数据和计算互联网的必由之路

智能时代,数据无疑是最活跃的生产要素,它将决定未来的生产力和生产关系。其中,共享和保护数据,促进数据流通,并最大化数据价值是业内技术发展所关注的焦点。 诞生在这一背景下的隐私计算技术正在蓬勃发展,…

vi常用命令以及 冒号输入

按i进入输入模式 输入: 按ESC结束输入 按:w保存退出 pageup上翻页 pagedown下翻页 :w保存 :q!不保存 :wq保存离开 i o a编辑模式 ESC一般模式 dd 删除光标所在整行 yy 复制光标所在整行

Zabbix(六):项目实战之--自动发现nginx调度器及后端web服务集群、自定义参数监控...

项目: 1.自动发现nginx调度器及后端apache构建的web服务集群; 2.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据; 3.使用自定义参数监控后端apache服务的相关统计数据及速率数据;(选做) 4.制定出nginx调度器及后端…

ONNX 浅析:如何加速深度学习算法工程化?

AlphaGo击败围棋世界冠军李世石以来,关于人工智能和深度学习的研究呈现井喷之势。各种新的算法和网络模型层出不穷,令人眼花缭乱。与之相随的,深度学习的训练和推理框架也在不断的推陈出新,比较著名的有:微软的CNTK、G…

如何在OS X中打印到PDF文件

如何在OS X中打印文件到PDF文件?其实不需要安装任何其他软件,OS X本身支持打印到PDF文件这个功能。具体操作详见下面文章:Want to save a document or web page as a PDF file, but you don’t own Adobe Acrobat? No problem, you can prin…

Joomla和Drupal简介

Joomla!是一套在国外相当知名的内容管理系统。Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统,可以在Linux、 Windows、MacOSX等各种不同的平台上执行。目前是由Open Source Matters(见扩展阅读)这个开放源码组织进行开发与支持&#…

AD RMS高可用(三)部署RMS根群集服务器

1) 在rms服务器上点击“添加角色和功能”,开始rms组件的添加 2) 选择“基于角色或基于功能安装”,点击”下一步“。 3) 选择第一台rms服务,点击”下一步“。 4) 勾选”ADRMS”角色,同时会添加iis服务。点击”下一步“。 5) 保持默…

AI 复活「她」! GPT-3 帮美国小哥复刻逝去未婚妻,但又夺走她……

整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 今年 7 月,一名33岁的美国小哥 Joshua Barbeau 在未婚妻去世后,根据她在 Facebook 和 twitter 上的文本在另一名开发人员的帮助下成功在 GPT-3 上微调,能够复刻出未…

centOS怎样强制卸载PHP以及自定义安装PHP

这个是原创的,当然也是在前人的基础上,自己留个拷贝,其他人也不用再摸索了。 转载请保留版权信息谢谢:http://blog.csdn.net/21aspnet/ 很无语,centOS居然php版本才5.1.6,很多开源的CMS无法安装。 查看ph…

深入掌握JMS(一):JMS基础

2019独角兽企业重金招聘Python工程师标准>>> 1. JMS基本概念 JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业 应用的开发。它支持两种消息通信模型:点到点(point-to-point)&a…

浏览器前进后退对下拉框数据的丢失(省市联动实现和例子)

浏览器前进后退对下拉框数据的丢失的问题,典型的为省市下拉框联动时城市数据的丢失。省市联动一般的实现为城市在省份的选择后js加载。 那么每次城市的改变只需要重新加载新的城市数据并更新下拉框即可: 下拉函数 function ReloadCities() { var $ddlCit…

Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版

最后更新时间:2012.3.21 第一步:Apache安装(已更新到2.2.22) 下载 去 http://www.apache.org 自己找新的 http://httpd.apache.org/ 国内有很多镜像点例如"人人"和"163" http://labs.renren.com/ 注意要找httpd,因为a…

首届“陇剑杯”网络安全大赛线上赛圆满结束

9月14日,集结了各行业领域3020支战队、11135名网络安全精英的首届“陇剑杯”网络安全大赛线上赛圆满结束,成功拉开将于9月25日在甘肃兰州新区举行的总决赛战幕。届时,涵盖网络配置、数据分析和漏洞修复等真实数字化业务场景的网络防御赛道和R…

与流氓软件的一次艰苦“奋战”

不知道大家有么有过这样的经历,英语不好,但有些时候找东西,还只有英文网站上有,但英文网站上下载东西,有时候不小心就会下错,稍有不慎,电脑就中标了;这不我昨天就遇到了,…

mysql5.6基于GTID主从复制设置

1.主库和从库都必须要开启binlog2.主库和从库server-id不相同3.建立主从辅助用户grant replication slave on . to rep192.168.200.% identified by oldboy;[mysqld]server-id1log-binmysql.binbinlog_formatrowgtid_modeONenforce_gtid_consistencylog_slave_updatesrelay_log…

Python 解一道江苏 小升初 数学题,如此变态,看不起来谁?

作者:小小明【江湖人称"明佬"】链接:blog.csdn.net/as604049322/article/details/118388505注明:本文经过作者小小明授权发布,可戳原文链接关注原文作者!本文简介大家好,我是黄同学????前段时…

利用负载均衡优化和加速HTTP应用

1.负载均衡技术简介 现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要。随着越来越多的企业实施数据集中,应用的扩展性、安全性和可靠性也越来越受到企业的重视。 负载均衡技术通…

查看sqlserver被锁的表以及如何解锁

查看sqlserver被锁的表以及如何解锁查看被锁表:www.2cto.com select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_typeOBJECTspid 锁表进程 tableName 被锁表名解锁&#x…