标签 缺陷 下的文章

随着开源代码在商业和家用应用上越来越流行,基于它的漏洞的攻击也日益增多,据黑鸭子软件对收集的开源项目的数据统计,其预计今年的攻击增长 20% 。

黑鸭子软件安全战略部的副总经理 Mike Pittenger 介绍说,包含了 50% 以上的自由、开放源软件的商业软件项目占比从 2011 年的 3% 上升到今天的 33%。

他说,平均每个商业应用使用超过 100 个开源组件,而三分之二的商业应用代码带有已知漏洞。

更糟糕的是,软件的买家常常无法知道他们购买的软件中有哪些开源组件。

相关阅读: 浪漫开发:如何避免使用开源时易受攻击感

“一般来说,公司并不乐于提供这些”,他说到。他们为客户提供的组件列表常常是不完整的。“如果你未经他们同意就扫描二进制码,你很可能违反了他们的许可协议,给自己带来很多麻烦”。

一些大公司买家可能有权要求他们完整披露,并由第三方比如黑鸭子软件进行扫描验证。

完全避免开源软件并不是一个好的选择。很多开源库是事实上的工业标准,而且从头开始写同样的代码太耗费时间,延误了投放市场的时间,损害了公司的竞争力。因此,商业软件商使用开源代码的越来越多,这个趋势在加速,Pittenger 说到。

同样的逻辑适用于企业自建软件, ISACA 思维领导与研究部门总监 Ed Moyle 说。ISACA 是 IT 和 网络安全专业人员的一个全球化组织。

“也有很多社区支持活跃的项目,带来可靠的安全和功能更新”,他补充说。“在特定情况下,如果能够审计代码会带来安全的好处,当然也带来了高度定制软件的能力。按照以往经验,如果一个商业工具能够做什么事,很可能就会有开源工具提供同样的功能。”但是,“多个眼睛”来检查开源代码漏洞的方式并不总能有好的效果。

“任何人都可以审计代码,但也可能每个人都认为有人来审计,结果最终谁都没有做此事。” 来自 AlienVault 的安全顾问 Javvad Malik 说。“这是一个问题。”

结果,管理开源组件越来越棘手,而那些坏家伙们也意识到这一点。

开源代码到处都是,所以攻击者可以使用同样的利用方式寻找一大批目标。由于跟踪开源代码的困难,使用者常常不打补丁和更新,这样,黑客可以利用已知漏洞和已公布的缺陷利用例子。

物联网的兴起去年也成为了一个主要的安全问题,今年将继续是一个主要问题,专家们预测。

“智能设备和物联网中使用了许多开源软件,这正是 Mirai 僵尸网络病毒利用的漏洞,”Malik 说。(LCTT 译注:自 2016 年 9 月黑客操控感染了恶意软件 Mirai 的物联网设备发起了 DDoS 攻击,影响波及很多著名网站,并导致服务中断,影响颇深颇广。)

同时,开发者常常不检查开源代码漏洞,或者怀疑有问题但由于最后期限的压力,而直接使用了。所以,不只是未打补丁的漏洞存在着,还有新写的代码会集成进去旧的、已知的漏洞,黑鸭子软件的 Pittenger 说到。

商业软件项目中的漏洞平均存活时间为 5 年,他说到。

心血漏洞这个漏洞早在 2014 年初就在 OpenSSL 库中发现,并被广泛宣传。但去年,在测试的应用中仍有 10% 存在此漏洞。

此外,每年有 2000 到 4000 个新漏洞被发现,Pittenger 补充说。

要解决这个问题,需要软件商和顾客的切实行动,以及企业级软件开发者的安全意识——不过目前看在最终改善前,形势很可能还要恶化。

欢迎对此提出您的评论。

据 CVE Details 的数据显示,Android、Debian Linux 和 Ubuntu Linux 是 2016 年出现安全缺陷最多的三个产品。CVE Details 是一个收集和存储软件安全缺陷方面的在线数据库。

2016 年安全缺陷榜单

在这一年中, Android 被发现了最多的安全缺陷,多达 523 个,紧随其后的是 Debian Linux 的 319 个和 Ubuntu Linux 的 278 个。令人吃惊的是,曾经多次蝉联第一名“宝座”的安全缺陷大户 Adobe Flash Player 以 266 个缺陷“屈居”第四。

“冠军” Android 的安全缺陷包括了最近大家比较关注的 DoS 缺陷以及内存破坏缺陷,而且,DoS 缺陷数量从 2015 的 56 个跃升至 104 个,而内存破坏缺陷则从 46 个降至 38 个。 Android 中还有 99 个缺陷是关于信息泄露的,而在一年前才发现了 19 个;权限提升缺陷则令人吃惊的从 2015 年的 17 个剧增至 250 个。

Android 的缺陷

微软的缺陷更少一些

让我们来看看微软的产品,在该列表中,排名最高的微软产品是 Windows 10 ,有 172 个缺陷,连前十名都没进去。

如果根据厂商来比较,谷歌的产品缺陷最多,有 695 个,而 Debian 和 Canonical 以 319 和 278 分列二、三名。

厂商缺陷排行榜

上图中,虽然 Adobe 和微软的安全缺陷总数非常高,但是其实这里包含的安全缺陷很多是重复的——同一个安全缺陷出现在多个产品之中。

当然, 产品的安全缺陷数高也并不意味着该产品就比其它的产品更不安全,许多产品的安全缺陷是私下报告的,并在被公开之前就修复了,所以在大多数情况下使用这些产品是安全的。

提供 Maven 中央仓库托管服务的 Sonatype 公司说, Java 组件下载中,有 1/16 的下载组件中包含了已知的安全问题。

Sonatype 声称,开发者们每年要下载超过 310 亿个/次 Java 组件,每天也会新增超过 1 千个新组件以及超过 1 万个的组件新版本。

现在企业都采用托管式的中央组件仓库来存储他们的代码。这些代码中有一些来自私有项目,而更多的则来自于开源代码,在多数情况下,他们只是下载开源代码并导入到其项目中,而不做必要的安全审计。

Sonatype 发现现在企业中的百分之八、九十的代码都是由开源组件构成的,它们直接来自公开的代码导入。

由于这些安全缺陷都是公开的,而且 Sonatype 能够访问到其托管服务的服务器统计数据,相比其他人来说他们得到的数据会更多,因此他们警告开发者们要注意在他们的代码中使用不安全的或过期的组件所带来的风险。

这个警告对于公司来说更加严重,因为如果攻击者对采用有缺陷的组件创建的应用进行攻击,结果就可能导致更多的经济损失。

更老的组件的缺陷率高达三倍

在分析了来自几个不同行业的三千家机构的两万五千个以上的企业应用之后,Sonatype 发现平均每年每个企业都会下载大约五千个不同的组件。

组件越老,就越有可能包含安全缺陷。甚至更糟糕的是, 其中 97% 的下载的组件不能很方便的跟踪和审计。而如果公司仅仅是要修复两千个应用中的 10% 的安全漏洞,就大约需要 742 万美金的巨额投入。

这些问题说明企业需要对软件供应链进行管理,以避免将来出现的缺陷问题。花费在组件安全审计上的时间,将在该项目的以后出现安全漏洞后得到回报。

从这种托管的中央代码仓库中移除有缺陷的组件也应该成为这些项目背后的社区的最高优先级的工作。

软件供应链报告中包含了当今软件供应链的更多信息。

 title=

Coverity开启了免费开发测试服务,允许任何对开源软件质量感兴趣的人查看项目

来自美国山景城(加州)的消息:Coverity公司(新思科技公司的一个子公司)发布了2013年Coverity扫描开源软件报告。

经过Coverity扫描服务以及按照Coverity开发测试平台的商业惯例,报告中详细分析了关于7.5亿行开源软件代码的分析,这是至今报告研究的最大的样本量。

在2013年Coverity扫描报告中,他们分析了超过700个C/C++开源项目和一个匿名的企业项目的样本。另外,报告中还强调了几个流行的开源Java项目的分析结果,这些项目从2013年3月就加入了扫描服务。

Coverity扫描开源项目报告成为了一个被广泛接受的衡量开放源代码质量状态的标准。在过去8年时间里,Coverity扫描服务分析了超过1500个开源项目的数亿行代码——其中包括的C/C++项目中有NetBSD, FreeBSD,LibreOffice和Linux等,Java项目中有Apache Hadoop,HBase以及Cassandra等。

自2006年已来,扫描服务帮助开发者发现和修复了超过94,000缺陷。仅在2013年一年就修复了近50,000个缺陷——这是扫描服务的用户在一年中修复缺陷的最大数量。在这些缺陷中,其中有超过11,000的缺陷修复出现在扫描服务中的四个最大的项目:NetBSD,FreeBSD,LibreOffice和Linux。

2013年报告中重要发现包括:

C/C++项目中开源软件代码质量超过专有软件

缺陷密度(每1,000行软件代码所含的缺陷)是一个通用的测量软件质量的方法,缺陷密度1.0被认为是高质量软件的公认的行业标准。

Coverity的分析中发现,扫描服务中的开源的C/C++项目的平均缺陷密度为 0.59,而为企业项目开发的专有C/C++代码的缺陷密度为 0.72。在2013年,在所有不同大小的代码库中,扫描服务中的开源项目的代码质量超过专有项目,这进一步强调了开源社区开发测试的坚定的承诺。

Linux继续成为开源质量的基准

通过利用扫描服务,Linux将修复一个新发现的缺陷的时间从122天减少到仅6天!从2008年第一个Coverity扫描报告发布后,扫描过的Linux版本的缺陷密度一直小于1.0。在2013年,Coverity扫描了超过850万行Linux代码并发现缺陷密度为 0.61。

C/C++开发者修复了更多的高风险缺陷

Coverity分析报告发现贡献于开源Java项目的开发者修复的高风险缺陷的数量没有贡献于开源C/C++项目的开发者修复的多。

参加扫描服务的Java项目开发者只修复了13%的被指出的资源泄露,而C/C++项目开发者则修复了46%。这一方面可能是因为Java编程社区错误的安全感的原因,这种安全感是因为内建于语言的保护,比如垃圾收集。然而,垃圾收集是不可预测的,而且不能访问系统资源,所以这些项目处于危险之中。

HBase是Java项目的基准

Coverity分析了100个开源Java项目的超过800万行代码,包括流行的大数据项目Apache Hadoop 2.3 (320,000 行代码)和Apache Cassandra (345,000 行代码)。

自从在2013年8月加入扫描服务以来,Apache HBase (Hadoop的数据库)修复了超过220个缺陷,其中包括比其他参加扫描服务Java项目更高比例的资源泄露(HBase的缺陷中资源泄露占的比例为66%,而其他项目平均为13%)。

“如果说软件正在吞食世界,那么开源软件则是带头冲锋,”Coverity的产品高级总监Zack Samocha说,“我们的目标,包括Coverity扫描服务在内是帮助开源软件社区创作高质量的软件。基于这个报告的结果——以及这个日益流行的服务——使用开发测试的开源软件项目继续提升他们软件的质量,这让他们使整个行业更上一层楼。”

Coverity今天也宣布已经开放了Coverity扫描服务,允许任何对开源软件感兴趣的人查看参与项目的进展。个人现在可以成为项目观察者,这使他们可以跟踪扫描服务中相关开源软件的状态,查看高级数据包括未解决和已修复的缺陷的数目以及缺陷密度。

“我们看到了请求扫描服务的人数的指数增长,他们仅仅是要监控被发现和被修复的缺陷。在许多情况下,这些人工作于大型的企业组织,那些企业组织在商业项目中使用开源软件,”Samocha补充说。“通过对个人开放扫描服务,我们提升了查看开源项目代码质量的新的可见度,他们的软件供应链中正包含这些项目。”


via: http://www.ciol.com/ciol/features/213112/coverity-scan-report-source-software-quality-outpaces-proprietary-code/page/1

译者:linuhap 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出