写点什么

GitHub Copilot 四成代码有漏洞,AI 生成代码你还敢用?

  • 2021-09-02
  • 本文字数:1810 字

    阅读完需:约 6 分钟

GitHub Copilot四成代码有漏洞,AI生成代码你还敢用?

日前,研究人员发现,GitHub Copilot 工具提供的代码建议中有接近 40% 存在 bug。为了对 Copilot 的实际价值做出量化,研究人员创建了 89 个测试场景以考查其代码建议质量,编写出了 1600 多个程序。经过全面审查,研究人员发现其中近四成存在安全漏洞。

 

研究人员指出,造成这种问题的主要原因有两个:

 

1、GitHub Copilot 参考的开源代码良莠不齐。GitHub 的代码量虽然庞大,但大部分都是未经审查的,源代码就有问题,GitHub Copilot 生成的代码也会出现问题;

 

2、GitHub Copilot 分不清新代码和旧代码。我们常常提起“最佳实践”,但曾经的“最佳实践”,极有可能在几年后变成反面典型。GitHub Copilot 目前还分不清这种区别,照单全收,自然有问题。

AI 编程神器 GitHub Copilot

 

作为一款 AI 结对编程工具,GitHub Copilot 的主要定位是提供代码补全与建议功能。它是 Visual Studio Code 的一个插件,可根据当前文件的内容和当前光标位置为你自动生成代码。

 

首先我们要理解什么是 AI 结对编程

 

结对编程用来代指两个程序员在一个计算机上共同工作。通常来说,会有一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,而审查代码的人称作观察员。

 

那么 AI 结对编程,可以简单理解为人机结对编程的升级版。具体来说 GitHub Copilot 由 OpenAI Codex 提供支持,可从代码中提取上下文,并立即对单行代码甚至整个函数给出建议。而 OpenAI Codex 接受过公开源代码和自然语言的培训,能理解编程语言和人类语言。在工作时,GitHub Copilot 编辑器的扩展插件将程序员的注释和代码发送到 GitHub Copilot 服务,然后该服务使用 OpenAI Codex 来生成对代码的建议。

跌落神坛只用了不到一周

 

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

 

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

 

原因是有位程序员尝试了一下平方根倒数速算法(Fast Inverse Square Root),结果只是打出来这四个关键词,GitHub Copilot 就逐行“完美复刻”了当年那段神奇的算法,甚至连当时的原版注释都被保留下来。

 

这种现象引起了大量开发者的不满,他们认为,GitHub Copilot 宣称的基于公开代码训练其实是在未遵循开源许可证的情况下,肆意“抄袭”开源代码,事情愈演愈烈,甚至个别比较激进的人为了抗议 GitHub 未经授权和许可便使用受版权保护的源代码作为 GitHub Copilot 的训练数据,宣布弃用 GitHub。

在争议中前行的 AI 编程

 

尽管 AI 编程有诸多争议,但它的脚步仍未停止。当人们开始关注 GitHub Copilot 背后的技术支撑 OpenAI Codex 后,今年八月,OpenAI宣布开发一种将自然语言转换为编程代码的人工智能系统——Codex。

 

Codex 更像是 OpenAI 的下一步产品。它建立在 Copilot 之上,前文说到 Copilot 是一种与 Microsoft 的 GitHub 代码存储库一起使用的工具,使用它可有助于完成代码行。但 Codex 通过接受用英语编写的句子并将它们翻译成可运行的代码,换句话说,它是可以将自然语言转换为代码的 AI 系统,这意味着 AI 编程的概念又往前进了一步。

 

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

 

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

 

虽然对于开发者们来说,重复性的任务占据了软件开发的大部分时间,并且很容易出错,研究人工智来改进软件开发的确令人兴奋,但是我们也不难从 GitHub Copilot 身上看到,就目前来看,这个工具仍旧不建议大家使用。

 

第一,GitHub Copilot 既然可以逐行“完美复刻”平方根倒数速算法,那么我们又能如何判别它给我们的代码一定是没有受版权保护的呢?这种可能性,同样容易让我们背上“侵权”的法律风险。

 

第二,就连 GitHub 自己都表示 GitHub Copilot 建议的代码并不完美,有时候它提供的代码甚至毫无意义。因此,对于 GitHub Copilot 建议的代码来说,我们仍要小心其编码错误,还需要付出精力去审查,才能得到正确有效的代码。

 

因此总的来说,原则上,让 AI 学会写程序的确能为软件工程带来一次巨大的变革,但是就目前来看,现有的技术水平远远达不到预期。当前的 GitHub Copilot 已经是人工智能领域的一项重大的突破,但同时也存在诸多障碍,这一点还需要引起我们的注意。

 

参考链接:https://www.solidot.org/story?sid=68736

 

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

2021-09-02 11:323922

评论

发布
暂无评论
发现更多内容

靶向蛋白质组技术研发进入快车道,北鲲云超算为技术顺利推进提供有力支撑

北鲲云

细节炸裂!阿里P8高管总结出这份1500页的Java编程思想(第六版)

Java~~~

Java 编程 架构 面试 网络

GitHub上这份阿里的Java高并发核心手册,即使再过20年依然“NB”

Java~~~

Java 架构 面试 分布式 高并发

通过wireshark体验IP层分包

她的男人是程序员

在PyQt中构建 Python 菜单栏、菜单和工具栏

华为云开发者联盟

Python

逮虾户!清华架构师吐血整理出这份多线程并发指南,带你弯道超车

Java~~~

Java 架构 面试 分布式 多线程

「iOS独立开发」基于iCloud构建用户体系

LabLawliet

ios 8月日更 独立开发

华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快?

华为云数据库小助手

GaussDB 华为云数据库 GaussDB(for MySQL)

不可错过的mysql,redis,nginx视频讲解

hanaper

基于语音情感识别的应用和挑战,详解华为云的语音情感识别方案

华为云开发者联盟

学习 语音 情感识别 跨模态知识迁移 跨模态

面试过程中,遇到刁钻问题大家是怎么处理的?

hanaper

fil矿机挖矿收益怎么计算?fil矿机挖矿效率怎么提升?

fil矿机挖矿收益怎么计算 fil矿机挖矿效率怎么提升

ipfs是什么项目是国家许可的吗?ipfs国家认可吗?

IPFS国家认可吗 ipfs是什么项目 ipfs是国家许可的吗

高薪offer有什么秘籍,不妨来此观看

hanaper

量化机器人软件开发|自动交易机器人

量化系统19942438797

机器人 量化交易

模块六作业:拆分电商系统为微服务

Felix

少侠留步!赠你一份阿里内部广为流传的23种设计模式核心笔记

Java~~~

Java 架构 面试 分布式 架构师

在阿里离职后,从内部带走的这份485页面试合集,在GitHub上火了

Java~~~

Java 架构 面试 架构师

全网震动!阿里员工人手一份却禁止外传的P5-P9Java进阶学习路线

Java~~~

Java 架构 面试 分布式 高并发

如何使用TCP/IP开发网络程序

华为云开发者联盟

Java TCP 网络协议 通信 客户端

阿里的新“宠儿”!终于有人总结出了Spring源码从初级到高级手册

Java~~~

Java spring 架构 面试 Spring Cloud

Linux如何进行GPIO读写操作的?

华为云开发者联盟

Linux value GPIO GPIO开发 sysfs

阿里的新“宠儿”!终于有人总结出了Spring源码从初级到高级手册

Java架构追梦

Java spring 阿里巴巴 架构 面试

Java全家桶的这些知识,不用学了

Java 架构 后端 计算机

Github星标百万!终于有人将Spring技术精髓收录成册

Java 编程 架构 面试 架构师

Filecoin大涨:一文帮你了解filecoin挖矿!

区块链 分布式存储 IPFS filecoin挖矿 filecoin矿机

醍醐灌顶Nginx 原理和架构

hanaper

Alibaba内网“疯狂”传阅的P8开源出的SpringBoot入门到进阶小册

Java~~~

Java spring 架构 面试 Spring Boot

铁山靠!阿里P9架构师写的这份JDK源码笔记,竟直接带火了GitHub

Java~~~

Java 架构 jdk 面试 架构师

罗马道ROW质押挖矿系统开发技术搭建

薇電13242772558

深入了解RocketMQ之Broker

邱学喆

broker 执行器 ConfigManager 处理器

GitHub Copilot四成代码有漏洞,AI生成代码你还敢用?_AI&大模型_闫园园_InfoQ精选文章