新闻动态

基于代码溯源的Linux内核演进量化分析

2021-09-10 20:30

随着开源众包开发模式的普及,开源软件已成为软件供应链的重要组成部分。
Linux是当前使用广泛、影响力最大的开源软件。由于Linux内核庞大(如Linux5.13含72210个文件,30947449行代码)、迭代快、开发者众多,不同版本之间的继承度和差异迄今缺乏深入的量化统计。
本文使用“重睛鸟代码溯源及安全审查系统”,对迄今66个Linux内核三级版本进行代码继承度比对,量化Linux内核进化过程。根据我们的了解,这是业内第一次对版本间继承关系的代码级量化统计。
结合检测结果和对各版本变更记录的分析,我们认为Linux3.0(2011年)是Linux步入成熟期的拐点,而Linux4.12(2017年)是Linux趋于稳定完善的里程碑版本。

为量化不同Linux版本之间的继承程度,软件溯源分析、代码识别无疑为有效实现途径之一。软件溯源分析是通过代码指纹提取和匹配来实现代码的识别,经过对两个程序的相似性进行计算,来判断它们之间的继承关系。代码溯源检测系统的研发早起源于欧美发达国家,近几年该检测行业才在国内小成规模。国外代码溯源检测系统以美国、以色列、荷兰等为主要代表,开发的工具包括由美国著名的“Blackduck”、惠普的“HPFortify”和以色列的“Checkmarx系列”代码检测工具等。国内在该领域起步较晚,目前以“Hobot软件成分分析平台”、“重睛鸟代码溯源及安全审查系统”和“开源卫士”为主要代表。因采用的分析技术不同,各检测系统或工具在应用方向上不尽相同。



本文使用“重睛鸟代码溯源及安全审查系统”,对迄今66个Linux内核三级版本进行代码继承度比对,量化Linux内核进化过程根据我们的了解,这是业内第一次对版本间继承关系的代码级量化统计。 表1从相似代码行数占比、相似文件容量占比和相似文件数量占比三个方面,展示了版本间的继承情况。

表1:Linux版本间的继承性分析



图1:Linux5.13与Linux5.12代码比对结果展示








图2:Linux5.13与Linux5.12代码级代码溯源检测详情






图3:Linux临近版本继承性分析


由图3可知,三种相似度随时间的变化趋势接近,在绝对比例上存在少许差距。版本间相似度在发布初期上下波动幅度较大,后期随着版本的不断演进趋于稳定。其中,Linux3.0版本之前,各版本间经常出现较大的差异性,如Linux2.2.0与Linux2.1.0的相似代码行数占比只有10.57%,显示在系统功能建设方面进行了很大的改动。同样,Linux3.0与Linux2.6.0的相似代码行数占比只有7.17%,这两个间隔8年,经历39个版本迭代,在各方面都有很大提升,如 Btrfs文件系统整理、sendmmsg函数调用、支持CleanCache、支持Berkeley Packet Filter实时过滤等,在一定程度上解释了Linux2.6.0与Linux3.0之间的显著差异性。
经前期震荡,从Linux3.0版本开始,Linux内核系统趋于稳定,版本间具有很高的继承性(平均92.36%),且继承性呈缓慢上升趋势,显示出Linux内核已经迈入成熟阶段。Linus Torvalds曾指出,Linux 4.12是Linux 4.9之后重大的版本更新,其主要更新包括新增支持AMD Radeon RX Vega显卡,Nvidia GeForce GTX 1000 “Pascal”加速支持,启用BFQ和 Kyber block I / O调度器等。表1的数据印证了Linus Torvalds 的表述。Linux4.12版本对Linux4.11的继承性显著低于临近版本的继承性(相似文件占比86.25%)。Linux4.12之后,继承度普遍在平均值以上微微震荡上行。
结合检测结果和对各版本变更记录的分析,我们认为Linux3.0(2011年)是Linux步入成熟期的拐点,而Linux4.12(2017年)是Linux趋于稳定完善的里程碑版本。


“重睛鸟代码溯源及安全审查系统”简介:

“重睛鸟代码溯源及安全审查系统”是由国家超级计算无锡中心无锡江南计算技术研究所清华大学中科院计算所等单位联合研发的一款完全自主研发面向主流语言的代码溯源及安全审查大数据平台,主要功能包括:软件源代码溯源分析、自主度评估、开源漏洞检测与预警、开源许可证合规性分析。平台建设了国内最大的源代码领域的安全大数据库,覆盖500多万个开源项目、1700多亿行源代码、1500多个许可证协议、20多万条漏洞信息,构建了国内最大的代码多级特征库,以及覆盖操作系统,数据库,中间件,办公软件等基础软件常用开源组件的安全漏洞库。平台支持分析结果多层次可视化展示,可用于提高软件的可控性与安全性。“重睛鸟代码溯源及安全审查系统”的结果展示概要如图4所示:

图4:“重睛鸟代码溯源及安全审查系统”检测结果概览