摘要:在代码安全上被关注太少,漏洞没有被报告修补,FreeBSD、OpenBSD和NetBSD还能活下来吗?

在德国莱比齐的34c3网站上,IOActive的渗透测试主管Ilja von Sprundel说,UNIX的开源软件分发版(BSD)版本缺乏关注,这对他们的安全造成了伤害。

与Linux相比,被报告的BSD内核漏洞的数量很少,von Sprundel在去年夏天就开始在业余时间查看BSD源代码。“为什么每年仅有很少的BSD安全内核漏洞发布?”他想知道。是因为BSD更安全吗?还是因为没有人在看?

von Sprundel说,他很容易的就在三个BSD中找到了大约115个内核bug,其中包括FreeBSD的30个,OpenBSD的25个,NetBSD的60个。他称之为“低垂的果实”。他立即报告了所有的漏洞,但6个月后,在他再次提到,发现还有很多未被修复。

总的来说,Linux内核中的大多数安全漏洞的fix周期都很短。他们很快就被发现并修复了。在BSD方面,却不总是这样的。我发现了一堆已经存在了很长时间的bug。他们中的许多已经在代码中出现了十年或更长时间。

OpenBSD是安全的“明确赢家”

在过去的20年里,OpenBSD的重点是安全问题,von Sprundel说“到目前为止,在安全性方面,OpenBSD开发人员是最优秀。”

首先,OpenBSD有一个更小的代码库,大约有290万行代码,而FreeBSD的代码约为900万行,而NetBSD的代码为730万行。“当然,这也起到了一定的作用,” von Sprunde说。“没有代码总不会还能找到bug吧。”

他指出,这个较小的代码库部分是出于偶然,因为缺乏开发人员资源,使得OpenBSD无法实现他们想要的所有功能,但也更小了,这是为了减少攻击表面,包括移除对罕见的、不常见的、旧的设备和架构的支持。

在代码质量方面,von Sprundel还赞扬了OpenBSD代码,并且“OpenBSD中整体代码的质量就会协调很多”。

然而,他表示,OpenBSD相对缺乏人气损害了操作系统的安全性。“bug仍然很容易找到。”如果有更多的人关注OpenBSD,就会有更多的错误报告。

OpenBSD的创始人Theo De Raadt同意von Sprundel的观点,在OpenBSD上更多的关注会使操作系统更加安全。De Raadt通过电子邮件告诉CSO在线说到:“我记得读过他的第一张幻灯片,这些幻灯片主要是关于API误用的影响”。不幸的是,这是一个相对于人力而言的代码量问题。确保所有代码都是100%无bug的,并且处理所有异常情况是一个相当困难的问题。

von Sprundel还赞扬了OpenBSD对他的错误发现的回应,他说De Raadt在一周内做出了回应,并且OpenBSD在几天内修补了漏洞。

“我从一开始就与Ilja沟通,并让我们的团队致力于他的发现,”De Raadt写道。“我们在一周左右的时间内解决了这些问题,并为那些重要的项目提供了补丁。”在我的经验中,在一个志愿者驱动的软件项目中,保持积极和积极响应的唯一方法是决不推迟发布问题。必须尽快处理问题,以保持对住对它的兴趣。”

在代码质量方面,NetBSD是“明显的失败者”

NetBSD多年来一直致力于支持尽可能多的硬件。然而,有了这个目标,就需要包含大量的遗留和二进制兼容性(compat)代码的不同程度的质量,von Sprundel指出,因此“NetBSD的安全代码质量却一贯缺乏。”

NetBSD对von Sprundel的bug报告的响应既好又坏。一方面,他说,“他们几乎把所有提交的错误都解决了,几乎是一夜之间!”另一方面,这些补丁还没有在6个月后交付给用户。“除非从最近的检查代码中运行自己的构建,否则你的NetBSD机器仍然是脆弱的。”

NetBSD开发人员修正了von Sprundel的帐户,指出NetBSD 7.1.1在2017年12月22日发布,(在他的34c3演讲前一周)包含了他发现的安全问题的补丁。“他的很多发现都是在二进制兼容层中,而这些都不是导致远程漏洞的原因,”NetBSD基金会董事会成员Taylor R Campbell说。“无论如何,有人需要访问系统来运行该代码。”

von Sprundel在NetBSD中发现的大量的bug,以及该项目迟缓的响应,对NetBSD的未来提出了警告。“NetBSD实际上已经死了,”在Census从事安全工作的研究员patklos Argyroudis说,他的工作是在他的演讲中引用的。“过去有一些公司试图在商业上支持它,但我认为现在这些公司已经消失了。”

虽然NetBSD是一个志愿者驱动的开放源码项目,但是没有任何全职开发人员,但是NetBSD基金会的前成员Campbell和David Maxwell,都相信Agryroudis的悲观是没有根据的。“我们的主要目标是拥有一个拥有干净体系结构的核心系统,然后就很容易移植到新的平台上,”Maxwell说。“在历史上,我们可能会继续保持强势。”

“我们在市场营销方面也声名狼藉,”Campbell 补充道。

FreeBSD, BSD中的“技术最先进者”

长期以来,是三大BSD中最受欢迎的,并在Netflix和WhatsApp等网站上使用。“在perf测试中,FreeBSD与Linux不相上下,或者略微超过了它,”von Sprundel说。“任何可以部署Linux的地方,都可以放心地说,你可以部署FreeBSD。在很多地方他们都大量部署。

FreeBSD在大约一周的时间内对30个内核错误进行了响应,并在源代码库中修复了一些bug。然而,该软件项目只发布了少量的警告,并且“目前还不知道其他的状态”。

Argyroudis认为,开发人员的缺乏伤害了FreeBSD的安全性,不仅在于他们对bug报告的响应能力,还包括实现新的、行业标准的安全特性。“最流行的BSD,技术上最先进的,是FreeBSD,但是他们没有像Linux那样的开发者,这基本上意味着他们在安全特性方面有点落后。”

Argyroudis说,直到最近,FreeBSD才对ASLR进行了初步的支持,而且还不支持KASLR。他还质疑FreeBSD的网络堆栈是否仍然是一个杀手级功能。

“也许10年前,有这样一种观点,即FreeBSD的性能更好,它的网络栈更好,还有其他类似的东西,”Argyroudis说。我不太确定这是不是真的。我肯定对此持怀疑态度。

Maste不同意。他说:“与Linux相比,我们能够在更小的开发人员基础上做大量的工作,无论是在数量还是质量方面都是显著的。”“我们的未来会因为缺少开发者而受到阻碍,这是绝对不正确的。”

FreeBSD内核漏洞会影响OS X吗?

在Mac OS X中有很多FreeBSD代码,并且FreeBSD安全团队与苹果协调信息公开,von Sprundel说。然而,目前还不清楚这些报告的漏洞对苹果笔记本电脑的影响有多大。OS X的内核与15年前的FreeBSD有很大的不同,OS X多年来受到了安全研究人员的更多关注。

“当我向FreeBSD的用户提交这些错误时,他们问‘如果我们把这个发给苹果公司的人,你介意吗?’”。因此,苹果公司的安全团队就有这样的漏洞。我不知道其中有多少是适用于他们的。这里可能有一些错误。

苹果没有回应我们的评论请求,而Maste拒绝进行猜测,指出只有苹果公司才知道这个问题的答案。NetBSD的Maxwell很快指出,OS X包含的代码不仅来自FreeBSD,还包括NetBSD和OpenBSD。

BSD正在死亡吗?

事实证明,受欢迎程度会影响安全。更多的关注意味着bug周期的更短,更多的开发人员意味着新的安全特性会更快地带给用户。BSD已经输给了Linux。

Argyroudis认为,尽管OpenBSD在当时的流行程度远低于FreeBSD,但它可能是最有可能存活的。“我认为OpenBSD有更大的机会生存,因为它有一个更集中的用例。FreeBSD,我认为它比OpenBSD更难生存。

不过,Maste认为,衡量BSD的普及程度是很困难的。

宽松的BSD许可使得 量化BSDs的流行度 更加困难。“对于终端用户来说,诸如代码许可之类的事情可能并不重要,”NetBSD的Maxwell说,“但是对于构建嵌入式系统的人来说,对于那些正在构建产品的人来说,代码的许可是非常重要的。”

Argyroudis对BSD的未来仍持悲观态度。“我喜欢BSD代码库,”他说,“我希望能够告诉你不同的东西,比如更受欢迎的FreeBSD,以及在Linux下生存是多么容易。”但不幸的是,我认为事实并非如此。

“我认为这归结于开发商的缺乏。”


本文源自CSOonline\(^{[1]}\)\(^{[2]}\)
\(水平有限,欢迎园友留言交流\)

[转]BSD系统正在死亡?一些安全研究人员这样认为的更多相关文章

  1. 关于linux系统如何实现fork的研究(二)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 前一篇关于linux系统如何实现fork的研究(一)通过代码已经说明了从用户态怎么通过软中断实现调用系统调 ...

  2. 系统、决策、控制研究系列(SSDC)

    本类目主要介绍的书籍来自springer的系列书籍中的一本,对于该系列书籍介绍如下: “系统.决策及控制研究”(SSDC)系列涵盖了在广泛认知的系统.决策及控制的各个领域的快速.最新和高质量的最新发展 ...

  3. 关于linux系统如何实现fork的研究(二)【转】

    转自:http://www.aichengxu.com/linux/7166015.htm 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 前一篇关于li ...

  4. 直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章

    直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章_e-works数字化企业网 http://articles.e-works.net.cn/Component/Article ...

  5. IBM研究人员开发了一对低功耗,高性能的计算机视觉系统

    机器学习算法近年来有了突飞猛进的发展.例如,像Facebook这样的最先进的系统,可以在一小时内训练图像分类算法,而不会牺牲准确性.但是,许多这些系统都是在具有强大GPU的高端机器上进行培训的,随着物 ...

  6. 研究人员发现绝大部分酷派(Coolpad)手机暗藏后门(转)

    隐私问题被曝光得越来越多,随着物联网的发展,只会变得越来越严重,不过从当前看来 ,国人对隐私的重视度还远没有国外,期待加强对隐私的保护策略.   转自:http://www.freebuf.com/n ...

  7. 科学效法自然:微软研究人员测试AI控制的滑翔机

    编者按:正如一颗苹果砸出了万有引力,自然界所有存在的事物和现象都有其科学合理的一面,小小的鸟儿也能够给科学带来丰富的灵感和启示. 最近,微软研究人员从自然出发,研究鸟类能够自由停留在空中的科学原理,并 ...

  8. Cortana携手微软学术搜索,变身研究人员最佳个人助理

    编者按:在美国时间7月14日于微软总部雷蒙德召开的2014年微软教育峰会上,负责技术与研究的微软全球执行副总裁沈向洋博士在他的开幕主题演讲中正式宣布,Windows Phone 8.1系统中的虚拟个人 ...

  9. Google研究人员宣布完成全球首例SHA-1哈希碰撞!

    2004年的国际密码讨论年会(CRYPTO)尾声,我国密码学家王小云及其研究同事展示了MD5.SHA-0及其他相关杂凑函数的杂凑碰撞并给出了实例.时隔13年之后,来自Google的研究人员宣布完成第一 ...

随机推荐

  1. 解决easyUI中翻页后前面已钩选项自动变为未选择的问题

    在easyUI的datagrid中,必须在属性的第一条就要写 idField:'id' (只要创建数据表格,就必须要加idField),其中id是页面数据的主键名称. 这样设置之后,表格翻页之后,前面 ...

  2. tensorflow models api:ValueError: Tensor conversion requested dtype string for Tensor with dtype float32: 'Tensor("arg0:0", shape=(), dtype=float32, device=/device:CPU:0)'

    tensorflow models api:ValueError: Tensor conversion requested dtype string for Tensor with dtype flo ...

  3. oracl遇到的问题

    使用oracl数据库用  ALTER TABLE Students ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (sname) 添加唯一性约束,出现问题,报错为:a ...

  4. My_SQ主键,外键

    1.default ;设置默认参数,且不能更改. 2.not null  ;传参数时不能为空. 3.unique  ;在该列不能value 不能重复. 4.primary key  ;设置主键,不能含 ...

  5. java Graphics2D drawString()内容换行问题

    //字符串总宽度 private int getStringLength(Graphics g,String str) { char[] strcha=str.toCharArray(); int s ...

  6. appium 移动端自动化测试一

    最近公司决定使用appium为主体框架做一个移动端得自动化测试系统,我会陆续记录项目得进展. 1.首先是appium环境得搭建, 需要安装appium-server ,appium-desktop, ...

  7. 如何看iOS崩溃日志

    重点:Triggered by Thread这句话后边的线程号,快速定位问题出现在那个线程,是否是你的锅:Triggered by Thread所指的线程表示导致异常.崩溃的线程 下边内容转自简书 简 ...

  8. php 守护进程(Daemon)

    守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务. 很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭. 守护进程一直在后台运行,脱离终端运行的程序 独立运行的守护进 ...

  9. c# maiform父窗体改变动态的gridew 奇偶行变色的快捷方法

    无需在每个usercontrol里边单个指定控件内gridview  隔行换色.只需要在主窗体内改成统一就好了 做到这点要明白.gridcontrol 是usercontrol 的子控件 , grid ...

  10. NodeManager介绍

    原文链接: http://blog.csdn.net/zhangzhebjut/article/details/37730013 参考文档: https://blog.csdn.net/u013384 ...