写点什么

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:324329

评论

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

云服务器Flexus X实例,Docker集成搭建Halo博客平台

轶天下事

基于 Flink 进行增量批计算的探索与实践

Apache Flink

大数据 flink 批计算

走出群山,长赛道“攀登者”vivo

脑极体

AI

【全方位解析】企业如何通过提示词工程优化AI输出,提升市场竞争力—慢慢学AI045

AI决策者洞察

#人工智能 Prompt

【干货分享】AI 开发者必学!掌握 Coze 工作流核心技能的全攻略!——慢慢学AI145

AI决策者洞察

#人工智能 Prompt

【小白也能学】从挫败到突破,5天地狱式开发,如何用 AI 和 Arduino 打造属于自己的智能桌宠?——慢慢学AI144

AI决策者洞察

#人工智能 Prompt

几分钟,即可在华为云Flexus X服务器部署安全稳定的——水果生鲜商城配送小程序

轶天下事

英伟达世界基础模型 Cosmos,教 AI 理解物理世界;阿里通义与雷鸟合作推出 AI 眼镜丨 RTE 开发者日报

声网

从零开始使用Univer Clipsheet构建自己的爬虫插件

梦数技术团队

JavaScript GitHub 前端 爬虫工具 Chrome Extension

【翻译】如何构建高效智能体(Anthropic官方指导)——慢慢学AI147

AI决策者洞察

#人工智能 Prompt

将Vue项目部署到Flexus云服务器X实例并实现公网访问

轶天下事

什么是AI Agent?——最简单的解释

TechubNews

#人工智能

AutoGen入门-让两个AI自行聊天完成任务

不在线第一只蜗牛

人工智能 AI

【场景驱动】企业的哪些重复性任务,最适合用Coze循环节点来解决?——慢慢学AI146

AI决策者洞察

#人工智能 Prompt

GSCF收购IBM Deutschland Kreditbank GmbH

财见

构建企业级文件管理系统,轻松搭建Seafile社区版云存储解决方案.

轶天下事

京东商品详情API接口指南(Python篇)

tbapi

京东API接口 京东商品详情接口

分享一次面试经历

王中阳Go

面试

部署服务器管理软件宝塔面板

轶天下事

RabbitMQ 可观测性最佳实践

观测云

RabbitMQ

《CPython Internals》阅读笔记:p43-p60

codists

CPython Internals

华为云Flexus云服务器X实例 基于CentOS系统镜像快速部署Laravel开源论坛

轶天下事

哈马德国际机场报告2024年创纪录

财见

华为云Flexus云服务器X实例之openEuler系统下部署k8s管理面板KubePi

轶天下事

解锁企业级邮件服务,在华为云FlexusX上部署Mailcow开源方案

轶天下事

年末福利:距离 KaiwuDB 官方认证,仅差一步之遥!

KaiwuDB

数据库认证

云服务器Flexus X实例评测体验之搭建MySQL数据库

轶天下事

华为云Flexus云服务器X实例的快速入门与配置指南

轶天下事

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