写点什么

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

评论

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

智慧环保系统(源码+文档+讲解+演示)

深圳亥时科技

“念念不忘,必有回响” 与 “着力即差”

酱紫的小白兔

扫得远更扫得准,鸿蒙扫一扫体验再提升

HarmonyOS SDK

harmoyos

【KWDB 创作者计划】香橙派Ai Pro安装部署KWDB数据库踩坑经验

KaiwuDB

一行代码性能翻倍?Rust开发者不可不知的“内存黑科技”!

Yeauty

rust malloc Wasm memory jemalloc

Go 1.23实战升级,你的Web开发加速器来了!(附完整B2C电商源码)

博文视点Broadview

用 Python 与 KWDB 打造智能自动售卖机:从搭建到实践

KaiwuDB

AI 英语写作 App 的上线

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语写作

一文读懂,Abaqus生成文件后缀含义

思茂信息

abaqus abaqus软件 有限元分析 有限元仿真 有限元

黑龙江等保三级认证

等保测评

AI 英语写作 App 的开发

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语写作

KWDB时序数据库在工业级机器手臂生产调度中的落地实践案例,加速时序数据高效存储与检索

KaiwuDB

场景案例 - KWDB分布式多模数据库在净水机物联网IoT方案落地最佳实践:GoLang时序IoT数据 + 香橙派Orange Pi AI Pro 开发板场景案例测试

KaiwuDB

KWDB语法添加指南

KaiwuDB

啥时候上RAG?啥时候上微调?丨实战笔记

阿星AI工作室

AI 产品经理 rag 微调

用systemd管理GreatSQL服务详解

GreatSQL

AI 英语写作App的技术难点

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语写作

行业洞见 | 数据市场发展路径和形态

数据堂

人工智能 数据标注 大模型 数据市场 数据生产

华为OceanProtect跻身Gartner®备份与数据保护平台魔力象限"挑战者"

财见

Academic Pages - 学术个人网站模板

qife122

Jekyll 学术网站

大数据-28 ZooKeeper集群 ZNode 数据结构与监听机制 Watcher机制

武子康

Java 大数据 zookeeper 分布式 注册中心

GenDev 智能开发:Amazon Q Developer CLI 赋能 Jenkins 实现智能代码审核

亚马逊云科技 (Amazon Web Services)

十年“画饼”终兑现,AI出行要变天?|小奇说

奇点云

自动驾驶 AI 特斯拉 Robotaxi

DistillQwen-ThoughtY:通过变长思维链蒸馏,全面提升模型推理能力!

阿里云大数据AI技术

人工智能 数据分析 数据处理 模型应用 #大数据

【7 月 5 日北京】还有 4 天见面,为你整理大会现场还需要知道的事!

Apache IoTDB

【HarmonyOS】鸿蒙使用仓颉编程入门

GeorgeGcs

我对 AI 写作的一些思考:Writing in the Age of LLMs

Baihai IDP

人工智能 AI Baihai IDP AI 写作

如何评估开源管理后台的可扩展性和定制化能力?6 大关键评估维度

NocoBase

开源 开发工具 定制化 管理后台 扩展性

财会创新智启未来,2025年ACCA华南区年度峰会成功举办

财见

AFNetworking - 强大的iOS网络请求库

qife122

ios objective-c

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