基于代码克隆检测的操作系统脆弱性分析方法
2021-09-13管剑波谭郁松
计算机与生活 2021年9期
汪 哲,任 怡,周 凯,管剑波,谭郁松
国防科学技术大学 计算机学院,长沙410073
代码克隆是指将一个软件中的一段代码,直接复制或进行少量修改后,使用到其他软件中,作为后者代码的组成部分。代码克隆产生的原因有很多,主要的来源是开发人员为了降低工作量而进行的克隆,包括对已有的代码片段进行复制和修改,使用现成的开发框架设计模式等。经验研究表明,代码克隆非常普遍,现今的代码片段中有7%到24%都包含复制或经过少量修改的克隆代码[1-3]。2018 年,Blackduck公司对超过1 100个商业代码库中的匿名数据进行了开源组件的分析和审计(https://www.blackducksoftware.com/open-source-security-risk-analysis-2018),涵盖大数据、网络安全、企业软件、金融服务、医疗保健、物联网、汽车、制造业和移动应用市场等行业,审计结果显示,96%的被扫描代码中存在开源组件。在诸如通用操作系统等大型软件的代码组成中,代码复用的现象也十分明显[4]。例如,苹果公司的Mac OS 早期版本的内核即是在开源的FreeBSD 内核基础上复用、发展而来的。
代码复用在有效提高软件开发效率的同时,也带来了脆弱性的扩散。代码克隆在一定程度上有利于软件的开发过程,但是规模庞大的代码克隆将会导致软件规模的快速膨胀,增加了维护的成本,软件缺陷也因为代码克隆而广泛传播。对此,许多研究者认为,开发人员获得代码克隆检测的结果,可以更有效地进行软件维护[5-7]。
代码克隆检测作为一个重要的软件工程领域,旨在自动化地检测一个或多个代码库中功能上等效的代码块或者代码段集合。……
登录APP查看全文