前段时间,GitHub和 OpenAI发布了一个名为Copilot的新AI工具的技术预览版,这个工具位于Visual Studio Code编辑器中并自动完成代码片断。据消息称,它最适合Python、JavaScript、TypeScript、Ruby和Go。但同时须要注意的是,任何生成的代码都应进行缺陷和漏洞测试。html
帮助开发人员根据语义提示快速建立代码块的AI工具备望显著缩短编程时间,但同时也警告你们要注意错误及问题,被引用的代码可能存在缺陷,包含攻击性语言并可能存在数据安全问题。git
这个被称为Copilot的AI工具通过GitHub开发服务项目的数十亿行代码训练,能够根据注释、文档字符串、函数名和开发者输入的任何代码来预测函数的意图,Copilot将自动完成整个代码块。github
GitHub在其Copilot网站上表示:世界上有不少公共代码的编码模式、漏洞、引用过期的API或习语都不安全。当GitHub Copilot基于这些数据合成代码建议时,它也能够综合包含这些不良模式的代码。算法
GitHub做为世界上最大的代码托管平台,一方面方便了开发人员及时发现优质资源,另外一方面也为犯罪分子提供机会。所以不管是Copilot引用的代码,仍是在平常工做中,建议用到开源或第三方代码及组件时,要及时进行代码安全检测,避免在无心中引入漏洞或其余安全风险。编程
Copilot基于OpenAI Codex,这是一种新的生成式学习系统,已针对英语以及来自GitHub等公共存储的源代码进行了培训。输入注释、函数名称和变量将会让Copilot自动完成最有可能须要的函数体,但系统也会提供其余可能的代码块。安全
在使用Python函数的测试中,Copilot在43%的状况下猜对了内容,在57%的状况下,前10个结果中存在正确的代码块。这项服务旨在证实及其代理能够充当编程团队的另外一半,并显著加快开发速度。markdown
基于人工智能(AI)和机器学习(ML)的技术在必定程度上或许能为开发人员减小系统漏洞,同时帮助安全分析人员在分类警报和更快地处理修复问题事件上带来必定贡献,然而,早期的机器学习(ML)系统每每容易出现错误并遭到对抗性攻击。网络
例如,2016年,微软在Twitter上发布了一款名为“Tay”的聊天机器人。机器学习(ML)系统试图与任何在线发送消息的人对话,并从这些对话中学习。然而,一场对Tay的协同攻击致使聊天机器人在不到24小时里被人类完全“教坏”,成为一个飙脏话的种族主义者,微软不得不将其下线。app
这个例子告诉你们,若是使用来自不信任的Internet的输入来训练机器学习(ML)算法可能会致使意外结果。GitHub也称,Copilot仍处于早期阶段,安全性将会是将来的重点。机器学习
GitHub在回答采访时表示:目前还处于早期阶段,如今正努力将GitHub本身的安全工具包括在内,并将不安全或低质量的代码从训练集中排除,同时还有一些其余机制,将来还会和你们分享更多。
GitHub Copilot试图理解使用者的意图,并尽量生成最好的代码,但它建议的代码可能并不老是有效,甚至没有意义。Copilot建议的代码一样须要像其余代码同样进行仔细的静态代码安全检测审查。
人工智能领域在这几年飞速发展,2019年,专一于人工智能安全并在线发表的研究论文数量从3年前的56篇跃升至1500多篇。随着相关领域的产品不断推出,相似于Copilot这样的系统极易成为网络攻击者的目标。2020年11月,MITRE与微软和其余科技公司合做,建立了一个针对AI/ML系统的潜在对抗攻击词典,并给出大量真实攻击的例子。
此外,不安全的代码并非惟一让人担忧的地方,在GitHub站点上无心中发布的我的数据可能会包含在代码输出当中,尽管在系统测试中发现极少的这种状况。同时Copilot只是一种工具,并非良好编码习惯的替代品。
在平常工做中养成良好的编码习惯能够减小在软件开发中留下的隐患,避免资源浪费,下降软件维护成本,让整个软件系统更具生命力。
参读连接: