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