开源软件漏洞频出,所谓的 Linus's Law 是否已过时?

王练
 王练
发布于 2018年07月13日
收藏 6

Linus's Law,是1999年 Eric Steven Raymond 在他出版的讨论软件工程方法的著名文集《大教堂和市集》中描述的一个观点:

given enough eyeballs, all bugs are shallow。只要有足够多的眼睛,就可让所有问题浮现。

更正式地说是:

只要有足够的单元测试员及共同开发者,所有问题都会在很短时间内被发现,而且能够很容易被解决。

Eric Raymond 以 Linux 之父 Linus Torvalds 的名字来命名该观点,因此被称为“林纳斯定律”,之后被广泛用于解释为什么说开源软件具备更好的安全性。但在过去几年,大量开源软件和项目被曝出存在严重安全漏洞,这是否意味着 Linus's Law 已过时?

VMware 副总裁兼首席开源官 Dirk Hohndel 在接受外媒采访时表示,Linus' Law 仍然有效,但有更大的软件开发问题正在影响开源以及闭源代码的安全性。

“我认为,不管是在开源还是闭源开发模式中,安全始终是一项挑战”,Hohndel 表示开发人员通常会受到创新的驱动,致力去寻找如何使工作成功的方法,而忽略安全性。在他看来,安全不应该分为开源与闭源,而是应该作为一个行业问题去解决。

对此,你怎么看?对于开源软件的安全问题,有何见解?欢迎评论。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:开源软件漏洞频出,所谓的 Linus's Law 是否已过时?
加载中

精彩评论

dfsr
dfsr
闭源项目漏洞少吗?你不知道而已。
冰鸟
冰鸟
其实主要问题还是在于业界的浮躁。
ExtremeTalk
ExtremeTalk
说的好像Windows补丁很少似的
clouddyy
clouddyy
仍然可行!
oreak
oreak
现在这么浮躁,谁关心你的代码质量, 不说了,赶快上线

最新评论(26

kernel64
kernel64
系统级软件才有这个问题,大多数软件生命周期都很短,bug还没来得及被人发现就过时了
BaiYang
BaiYang

引用来自“BaiYang”的评论

除了寥寥几个顶级开源项目(其实基本都是商业公司聘请全职职业程序员在贡献代码)以外,真正靠社区力量的开源项目确实问题非常多。毕竟贡献者都是业余凭兴趣,他们的正式职业可能根本不是程序员,水平难免良莠不齐。

比如最近比较有名气的几次安全事件:京东因为 Java Struts 框架漏洞导致数千万用户账号、手机、密码、信用卡信息、身份证号、住址等信息泄露;信用巨头 Equifax 因 Java Struts 漏洞泄露 1.43 亿(超过 2/3 美国成年人)的姓名、社会安全号码、信用卡号、出生日期、地址、驾照信息,以及一些争议性征信信息;以及 Yahoo 的 30 多亿用户数据泄露和 Uber 的 5700 万等等。

引用来自“无著方知尘亦珍”的评论

不知道你所谓的顶级开源项目是以什么为依据?也不知道世界上开源项目那么多所谓的寥寥几个是怎么统计的(struts2级别的?)?在开源这个以程序员为主的圈子,你所谓的正式职业不是程序员的比例有多大?就算有水平参差不齐,那些开源项目的开发者的平均水平也不是随便拉个人就能比的上的。struts2有问题就代表开源软件有问题?你所谓的有问题就是暴露出来的,暂时不暴露就算有也不是问题?说了那么多,你有想过,即使出现所谓的那么多问题,为什么那么多公司还是用开源项目?
你可能并不知道有个叫做 https://www.openhub.net/ 的网站。。。这里能回答你上述大部分问题。剩下的:为什么那么多公司还是用开源项目? 便宜呀!这是个讲究“糙快猛省”的年代,安全?who care?
科学社
科学社

引用来自“科学社”的评论

只想说点这几年从订制CDLinux的感受:
之前0.9.6用的是2.6.xx的版本,最基本的文件操作没问题,后来升级内核到3.2,驱动支持是多好多了,但在升级xfce4后各种问题出来了。
2013年初从我接手订制后把内核换成3.10,这时在3.2上的问题没有了,但又浮出来很多期它的问题。
于是2014年老赵又帮我把一大堆软件升级,内核从3.10升到了4.4,这时又引入了一些之前未出现的问题。
2017年初又升到kernel 4.8.17,好吧,之前好多问题解决了,但又引入其它新的问题。

我就想说一句:一直不停的更新,一直出各种问题,比如现在是v1.0版本,发现了10个问题,软件作者花了1年更新这10个bug,顺带加点其它新特性进去以v2.0发部,结果这新特性又引入了其它未遇到的bug,于是又是一年,不停的循环,作者很勤快,年年都更新......

一直以来我的思路是:当一种架构或框架足够成熟稳定以后,就保持和冻结这种框架,以后就往上面添瓦添砖,余下的仅做安全性修复,就如leafpad,已经没有任何bug了,现在可以用,10年后还是可以用,又比如Tex这种高质量的软件。

kernel2.6.x已经坚若磐石,该有的功能都有,各方面也得到了多年的应用证明,只需要把各种软件,驱动把模块移植过去就挺好,那么新的功能还要不要?当然要,可以以模块的方式加入或移除,先做为试验偿试,在没有得到够足的稳定性证明前就不要当做正式版发部。看看现在的开源软件,今年还装得上的软件,明年依懒改变在同一个系统上可能就装不上了,一个版本的可用周期就那么短?为啥就不多出一些10年前可以用,20年后还可以用的软件?

引用来自“zhjphp”的评论

软件发展太快了…,一个软件用20年,开发者都得下岗了吧
很多软件,功能完善到一定程度后就可以冻结,软件本身是工具,就像一把锤子,材质,形状,重量,大小,耐用度都合适了,还需要不断的在上面加耳朵刻花吗?

开源界很多人的付出并没有回报的,所以开源软件越少后期维护越是对开发者有益,人生苦短,多对家人少对电脑是好事。
zhjphp
zhjphp

引用来自“科学社”的评论

只想说点这几年从订制CDLinux的感受:
之前0.9.6用的是2.6.xx的版本,最基本的文件操作没问题,后来升级内核到3.2,驱动支持是多好多了,但在升级xfce4后各种问题出来了。
2013年初从我接手订制后把内核换成3.10,这时在3.2上的问题没有了,但又浮出来很多期它的问题。
于是2014年老赵又帮我把一大堆软件升级,内核从3.10升到了4.4,这时又引入了一些之前未出现的问题。
2017年初又升到kernel 4.8.17,好吧,之前好多问题解决了,但又引入其它新的问题。

我就想说一句:一直不停的更新,一直出各种问题,比如现在是v1.0版本,发现了10个问题,软件作者花了1年更新这10个bug,顺带加点其它新特性进去以v2.0发部,结果这新特性又引入了其它未遇到的bug,于是又是一年,不停的循环,作者很勤快,年年都更新......

一直以来我的思路是:当一种架构或框架足够成熟稳定以后,就保持和冻结这种框架,以后就往上面添瓦添砖,余下的仅做安全性修复,就如leafpad,已经没有任何bug了,现在可以用,10年后还是可以用,又比如Tex这种高质量的软件。

kernel2.6.x已经坚若磐石,该有的功能都有,各方面也得到了多年的应用证明,只需要把各种软件,驱动把模块移植过去就挺好,那么新的功能还要不要?当然要,可以以模块的方式加入或移除,先做为试验偿试,在没有得到够足的稳定性证明前就不要当做正式版发部。看看现在的开源软件,今年还装得上的软件,明年依懒改变在同一个系统上可能就装不上了,一个版本的可用周期就那么短?为啥就不多出一些10年前可以用,20年后还可以用的软件?
软件发展太快了…,一个软件用20年,开发者都得下岗了吧
科学社
科学社
只想说点这几年从订制CDLinux的感受:
之前0.9.6用的是2.6.xx的版本,最基本的文件操作没问题,后来升级内核到3.2,驱动支持是多好多了,但在升级xfce4后各种问题出来了。
2013年初从我接手订制后把内核换成3.10,这时在3.2上的问题没有了,但又浮出来很多期它的问题。
于是2014年老赵又帮我把一大堆软件升级,内核从3.10升到了4.4,这时又引入了一些之前未出现的问题。
2017年初又升到kernel 4.8.17,好吧,之前好多问题解决了,但又引入其它新的问题。

我就想说一句:一直不停的更新,一直出各种问题,比如现在是v1.0版本,发现了10个问题,软件作者花了1年更新这10个bug,顺带加点其它新特性进去以v2.0发部,结果这新特性又引入了其它未遇到的bug,于是又是一年,不停的循环,作者很勤快,年年都更新......

一直以来我的思路是:当一种架构或框架足够成熟稳定以后,就保持和冻结这种框架,以后就往上面添瓦添砖,余下的仅做安全性修复,就如leafpad,已经没有任何bug了,现在可以用,10年后还是可以用,又比如Tex这种高质量的软件。

kernel2.6.x已经坚若磐石,该有的功能都有,各方面也得到了多年的应用证明,只需要把各种软件,驱动把模块移植过去就挺好,那么新的功能还要不要?当然要,可以以模块的方式加入或移除,先做为试验偿试,在没有得到够足的稳定性证明前就不要当做正式版发部。看看现在的开源软件,今年还装得上的软件,明年依懒改变在同一个系统上可能就装不上了,一个版本的可用周期就那么短?为啥就不多出一些10年前可以用,20年后还可以用的软件?
无著方知尘亦珍
无著方知尘亦珍

引用来自“BaiYang”的评论

除了寥寥几个顶级开源项目(其实基本都是商业公司聘请全职职业程序员在贡献代码)以外,真正靠社区力量的开源项目确实问题非常多。毕竟贡献者都是业余凭兴趣,他们的正式职业可能根本不是程序员,水平难免良莠不齐。

比如最近比较有名气的几次安全事件:京东因为 Java Struts 框架漏洞导致数千万用户账号、手机、密码、信用卡信息、身份证号、住址等信息泄露;信用巨头 Equifax 因 Java Struts 漏洞泄露 1.43 亿(超过 2/3 美国成年人)的姓名、社会安全号码、信用卡号、出生日期、地址、驾照信息,以及一些争议性征信信息;以及 Yahoo 的 30 多亿用户数据泄露和 Uber 的 5700 万等等。
不知道你所谓的顶级开源项目是以什么为依据?也不知道世界上开源项目那么多所谓的寥寥几个是怎么统计的(struts2级别的?)?在开源这个以程序员为主的圈子,你所谓的正式职业不是程序员的比例有多大?就算有水平参差不齐,那些开源项目的开发者的平均水平也不是随便拉个人就能比的上的。struts2有问题就代表开源软件有问题?你所谓的有问题就是暴露出来的,暂时不暴露就算有也不是问题?说了那么多,你有想过,即使出现所谓的那么多问题,为什么那么多公司还是用开源项目?
BaiYang
BaiYang
除了寥寥几个顶级开源项目(其实基本都是商业公司聘请全职职业程序员在贡献代码)以外,真正靠社区力量的开源项目确实问题非常多。毕竟贡献者都是业余凭兴趣,他们的正式职业可能根本不是程序员,水平难免良莠不齐。

比如最近比较有名气的几次安全事件:京东因为 Java Struts 框架漏洞导致数千万用户账号、手机、密码、信用卡信息、身份证号、住址等信息泄露;信用巨头 Equifax 因 Java Struts 漏洞泄露 1.43 亿(超过 2/3 美国成年人)的姓名、社会安全号码、信用卡号、出生日期、地址、驾照信息,以及一些争议性征信信息;以及 Yahoo 的 30 多亿用户数据泄露和 Uber 的 5700 万等等。
吾爱
吾爱
为什么总有人利用漏洞干坏事?把这类人杀光不就可以了吗?:laughing:
oreak
oreak
现在这么浮躁,谁关心你的代码质量, 不说了,赶快上线
勤用百度
写代码的有几个原因写测试,
像那种最顶级的开源羡慕,核心要不是一个团队,要么就是一个公司
返回顶部
顶部