代码别拿来就用!中国研究者14页论文预警:Copilot生成代码35.8%有漏洞

嵌入式电子 2023-10-11 07:28
整理 | 屠敏
出品 | CSDN(ID:CSDNnews)

GitHub Copilot 作为基于大模型语言的代码自动生成工具,自推出以来,受到了无数程序员的欢迎,其纷纷表示,终于有了不用加班的代码神器!

根据 CSDN 最新发起的《2023 AI 开发者生态调研问卷》中期收集的数据显示,已有 90% 的受访者表示在生产、测试、娱乐等不同场景使用了代码生成工具,其中 35% 的受访者称每天都在使用。

然而,需要注意的是,这些代码工具在提升工作效率之余,你是否想过,它带来的是福还是祸?生成的代码在「拿来即用」的基础上,真的安全吗?

近日,为了研究 Copilot 生成代码的安全性,来自武汉大学、华中师范大学、新西兰梅西大学、皇家墨尔本理工大学的六位高校研究员进行了一项关于 GitHub 上 Copilot 生成代码安全漏洞的实证研究,并发表了一篇主题为《Security Weaknesses of Copilot Generated Code in GitHub》的学术论文,最新揭晓了未来“动嘴即可完成编码”的 AI 编程神器的安全性。

论文地址:https://browse.arxiv.org/pdf/2310.02059.pdf

样本:生产环境中 435 段代码、覆盖 6 种主流编程语言

在实验过程中,研究人员从 GitHub 的公开项目中选取了 435 段由 GitHub Copilot 生成的代码片段,涵盖了 Python、JavaScript、Java、C++、Go 和 C# 多种主流编程语言。

与此同时,其采用了支持多种语言(包括 Java、JavaScript、C++、C# 和 Python)的开源静态分析工具 CodeQL,对代码片段进行安全扫描和分析,并使用常见漏洞枚举(CWE)分类代码段中的安全漏洞。

进而,研究人员基于下列研究流程,从三个维度提出了需要研究、验证的问题。

RQ1:GitHub 项目中的 Copilot 生成代码安全吗?

提出此问题的理由:Copilot 可能会生成包含安全漏洞的代码建议,而开发人员可能会接受这些建议,从而可能使程序容易受到攻击。RQ1 的答案有助于理解开发人员在生产中使用 Copilot 时遇到安全漏洞的频率。

RQ2:Copilot 生成的代码段中存在哪些安全漏洞?

提出此问题的理由:Copilot 生成的代码可能包含安全漏洞,开发人员在接受 Copilot 生成的代码之前,应进行严格的安全审查。正如 GitHub Copilot 的文档所明确的“Copilot 的用户有责任确保其代码的安全性和质量”。RQ2 的答案可以帮助开发人员更好地了解 Copilot 生成代码中的可能安全漏洞,从而可以更有效地防止和修复这些漏洞。

RQ3:有多少安全漏洞属于 MITRE CWE Top-25?

提出此问题的理由:该列表包含 25 个最危险的安全漏洞。RQ3 的答案可以帮助开发人员了解 Copilot 生成的代码是否包含被广泛认可的安全漏洞类型以及 Copilot 处理这些最常见漏洞的能力。

第一步:识别 GitHub 上「真」AI 生成的代码

之所以想要以 GitHub 作为回答研究问题的主要数据源,在研究人员看来,GitHub 包含了数百万公开代码库,可以访问大量代码资源,使其可以在研究中覆盖多种编程语言和项目类型。

然而,想要直接获取到 GitHub 中由 Copilot 生成的代码实则并不容易,因为即使有很多工具辅助,也难辨代码是出自 AI 还是人类工程师之手。

面对这种窘境,6 位研究人员选择通过搜索存储库描述和代码中提供的注释来识别许多代码段,譬如以“by GitHub Copilot”、“use GitHub Copilot”和“with GitHub Copilot”等关键词来搜索,最终得到了如下结果:

继而又从代码标签获得的不同语言类型的搜索结果数量:

接下来,进入过滤环节。在此,研究人员在论文中指出其主要遵循了三条规则:

1. 对于存储库标签下的搜索结果,在研究人员根据项目描述或相关自述文件中的声明,确定哪些是完全由 Copilot 生成的项目。进而,其保留了 Python、JavaScript、Java、C++、C# 和 Go 等 Copilot 支持的主要语言的代码文件。

2. 对于代码标签下的搜索结果,其保留显示代码由 Copilot 生成的文件注释。

3. 此次研究对象主要为实际项目中使用的代码片段,为此,会排除如 LeetCode 平台上用于解决简单算法问题的代码文件。

在完成试点数据标注后,论文的第一作者检查了其余搜索结果,并获得了总共 465 个代码片段。删除重复结果后,最后获得了 435 个不同的代码片段。其中 249 个来自存储库标签,186 个来自代码标签,详细如下所述:

第二步:数据分析

在测试环节中,研究人员为了提高结果的覆盖面和准确性,对每个代码段使用两种静态分析工具进行安全检查(即 CodeQL 加上特定语言的专用工具)。

在本研究中,研究人员首先使用 CodeQL 分析数据集中的代码。CodeQL 标准查询包中的默认查询套件为 codeql-suites /-code-scanning.qls。每个包的 codeql-suite 目录中都包含几个有用的查询套件。

同时,其使用了与安全弱点相关的 -security-and-quality.qls 测试套件扫描代码段。这些测试套件可以检查多个安全属性,涵盖许多CWE。例如:Python 测试套件提供了 168 项安全检查;JavaScript 测试套件提供了 203 项安全检查;C++ 测试套件提供了 163 项安全检查。

除此之外,研究员为每个编程语言选择了其他流行的静态安全分析工具对文件进行扫描。譬如,Python 使用 Bandit、JavaScript 使用 ESLint、C++ 使用 Cppcheck、Java 使用 Findbugs、C# 使用 Roslyn、Go 使用 Gosec。如果无法直接从扫描结果中获取与安全问题相关的 CWE ID,研究人员还会手动映射扫描结果提供的安全属性到相应的 CWE。

35.8% 的代码段有安全漏洞、C++ 代码漏洞最多、覆盖 42 种 CWE 类型

经过分析,研究人员基于上述提出的三个问题,得到了最终结论。

RQ1:GitHub 项目中的 Copilot 生成代码安全吗?

在 435 个由 Copilot 生成的代码段中,有 35.8% 包含安全漏洞,不管使用哪种编程语言,都会产生安全问题。

Python 和 JavaScript 代码中安全漏洞的比例略高,这些是开发者最常使用 Copilot 的语言。在收集的 251 个 Python 代码段中,有 39.4% 存在安全风险。在 79 个 JavaScript 代码段中,有 27.8% 存在安全风险。在所有编程语言中,C++ 代码段中安全漏洞的比例最高,达到 46.1%。Go 的安全风险比例也相对较高,为 45.0%。相比之下,C# 和 Java 代码中安全问题文件的比例较低,分别为 25% 和 23.2%。

RQ2:Copilot 生成的代码段中存在哪些安全漏洞?

为了回答 RQ2,研究员处理了 RQ1 进行的扫描结果,消除了在同一代码段位置检测到的重复安全问题。最终总共在 435 个代码段中识别出 600 个安全漏洞。

这些检测到的安全漏洞类型多样,与 42 个不同的 CWE 相关,其中 CWE-78(操作系统命令注入)、CWE-330(使用不安全的随机值漏洞)和 CWE-703(对异常条件检查或处理不恰当)出现频率最高。

RQ3:有多少安全漏洞属于 MITRE CWE Top-25?

在识别的 42 个 CWE 中,有 11 个属于目前公认的 2022 年 CWE Top-25 大漏洞。

写在最后

对此,也有网友调侃,自己写 Bug 的本领可能要比 GitHub Copilot 更高一些。

当然,本研究并非旨在劝说开发者不要在日常工作中使用 AI 辅助编码工具,而是想要表明在实际开发中使用 Copilot 生成代码能提高开发效率之时,也提醒大家自行进行安全评估。

同时,在接受 Copilot 的代码建议时运行适当的安全检查,有效避免一些潜在风险,降低损失。

更多详细内容,见论文:https://browse.arxiv.org/pdf/2310.02059.pdf


关注公众号,加星标,回复1024获取学习资料,每天进步一点点。


声明:

本号原创、转载的文章、图片等版权归原作者所有,如有侵权,请联系删除。

关注、点赞、在看、转发,支持优质内容! 

评论
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 124浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 117浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 223浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 92浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 164浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 58浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 141浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 204浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 61浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 108浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 70浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦