开源软件现状
开源软件具有开放、共享、自由等特性,在软件开发中扮演着越来越重要的角色,也是软件供应链的重要组成部分。据Gartner调查显示,99%的组织在其IT系统中使用了开源软件。而来自Sonatype公司的一项调查则显示,在参与调查的3000家企业中,每年每家企业平均下载5000个开源软件。
然而,开源软件中存在大量的安全隐患,企业在享受开源软件带来的便利的同时,也在承担着巨大的安全风险。近年来,开源软件频繁爆出高危漏洞,例如Strusts2、Open SSL等。这些组件很多都应用于信息系统的底层,并且应用范围非常广泛,因此漏洞带来的安全危害非同一般。
美国首先认识到开源软件安全问题的重要性,早在2006年,美国国土安全部就资助Coverity公司开展“开源软件代码测试计划”,针对大量开源软件进行安全隐患的筛查和加固,截至2017年2月,累计检测各种开源软件7000多个,发现大量安全缺陷。
鉴于上述形势,360代码卫士团队基于自身技术积累和产品能力,在2015年初发起了国内的“开源项目检测计划()”,这项计划是针对开源软件的一项公益性安全检测计划,旨在让广大开发者关注和了解开源软件安全问题,提高软件安全开发意识和技能。截止2017年初,该计划已检测2228个开源项目,获得了大量的缺陷检测基础数据。
开源项目检测计划数据和实例分析
从2015年初到2017年初两年多时间中,360代码卫士团队从GitHub、Sourceforge等代码托管网站和开源社区中选取了2228个使用比较广泛的开源项目进行检测,涉及的开发语言包括C/C++/C#/Java等。检测代码总量257,835,574行,发现源代码缺陷2,626,352个,所有检测项目的总体平均缺陷密度为10.19个/千行。
针对安全缺陷检测结果,360代码卫士团队从多个视角进行了统计分析,并归纳总结出开源软件的安全现状。本次分析主要从以下3个维度对检测结果进行说明:
依据缺陷危害程度、可利用性、受关注度等因素,在所有缺陷类型中,选择10大重要缺陷进行数据统计,同时统计所有开源项目中存在这些缺陷的比例,以展示开源项目中重要缺陷的分布情况。
参考代码托管网站和开源社区的项目Fork值、下载量等指标,选取20个流行项目的检测结果进行深度分析,分析从缺陷总数、10大重要缺陷总数以及缺陷密度三个角度进行,以说明流行开源项目的源代码安全状况。
综合统计2228个被分析的开源项目,排列出缺陷总数最高的10个项目,以说明安全风险相对较高的开源项目的情况。
1、10大重要缺陷统计
在所有检出缺陷种类中,依据缺陷类型的危害程度、受关注度等因素,选择10类重要缺陷进行检测结果分析,图1是10大重要缺陷统计列表(按检出数量多少排序),图2是10大重要缺陷在2228个项目中出现的比率。
图1 10大重要缺陷统计列表
统计结果显示,在选取的10大重要缺陷中,检出数量最多的是系统信息泄露,达到18万余个。而受到开发人员普遍关注的缺陷,如SQL注入、跨站脚本也分别检出4096和9614个,这两类缺陷是web攻击中最常见的两类漏洞,可见它们依然是web应用中修复的重点。
图2 10大重要缺陷检出比例
在本次检测的2228个项目中,有高达82.99%的开源项目存在10大重要漏洞,说明这10类缺陷普遍存在,应当作为软件安全保障的重点考虑问题。
2、20个流行项目检测结果
参考代码托管网站和开源社区的项目Fork值、下载量等指标,团队选取了20个最受欢迎项目的检测结果进行了统计分析,图3是20个流行项目缺陷数量统计表,图4是20个流行项目出现10大重要缺陷数量统计表,图5是20个流行项目缺陷密度统计。
图3 20个流行项目缺陷总数
20个流行项目中,Guava项目检出的安全缺陷数量最多,Guava是Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。
图4 20个流行项目中10大重要缺陷的总数
20个流行项目中,netty项目检出10大重要缺陷的总数最多,达到384个,即该项目源代码中存在高风险缺陷的数量较多。
图5 20个流行项目缺陷密度统计
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。